46 lines
3.0 KiB
Markdown
46 lines
3.0 KiB
Markdown
---
|
||
work_item: ORCH-098
|
||
stage: architecture
|
||
author_agent: architect
|
||
status: proposed
|
||
created_at: 2026-06-10
|
||
model_used: 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`).
|