Files
awg-dash/backend/awg_api
embeddevio 3e3519edc8
contract-openapi / openapi-contract (push) Failing after 0s
contract-openapi / ts-client-is-current (push) Failing after 0s
Merge pull request 'Sprint 0 / #19: OpenAPI 3.1 контракт API v1 + TS-клиент и контрактные тесты' (#57) from feat/19-openapi into main
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.
2026-10-28 21:21:13 +03:00
..

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/.