"""Downloadable risk report endpoints.""" from typing import Annotated from fastapi import APIRouter, Depends from fastapi.responses import Response from app.api.dependencies import require_permission from app.models.entities import UserAccount from app.schemas.risk_prediction import RiskAssessmentResult from app.services.reports import build_risk_report_docx, build_risk_report_pdf router = APIRouter(prefix="/reports", tags=["reports"]) @router.post("/pdf") async def download_report_pdf( payload: RiskAssessmentResult, _current_user: Annotated[UserAccount, Depends(require_permission("risk.assess", operate=True))], ) -> Response: pdf = build_risk_report_pdf(payload) return Response( content=pdf, media_type="application/pdf", headers={"Content-Disposition": 'attachment; filename="dieya-risk-report.pdf"'}, ) @router.post("/word") async def download_report_word( payload: RiskAssessmentResult, _current_user: Annotated[UserAccount, Depends(require_permission("risk.assess", operate=True))], ) -> Response: return Response( content=build_risk_report_docx(payload), media_type="application/vnd.openxmlformats-officedocument.wordprocessingml.document", headers={"Content-Disposition": 'attachment; filename="dieya-risk-report.docx"'}, )