3e3519edc8
Sprint 0 / #19: OpenAPI 3.1 контракт API v1 + TS-клиент и контрактные тесты AC проверены независимо (ревью TechLead): генератор TS-клиента (blob сверен), отклонение схемы роняет контрактный тест (мутации), секретов в ответах нет. Гейты: ruff/mypy чисто, pytest 93 passed / coverage 95.48% (порог 70%). CI green недостижим — runner отсутствует (#52); отклонение зафиксировано в PR. Refs #19, #15, #52.
awg_api — control plane
Непривилегированный процесс: FastAPI + REST API v1 + WebSocket + отдача статики UI.
| Модуль | Ответственность | Задача |
|---|---|---|
app.py |
lifespan, конфиг, логирование, error model, статика | #31 |
routers/ |
эндпоинты по OpenAPI (status, config, routing, devices, logs, auth) | #32 |
ws/ |
/api/v1/metrics/stream |
#33 |
security/ |
токен, CSRF, rate limit, маскировка секретов | #34 |
store/ |
SQLite (WAL), миграции, audit log, apply/rollback | #20 |
Контракт — docs/openapi.yaml (задача #19), TS-клиент генерируется в ui/src/api/generated/.