"""Health and version endpoints required by AppFactory.""" from __future__ import annotations import logging from fastapi import APIRouter from ..deps import get_container from ..models import HealthResponse logger = logging.getLogger(__name__) router = APIRouter(tags=["service"]) @router.get("/health", response_model=HealthResponse, summary="Stav sluzby") async def health() -> HealthResponse: container = get_container() engines = {} for name, engine in container.engines.items(): try: engines[name] = await engine.available() except Exception as exc: logger.error("Engine availability check failed", extra={"engine": name}, exc_info=exc) engines[name] = False status = "ok" if any(engines.values()) else "degraded" return HealthResponse( status=status, app=container.settings.app_name, version=container.settings.app_version, engines=engines, queue=container.jobs.stats(), ) @router.get("/version", summary="Verze a zakladni informace o sluzbe") async def version() -> dict: settings = get_container().settings return { "app": settings.app_name, "version": settings.app_version, "language": "python", "root_path": settings.root_path, }