Files
infra/14_infra-assistant/api/routers/alerts.py
T
2026-03-21 14:12:55 +01:00

33 lines
892 B
Python

from fastapi import APIRouter
from api.correlation.collectors import collect_metrics
from api.correlation.engine import evaluate, RULES
from api.llm.client import explain_incident
router = APIRouter()
@router.get("/alerts")
def alerts():
metrics = collect_metrics()
# Récupère la liste de règles depuis RULES ; fallback sur [] si introuvable
rules_list = []
if isinstance(RULES, dict):
rules_list = RULES.get("rules", []) or []
elif isinstance(RULES, list):
rules_list = RULES
incidents = evaluate(rules_list, metrics)
if not incidents:
return {"status": "ok"}
for incident in incidents:
# explain_incident doit être résilient — voir api/llm/client.py pour fallback
incident["summary"] = explain_incident(incident, metrics)
return {
"status": "incident",
"incidents": incidents,
}