from pydantic import BaseModel, Field from typing import List, Optional, Union, Dict, Any class ImageConfig(BaseModel): url: str caption: Optional[str] = "Figure" class ReportSection(BaseModel): content: str images: Optional[List[Union[str, ImageConfig]]] = [] page_break: Optional[bool] = False class ReportGenerationRequest(BaseModel): chat_id: str file_name: str = "Analysis_Report" title: Optional[str] = "Analytics Performance Report" subtitle: Optional[str] = "Generated Insights" author: Optional[str] = "AI Assistant" department: Optional[str] = "Data Analytics Team" sections: List[ReportSection] confidential: bool = True class ReportGenerationResponse(BaseModel): success: bool pdf_report_file_url: Optional[str] = None file_name: Optional[str] = None error: Optional[str] = None request_id: str