# Runbook Этот runbook задаёт основной сценарий проверки по критериям `B1..B10` и выбранным `FX`. ## 1. Что проверяем Сквозной поток: - `decide` -> `events` -> `report`; - lifecycle/review/guardrails; - observability (`/health`, `/ready`, `/metrics`); - инженерная дисциплина (tests, lint, format); - выбранные FX: notifications, learnings, conflicts. Артефакты: - `compliance-matrix.md` - `ADR/*` - `MAP.md` - `assets/plantuml/raw/c4-context.puml` - `assets/plantuml/raw/c4-container.puml` - `assets/plantuml/raw/c4-component-critical-path.puml` ## 2. Предусловия ### 2.1 Основной сценарий (по умолчанию): Docker Compose Нужно: - Docker - Docker Compose Файлы: - `compose.yaml` - базовый стек - `compose.prod.yaml` - базовый стек + observability - Детали по compose-конфигурации: `README.md` -> `Setup with docker compose`. Порты по умолчанию (см. `.env.template`): - reverse proxy: `80` - backend direct: `14609` - static direct: `14610` ### 2.2 Дополнительный локальный сценарий (для тестов/линтинга) Нужно: - Python `>=3.13,<3.15` - `uv` - `just` Рабочая директория: - `cd src/backend` ## 3. Основной сценарий запуска (Docker Compose) ### 3.1 Выбор стека Базовый стек: ```bash docker compose -f compose.yaml up -d ``` Полный стек (с observability): ```bash docker compose -f compose.prod.yaml --profile observability up -d ``` ### 3.2 Проверка, что сервисы поднялись ```bash docker compose -f compose.yaml ps # или docker compose -f compose.prod.yaml --profile observability ps ``` Ожидаем `running/healthy` для `postgresql`, `valkey`, `backend`, `backend-celery-worker`, `backend-celery-beat`. ### 3.3 Runtime sanity-check Через reverse proxy (`80`): ```bash curl -i http://127.0.0.1/health curl -i http://127.0.0.1/ready curl -s http://127.0.0.1/metrics | head -n 40 ``` Альтернатива напрямую в backend (`14609`): ```bash curl -i http://127.0.0.1:14609/health curl -i http://127.0.0.1:14609/ready curl -s http://127.0.0.1:14609/metrics | head -n 40 ``` ### 3.4 Просмотр логов ```bash docker compose -f compose.yaml logs -f backend backend-celery-worker backend-celery-beat # или docker compose -f compose.prod.yaml --profile observability logs -f backend backend-celery-worker backend-celery-beat ``` ## 4. Проверка критериев B1..B10 ### B1. Запуск и воспроизводимость Compose runtime-подтверждение: ```bash docker compose -f compose.yaml up -d docker compose -f compose.yaml ps curl -i http://127.0.0.1/health curl -i http://127.0.0.1/ready ``` Показываем: - сервисы запускаются без ручных скрытых шагов; - backend жив и готов после зависимостей. ### B2-B6, B8, B10. Функциональность, отчёты, тестирование и дисциплина Эти проверки выполняются локально из `src/backend` (dev-зависимости): ```bash cd src/backend just --list just test just test-coverage just show-coverage just lint just format ``` Точечные наборы: ```bash cd src/backend uv run python manage.py test apps.decision.tests.test_decide uv run python manage.py test apps.events.tests.test_services tests.integration.test_events uv run python manage.py test apps.reports.tests.test_reports apps.guardrails.tests.test_guardrails uv run python manage.py test apps.reviews.tests.test_reviews_policy apps.experiments.tests.test_services uv run python manage.py test tests.integration.test_negative tests.integration.test_happy_path tests.integration.test_api_contract ``` ### B7. Архитектурные артефакты Проверяем: - `compliance-matrix.md` - `ADR/README.md` - `ADR/04-decisions.md` - `MAP.md` - `assets/plantuml/raw/c4-context.puml` - `assets/plantuml/raw/c4-container.puml` - `assets/plantuml/raw/c4-component-critical-path.puml` ### B9. Эксплуатационная готовность и наблюдаемость Runtime через compose: ```bash curl -i http://127.0.0.1/health curl -i http://127.0.0.1/ready curl -s http://127.0.0.1/metrics | head -n 40 ``` ## 5. Проверка выбранных допфич (FX) Локально из `src/backend`: FX: Notifications ```bash uv run python manage.py test apps.notifications.tests.test_notifications api.v1.notifications.tests.test_notifications_api ``` FX: Learnings ```bash uv run python manage.py test apps.learnings.tests.test_learnings api.v1.learnings.tests.test_learnings_api ``` FX: Conflicts ```bash uv run python manage.py test apps.conflicts.tests.test_conflicts api.v1.conflicts.tests.test_conflicts_api ``` Объединённый прогон: ```bash uv run python manage.py test \ apps.notifications.tests.test_notifications \ apps.learnings.tests.test_learnings \ apps.conflicts.tests.test_conflicts \ api.v1.notifications.tests.test_notifications_api \ api.v1.learnings.tests.test_learnings_api \ api.v1.conflicts.tests.test_conflicts_api ``` ## 6. Остановка и очистка Базовый стек: ```bash docker compose -f compose.yaml down ``` Полный стек: ```bash docker compose -f compose.prod.yaml --profile observability down ``` С удалением томов: ```bash docker compose -f compose.yaml down -v # или docker compose -f compose.prod.yaml --profile observability down -v ```