Files
orchestrator/docs/work-items/ORCH-098/07-infra-requirements.md

3.0 KiB
Raw Blame History

work_item, stage, author_agent, status, created_at, model_used
work_item stage author_agent status created_at model_used
ORCH-098 architecture architect proposed 2026-06-10 claude-opus-4-8

07 — Инфра-требования: ORCH-098 — машинный журнал уроков lessons

Work Item: ORCH-098 · Repo: orchestrator · Стадия: architecture

When-applicable. Топология не меняется; файл создан для аудитопригодности (новая env-переменная).

I-1. Топология / окружения

N/A. Новых контейнеров/портов/сети/томов нет. Таблица lessons живёт в существующей общей SQLite-БД (тот же том ./data), эндпоинты обслуживаются текущим процессом orchestrator (8500) / orchestrator-staging (8501). Принцип «всё в Docker на одном сервере mva154» — соблюдён.

I-2. Переменные окружения / секреты

Новые env (pydantic BaseSettings, авто-биндинг ORCH_*), все с безопасными дефолтами:

Env Дефолт Назначение
ORCH_LESSONS_ENABLED true kill-switch журнала (NFR-2); false → полная инертность
ORCH_LESSONS_DEDUP_WINDOW_S 3600 окно дедупа автозаписи (ADR-001 D4)
ORCH_LESSONS_QUERY_LIMIT_DEFAULT 100 дефолтный limit для GET /lessons

lessons_repos СОЗНАТЕЛЬНО не вводится — журнал observer-only и не скоупится по репо (ADR-001 D2). Секретов нет. .env.example дополнить тремя ключами для документируемости (значения — дефолтные, не секреты).

I-3. Деплой / рестарт

  • Изменение применяется штатным конвейером: обязательный staging-гейт (8501) перед прод-деплоем орка (self-hosting инвариант). Прод-контейнер не рестартить вне процедуры деплоя стадии deploy/Confirm Deploy (ORCH-059) — конвейер всех проектов встанет.
  • Таблица lessons создаётся идемпотентно при старте (init_db()) — на первом штатном запуске нового образа, без отдельной ручной миграции (restart-safe, NFR-4). На живой БД enduro не затронут.
  • Откат — ORCH_LESSONS_ENABLED=false (мгновенная инертность) либо revert образа.

I-4. CI/CD

Без изменений в .gitea/workflows/. Новые тесты tests/test_lessons.py исполняются штатным шагом pytest tests/ -q. Новых системных/pip-зависимостей нет (raw SQL на stdlib sqlite3).