64 lines
1.3 KiB
Python
64 lines
1.3 KiB
Python
"""文档相关数据模型"""
|
|
|
|
from pydantic import BaseModel
|
|
from typing import Optional, Any
|
|
from datetime import datetime
|
|
|
|
|
|
class DocumentUploadResponse(BaseModel):
|
|
"""文档上传响应"""
|
|
doc_id: str
|
|
filename: str
|
|
size: int
|
|
status: str = "uploaded"
|
|
parse_task_id: Optional[str] = None # 解析任务ID
|
|
|
|
|
|
class DocumentInfo(BaseModel):
|
|
"""文档信息"""
|
|
id: str
|
|
name: str
|
|
chunks: int
|
|
status: str
|
|
created_at: Optional[datetime] = None
|
|
|
|
|
|
class DocumentListResponse(BaseModel):
|
|
"""文档列表响应"""
|
|
docs: list[DocumentInfo]
|
|
|
|
|
|
class ChunkInfo(BaseModel):
|
|
"""文本块信息"""
|
|
chunk_id: str
|
|
doc_name: str
|
|
clause_id: Optional[str] = None
|
|
chapter: Optional[str] = None
|
|
content: str
|
|
token_count: int
|
|
chunk_index: int
|
|
|
|
|
|
class ParseResponse(BaseModel):
|
|
"""解析响应"""
|
|
doc_id: str
|
|
task_id: Optional[str] = None
|
|
chunks: int = 0
|
|
status: str = "parsing"
|
|
|
|
|
|
class EmbedResponse(BaseModel):
|
|
"""嵌入响应"""
|
|
doc_id: str
|
|
task_id: Optional[str] = None
|
|
vectors: int = 0
|
|
status: str = "embedding"
|
|
|
|
|
|
class TaskStatusResponse(BaseModel):
|
|
"""任务状态响应"""
|
|
task_id: str
|
|
status: str
|
|
progress: int
|
|
message: Optional[str] = None
|
|
result: Optional[Any] = None |