Files
geointel/backend/app/api/routes/health.py
T
Codex 488da4cc83
GeoIntel CI / docs-smoke (push) Canceled after 0s
GeoIntel CI / contract-smoke (push) Canceled after 0s
Add bounded GRB map acquisition
2026-07-17 21:29:26 +02:00

46 lines
1.2 KiB
Python

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="bounded",
sentinel="planned",
providers=providers,
).model_dump()}