File size: 1,913 Bytes
03e5649
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
"""
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),
    }