""" backend/api/grid_status.py — Grid Status Endpoint (S766-GRID-3) Endpoint per monitorare lo stato della Grid Orchestration: - Health dei provider per ogni profilo - Stato di sincronizzazione Supabase - Metriche di carico e performance """ from fastapi import APIRouter, Request from .global_state_sync import get_global_state_sync from ..models.grid_router import get_grid_router import time router = APIRouter() @router.get("/api/grid/health") async def grid_health(): """ Restituisce lo stato di salute della Grid. Metriche per ogni provider/profilo. """ grid_router = get_grid_router() health = await grid_router.get_health_status() return { "status": "ok", "grid_enabled": grid_router._enabled, "providers": health, "timestamp": int(time.time() * 1000), } @router.get("/api/grid/sync") async def grid_sync_status(): """ Restituisce lo stato di sincronizzazione Supabase tra i profili. """ sync = get_global_state_sync() supabase_status = await sync.get_health_status() return { "status": "ok", "sync_enabled": sync._enabled, "supabase_profiles": supabase_status, "timestamp": int(time.time() * 1000), } @router.get("/api/grid/status") async def grid_full_status(): """ Restituisce lo stato completo della Grid (provider + sync). """ grid_router = get_grid_router() sync = get_global_state_sync() provider_health = await grid_router.get_health_status() supabase_status = await sync.get_health_status() return { "status": "ok", "grid": { "enabled": grid_router._enabled, "providers": provider_health, }, "sync": { "enabled": sync._enabled, "supabase_profiles": supabase_status, }, "timestamp": int(time.time() * 1000), }