import logging import uuid from enum import Enum from fastapi import APIRouter, BackgroundTasks, Depends from pydantic import BaseModel from sqlalchemy.orm import Session from app.modules.auth.service import auth_service from core.database import User, get_db logger = logging.getLogger(__name__) router = APIRouter() # --- Models --- class ReportFormat(str, Enum): PDF = "pdf" HTML = "html" CSV = "csv" class ReportTemplate(str, Enum): EXECUTIVE = "executive" STANDARD = "standard" DETAILED = "detailed" COMPLIANCE = "compliance" class ReportRequest(BaseModel): report_type: str = "standard" case_id: str | None = None format: ReportFormat = ReportFormat.PDF template: ReportTemplate = ReportTemplate.STANDARD @router.post("/generate", status_code=202, tags=["reporting"]) async def generate_report( request: ReportRequest, background_tasks: BackgroundTasks, current_user: User = Depends(auth_service.get_current_user), db: Session = Depends(get_db), ): """Generate a report based on provided criteria.""" report_id = f"report_{uuid.uuid4().hex}" return { "job_id": report_id, "status": "queued", "message": "Report generation started", "estimated_completion_minutes": 5, } @router.get("/summary/{case_id}", tags=["reporting"]) async def get_case_summary(case_id: str): """Used by the Summary Preview tab in the Reporting page.""" return { "stats": {"case_id": case_id, "status": "success", "data_quality": 99.8}, "findings": [ { "id": "f1", "type": "pattern", "severity": "high", "description": "Mirroring patterns identified", } ], }