from fastapi import APIRouter, HTTPException, Request from typing import Dict, Any from services.reporting import generate_report from sqlalchemy.orm import Session from config.database import SessionLocal router = APIRouter(prefix="/api/reporting", tags=["Reporting"]) def get_db(): db = SessionLocal() try: yield db finally: db.close() @router.post("/summary", response_model=Dict[str, float]) async def summary_report(request: Request): # Read raw JSON to handle invalid input formats data = await request.json() if not isinstance(data, list): raise HTTPException(status_code=400, detail="Invalid input format") report = generate_report(data) return report