"""FastAPI 返回数据结构 - 文档相关"""
import uuid
from datetime import datetime
from pydantic import BaseModel, Field
from .enum_var import DocumentStatus
class BaseDocumentItem(BaseModel):
"""文档公共字段"""
id: uuid.UUID = Field(description="文档ID")
name: str = Field(default="", description="文档名称")
type: str = Field(default="", description="文档类型")
size: float = Field(default=0.0, description="文档大小")
created_at: datetime | None = Field(default=None, description="创建时间")
user_name: str | None = Field(default=None, description="上传者用户名")
conversation_id: str | None = None
class Config:
"""配置"""
populate_by_name = True
class DocumentInfo(BaseModel):
"""RAG使用的文档信息"""
id: uuid.UUID = Field(description="文档ID")
order: int = Field(description="文档顺序")
name: str = Field(default="", description="文档名称")
author: str = Field(default="", description="文档作者")
extension: str = Field(default="", description="文档扩展名")
abstract: str = Field(default="", description="文档摘要")
size: int = Field(default=0, description="文档大小")
created_at: float = Field(description="创建时间")
class ConversationDocumentItem(BaseDocumentItem):
"""GET /api/document/{conversation_id} Result内元素数据结构"""
status: DocumentStatus
class ConversationDocumentMsg(BaseModel):
"""GET /api/document/{conversation_id} Result数据结构"""
documents: list[ConversationDocumentItem] = []
class ConversationDocumentRsp(BaseModel):
"""GET /api/document/{conversation_id} 返回数据结构"""
code: int
message: str
result: ConversationDocumentMsg
class UploadDocumentMsg(BaseModel):
"""POST /api/document/{conversation_id} 返回数据结构"""
documents: list[BaseDocumentItem]
class UploadDocumentRsp(BaseModel):
"""POST /api/document/{conversation_id} 返回数据结构"""
code: int
message: str
result: UploadDocumentMsg