diff --git a/HISTORY/2026-07-23-session-3.md b/HISTORY/2026-07-23-session-3.md new file mode 100644 index 0000000..b1321b8 --- /dev/null +++ b/HISTORY/2026-07-23-session-3.md @@ -0,0 +1,60 @@ +# Исправление архитектуры — 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/` — только БД