Add AI connectivity check endpoint: GET /admin/api/ai/connectivity
CI / Lint & Format (push) Failing after 9s
CI / Tests (push) Has been skipped
CI / Security Scan (push) Failing after 7s
CI / Docker Build (push) Has been skipped

This commit is contained in:
2026-06-25 23:00:20 -04:00
parent 3711ce202f
commit 7cc2416411
+58
View File
@@ -318,3 +318,61 @@ async def update_runtime_config(
is_overridden=True,
message=f"Fournisseur changé à {state['provider']}, modèle {state['model']}",
)
# ─────────────────────────────────────────────────────────────
# GET /admin/api/ai/connectivity — test réseau vers les API AI
# ─────────────────────────────────────────────────────────────
@router.get("/connectivity")
async def check_ai_connectivity():
"""Vérifie la connectivité réseau vers OpenRouter et Gemini."""
results = {}
# Test OpenRouter
t0 = time.time()
try:
async with httpx.AsyncClient(timeout=httpx.Timeout(10, connect=5)) as client:
resp = await client.get(
"https://openrouter.ai/api/v1/models",
headers={"Authorization": f"Bearer {settings.OPENROUTER_API_KEY}"} if settings.OPENROUTER_API_KEY else {},
)
results["openrouter"] = {
"reachable": True,
"status": resp.status_code,
"latency_ms": round((time.time() - t0) * 1000, 1),
"has_key": bool(settings.OPENROUTER_API_KEY),
}
except Exception as e:
results["openrouter"] = {
"reachable": False,
"error": str(e)[:200],
"latency_ms": round((time.time() - t0) * 1000, 1),
"has_key": bool(settings.OPENROUTER_API_KEY),
}
# Test Gemini
t0 = time.time()
try:
async with httpx.AsyncClient(timeout=httpx.Timeout(10, connect=5)) as client:
resp = await client.get("https://generativelanguage.googleapis.com")
results["gemini"] = {
"reachable": True,
"status": resp.status_code,
"latency_ms": round((time.time() - t0) * 1000, 1),
"has_key": bool(settings.GEMINI_API_KEY),
}
except Exception as e:
results["gemini"] = {
"reachable": False,
"error": str(e)[:200],
"latency_ms": round((time.time() - t0) * 1000, 1),
"has_key": bool(settings.GEMINI_API_KEY),
}
return {
"results": results,
"ai_enabled": settings.AI_ENABLED,
"ai_provider": runtime_ai_config.provider or settings.AI_PROVIDER,
"ai_request_timeout": settings.AI_REQUEST_TIMEOUT,
}