"""Endpoint для проверки здоровья.""" from fastapi import APIRouter, Depends from sqlalchemy import text from sqlalchemy.ext.asyncio import AsyncSession from core.config import get_settings from core.db import get_session from core.redis import redis_client router = APIRouter() @router.get("/api/health") async def health(session: AsyncSession = Depends(get_session)) -> dict[str, bool | str]: """Отчет о статусе приложения и связи с БД/Redis. Поле `version` — версия инстанса (`VIDCONF_VERSION` из `.env`, пишет `install.sh` из корневого файла `VERSION`); футер админки берёт его отсюда, а не из версии сборки фронтенда. """ db_ok = False try: await session.execute(text("SELECT 1")) db_ok = True except Exception: # noqa: BLE001 db_ok = False redis_ok = False try: redis_ok = bool(await redis_client.ping()) except Exception: # noqa: BLE001 redis_ok = False return { "status": "ok", "db": db_ok, "redis": redis_ok, "version": get_settings().vidconf_version, }