finyx_data_ai/app/schemas/parse_business_tables.py
2026-01-11 07:48:19 +08:00

67 lines
2.7 KiB
Python

"""
业务表解析模块的数据模型
"""
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="文件信息汇总")