feat:增加分析进度接口

This commit is contained in:
2026-10-10 07:26:24 -07:00
parent e3699d1a30
commit cd5a2b4d8f
15 changed files with 632 additions and 143 deletions
+33
View File
@@ -231,8 +231,39 @@ class DataFileRecord(DataFileDetail):
deleted: bool = False
UploadStatus = Literal["queued", "parsing", "ready", "failed"]
UploadStage = Literal["detecting", "reading", "building"]
class UploadError(BaseModel):
# 与同步接口失败时的 HTTP 状态码和 msg 一致,如 422 + 解析失败的原因
code: int
msg: str
class UploadProgress(BaseModel):
"""一次上传的解析进度;上传接口、进度接口和文件列表里的 uploads 都是这个结构"""
file_id: str
name: str
# queued 排队中;parsing 解析中;ready 已完成,文件记录已可查;failed 失败,原因在 error
status: UploadStatus
# 解析完成的比例,0 到 1,只增不减;ready 时为 1,解析中不会到 1
progress: float
# 解析中所处的环节;其他状态为空
stage: UploadStage | None
# 预计还要多少秒;排队中、刚开始解析、已结束时为空
eta_seconds: float | None
# 排队中时,前面还有几个文件在排队;其他状态为 0
queued_ahead: int
error: UploadError | None
class DataFileList(BaseModel):
files: list[DataFileInfo]
# 本会话里排队、解析中和刚失败的上传,刷新页面后据此恢复轮询;完成的已在 files 里
uploads: list[UploadProgress] = Field(default_factory=list)
class DataTableRows(BaseModel):
@@ -271,3 +302,5 @@ class RequestDataFile(BaseModel):
# 本轮消息的 attachments 里带了这个文件,通常是刚上传的
attached_this_turn: bool
tables: list[DataTableInfo]
# 上传后的分析结果,只有 ready 的才有;给模型一句说明和列的含义,没有时和以前完全一样
insights: FileInsights | None = None