Контракт в коде: КИО по нормативу, 43 события WS по шести союзам направлений, таймеры ГОСТ, таксономия E1–E6, шесть компетенций радара. make types гоняет их через JSON Schema в generated.ts, тест ловит забытую регенерацию. Стенд: docker compose postgres + backend, health отвечает, база досягаема из контейнера бэкенда. Makefile не врёт — нереализованные цели падают и называют карточку, которая их закроет. frontend/.npmrc: под WSL2 npm install зависает на дефолтных 15 сокетах.
28 lines
943 B
Python
28 lines
943 B
Python
"""Сборка приложения. Роутеры подключаются по мере готовности — см. tasks/."""
|
|
|
|
from contextlib import asynccontextmanager
|
|
|
|
from fastapi import FastAPI
|
|
|
|
from app.config import get_settings
|
|
|
|
|
|
@asynccontextmanager
|
|
async def lifespan(app: FastAPI):
|
|
# Прогрев моделей и валидация сценариев — карточки lct-04 и lct-06.
|
|
app.state.models_ready = False
|
|
yield
|
|
|
|
|
|
app = FastAPI(title="Учебный симулятор занятия для системы 112", lifespan=lifespan)
|
|
|
|
|
|
@app.get("/api/health")
|
|
async def health() -> dict:
|
|
"""Готовность стенда. Фронт показывает экран «модели прогреваются»."""
|
|
settings = get_settings()
|
|
return {
|
|
"status": "ok",
|
|
"models_ready": getattr(app.state, "models_ready", False),
|
|
"offline": settings.offline,
|
|
}
|