Files
autotest/HISTORY/2026-07-23-session-3.md
T

2.8 KiB

Исправление архитектуры — 2026-07-23

tfflaskcrud — демо, не образец для app-autotest.

Новые принципы

  • Никакого монолита — максимум 50-80 строк на файл
  • Decoupling — каждый модуль делает одно дело
  • Factory patterncreate_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/ — только БД