from __future__ import annotations from importlib import import_module from sqlalchemy import text from fastapi import APIRouter from app.schemas.health import HealthResponse, SystemCapabilities from app.providers.registry import list_provider_capabilities from app.db.session import get_engine router = APIRouter() def _dependency_enabled(module: str) -> bool: try: import_module(module) return True except Exception: return False @router.get("/health") def readiness() -> HealthResponse: db_status = "ok" try: with get_engine().connect() as connection: connection.execute(text("SELECT 1")) except Exception: db_status = "degraded" return HealthResponse(status="ok", service="geointel-backend", version="0.1.0", database=db_status) @router.get("/api/v1/system/capabilities") def capabilities() -> dict: providers = [item.to_dict() for item in list_provider_capabilities()] return {"data": SystemCapabilities( postgis=True, rasterio=_dependency_enabled("rasterio"), geopandas=_dependency_enabled("geopandas"), yolo=False, sam=False, grb="planned", sentinel="planned", providers=providers, ).model_dump()}