""" 业务表解析模块的数据模型 """ from typing import Optional, List from pydantic import BaseModel, Field # ==================== 请求模型 ==================== class ParseBusinessTablesRequest(BaseModel): """业务表解析请求""" file_paths: List[str] = Field(..., min_items=1, description="文件路径列表") project_id: str = Field(..., description="项目ID") # ==================== 响应模型 ==================== class FieldInfo(BaseModel): """字段信息""" raw_name: str = Field(..., description="字段名(英文/原始名称)") display_name: Optional[str] = Field(None, description="字段显示名称(中文)") type: str = Field(..., description="字段类型") comment: Optional[str] = Field(None, description="字段注释") inferred_type: Optional[str] = Field(None, description="推断的字段类型") class TableInfo(BaseModel): """表信息""" raw_name: str = Field(..., description="表名(英文/原始名称)") display_name: Optional[str] = Field(None, description="表显示名称(中文)") description: Optional[str] = Field(None, description="表描述") source_file: str = Field(..., description="来源文件") fields: List[FieldInfo] = Field(..., description="字段列表") field_count: int = Field(..., ge=0, description="字段数量") row_count: Optional[int] = Field(None, description="行数") class ProcessedFile(BaseModel): """已处理的文件信息""" file_name: str = Field(..., description="文件名") file_size: int = Field(..., ge=0, description="文件大小(字节)") tables_extracted: int = Field(..., ge=0, description="提取的表数") status: str = Field(..., description="处理状态") class FailedFile(BaseModel): """失败的文件信息""" file_name: str = Field(..., description="文件名") error: str = Field(..., description="错误信息") class FileInfo(BaseModel): """文件信息汇总""" processed_files: List[ProcessedFile] = Field(..., description="已处理的文件列表") class ParseBusinessTablesResponse(BaseModel): """业务表解析响应""" tables: List[TableInfo] = Field(..., description="解析出的表列表") total_tables: int = Field(..., ge=0, description="总表数") total_fields: int = Field(..., ge=0, description="总字段数") total_files: int = Field(..., ge=0, description="总文件数") success_files: int = Field(..., ge=0, description="成功处理的文件数") failed_files: List[FailedFile] = Field(default_factory=list, description="失败的文件列表") parse_time: float = Field(..., ge=0, description="解析耗时(秒)") file_info: FileInfo = Field(..., description="文件信息汇总")