from fastapi import APIRouter from pydantic import BaseModel from app.services import cluster_inventory, alertmanager, ai, log_ingest router = APIRouter() class QueryRequest(BaseModel): query: str @router.post("/query") async def query(req: QueryRequest): network_state, alerts, logs = await _gather(req.query) response = await ai.answer(req.query, network_state, alerts, logs) return {"response": response, "network_state": network_state, "alerts": alerts, "logs": logs} async def _gather(query_text: str): import asyncio nfs_task = asyncio.create_task(cluster_inventory.get_network_status()) alerts_task = asyncio.create_task(alertmanager.get_alerts()) logs_task = asyncio.to_thread(log_ingest.get_events, 200) network_state, alerts, logs = await asyncio.gather(nfs_task, alerts_task, logs_task) return network_state, alerts, logs