report.py 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. """
  2. 报告相关数据模型
  3. """
  4. from pydantic import BaseModel, Field
  5. from typing import List, Optional
  6. class UploadedDocumentContext(BaseModel):
  7. """用户上传文档上下文"""
  8. file_name: str = Field(..., description="上传文件名")
  9. file_type: str = Field(default="", description="文件类型")
  10. content: str = Field(..., description="后端提取的纯文本内容")
  11. attachment_id: Optional[str] = Field(default=None, description="附件解析ID")
  12. char_count: Optional[int] = Field(default=None, description="提取文本字符数")
  13. class ReportCompleteFlowRequest(BaseModel):
  14. """完整报告生成流程请求"""
  15. user_question: str = Field(..., description="用户问题")
  16. user_id: Optional[int] = Field(default=None, description="用户ID")
  17. window_size: int = Field(default=5, description="窗口大小")
  18. n_results: int = Field(default=5, description="结果数量")
  19. ai_conversation_id: Optional[int] = Field(default=None, description="AI对话ID")
  20. is_network_search_enabled: bool = Field(default=False, description="是否启用联网搜索")
  21. enable_online_model: bool = Field(default=False, description="是否启用在线模型")
  22. uploaded_documents: List[UploadedDocumentContext] = Field(default_factory=list, description="用户上传文档上下文")
  23. class UpdateAIMessageRequest(BaseModel):
  24. """更新AI消息请求"""
  25. ai_message_id: int = Field(..., description="AI消息ID")
  26. content: str = Field(..., description="消息内容")
  27. class StopSSERequest(BaseModel):
  28. """停止SSE请求"""
  29. ai_conversation_id: int = Field(..., description="AI对话ID")
  30. class StreamChatRequest(BaseModel):
  31. """流式聊天请求(用于降级)"""
  32. message: str = Field(..., description="用户消息")
  33. ai_conversation_id: Optional[int] = Field(default=None, description="AI对话ID")
  34. business_type: int = Field(default=0, description="业务类型")