# Исправление архитектуры — 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, не знает про Flask - `services/` — бизнес-логика, не знает про HTTP - `routes/` — только маршрутизация, тонкие контроллеры - `models/` — только БД