2.8 KiB
2.8 KiB
Исправление архитектуры — 2026-07-23
⛔ tfflaskcrud — демо, не образец для app-autotest.
Новые принципы
- Никакого монолита — максимум 50-80 строк на файл
- Decoupling — каждый модуль делает одно дело
- Factory pattern —
create_app() - Blueprints — разделение роутов по доменам
- Чёткая структура Python
Структура проекта
app-autotest/
├── requirements.txt
├── run.py # Точка входа (5 строк)
├── config.py # Конфигурация (переменные окружения)
└── app/
├── __init__.py # create_app() фабрика
├── api/
│ ├── __init__.py
│ └── client.py # HTTP-клиент облака Nubes
├── services/
│ ├── __init__.py
│ ├── service_discovery.py # Получение списка сервисов + параметров
│ └── test_runner.py # Запуск тестов, поллинг статуса
├── models/
│ ├── __init__.py
│ ├── db.py # Подключение к БД, get_db()
│ └── repository.py # SQL-запросы (CRUD тестов, конфигов)
├── routes/
│ ├── __init__.py
│ ├── main.py # Главная страница (blueprint)
│ ├── api_routes.py # REST API для фронта (blueprint)
│ └── config_routes.py # Конфигурация тестов (blueprint)
├── static/
│ ├── favicon.svg
│ ├── logo.svg
│ ├── style.css
│ └── app.js # Фронтенд: state → render
└── templates/
├── base.html # Базовый шаблон Nubes
├── index.html # Главная
└── components/ # Переиспользуемые компоненты
├── card.html
├── modal.html
└── table.html
Правила
- Максимум 50-80 строк на файл
- Каждый модуль — одна ответственность
- Никакой бизнес-логики в роутах — только вызов сервисов
api/— только HTTP, не знает про Flaskservices/— бизнес-логика, не знает про HTTProutes/— только маршрутизация, тонкие контроллерыmodels/— только БД