Session 3: corrected architecture - no monolith, max decoupling
This commit is contained in:
@@ -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/` — только БД
|
||||
Reference in New Issue
Block a user