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