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

53 lines
2.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
文档解析模块的数据模型
"""
from typing import Optional, List
from pydantic import BaseModel, Field
# ==================== 请求模型 ====================
class ParseDocumentRequest(BaseModel):
"""文档解析请求"""
file_path: str = Field(..., description="文件路径")
file_type: Optional[str] = Field(None, description="文件类型excel/word/pdf")
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="字段注释")
is_primary_key: bool = Field(False, description="是否主键")
is_nullable: bool = Field(True, description="是否可为空")
default_value: 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="表描述")
fields: List[FieldInfo] = Field(..., description="字段列表")
field_count: int = Field(..., ge=0, description="字段数量")
class FileInfo(BaseModel):
"""文件信息"""
file_name: str = Field(..., description="文件名")
file_size: int = Field(..., ge=0, description="文件大小(字节)")
file_type: str = Field(..., description="文件类型")
class ParseDocumentResponse(BaseModel):
"""文档解析响应"""
tables: List[TableInfo] = Field(..., description="解析出的表列表")
total_tables: int = Field(..., ge=0, description="总表数")
total_fields: int = Field(..., ge=0, description="总字段数")
parse_time: float = Field(..., ge=0, description="解析耗时(秒)")
file_info: FileInfo = Field(..., description="文件信息")