Session 3: corrected architecture - no monolith, max decoupling

This commit is contained in:
2026-07-23 09:29:47 +04:00
parent 6e5f009b82
commit 32c57e4cd9
+60
View File
@@ -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/` — только БД