46 lines
3.7 KiB
Markdown
46 lines
3.7 KiB
Markdown
# 07 — Требования к инфраструктуре — ORCH-053
|
||
|
||
Work Item ID: ORCH-053
|
||
|
||
## Топология
|
||
**Без изменений.** Новых контейнеров/портов/сервисов нет. Reconciler — фоновый
|
||
daemon-поток **внутри** существующего процесса orchestrator (как `queue_worker`).
|
||
Стартует/останавливается в `main.lifespan`. Деплой ORCH-053 — строго через
|
||
staging-гейт (8501) перед прод-деплоем (self-hosting, см. `docs/operations/INFRA.md`).
|
||
|
||
## Новые переменные окружения (`.env` / `.env.staging` на хосте, префикс `ORCH_`)
|
||
|
||
| Env | Поле `Settings` | Дефолт | Назначение |
|
||
|-----|-----------------|--------|-----------|
|
||
| `ORCH_RECONCILE_ENABLED` | `reconcile_enabled` | `true` | **Kill-switch** всего sweeper'а (self-hosting safety, поэтапный раскат, аварийное отключение). |
|
||
| `ORCH_RECONCILE_INTERVAL_S` | `reconcile_interval_s` | `120` | Период фонового прохода (сек). |
|
||
| `ORCH_RECONCILE_PLANE_ENABLED` | `reconcile_plane_enabled` | `true` | Отдельный флаг F-2 (опрос Plane API); `false` гасит только plane-ветку, F-1 работает. |
|
||
| `ORCH_RECONCILE_GRACE_DEFAULT_S` | `reconcile_grace_default_s` | `600` | Дефолтный порог «застревания» по `tasks.updated_at` / `issue.updated_at`. |
|
||
| `ORCH_RECONCILE_GRACE_OVERRIDES_JSON` | `reconcile_grace_overrides_json` | `""` | Per-stage пороги, напр. `{"analysis":1800,"development":300,"deploy":900}`. Невалидный JSON → дефолт (never-raise). |
|
||
| `ORCH_RECONCILE_NOTIFY_UNBLOCK` | `reconcile_notify_unblock` | `true` | Telegram при разблокировке (F-4). |
|
||
|
||
Секреты не добавляются. `.env.example` (канон) обновляется в PR реализации.
|
||
|
||
## Нагрузка / сеть
|
||
- **Plane API (F-2):** GET issues per-project каждые `reconcile_interval_s`, с
|
||
фильтром по статусам (In Progress / Approved / Rejected) и пагинацией. Митигация
|
||
нагрузки — интервал (120с), фильтр, per-project, never-raise (Plane outage →
|
||
`[]`, тик не падает). `get_project_states` уже кэширует state-uuid per-project.
|
||
- **Gitea API (F-1):** только косвенно — внутри переоценки гейтов (`check_ci_green`
|
||
и т.п.), которые и так вызываются webhook-путём. Дополнительных постоянных
|
||
вызовов reconciler не вносит сверх момента реальной разблокировки.
|
||
- **CPU/RAM:** один спящий daemon-поток; всплеск только при наличии застрявших
|
||
задач.
|
||
|
||
## Self-hosting
|
||
- Reconciler **не** рестартит/не роняет прод-контейнер `orchestrator` (8500),
|
||
обслуживающий все проекты с общей БД.
|
||
- `docs/operations/INFRA.md` дополняется упоминанием kill-switch
|
||
`ORCH_RECONCILE_ENABLED` (выполняется в PR реализации, §9 ТЗ).
|
||
- Раскат: при первом деплое допустимо стартовать с `ORCH_RECONCILE_PLANE_ENABLED=false`
|
||
(только F-1, минимальный риск), затем включить F-2.
|
||
|
||
## Конфиги/деплой
|
||
Дополнительных томов, портов, healthcheck'ов, изменений `docker-compose`/Dockerfile
|
||
**не требуется**.
|