""" 进度追踪相关的Pydantic模式 """ from pydantic import BaseModel, Field from typing import List, Optional from datetime import datetime from uuid import UUID class StepTiming(BaseModel): """步骤计时模式""" step_name: str = Field(..., description="步骤名称") step_order: int = Field(..., description="步骤顺序") status: str = Field(..., description="步骤状态") started_at: Optional[datetime] = Field(None, description="开始时间") completed_at: Optional[datetime] = Field(None, description="完成时间") duration_ms: Optional[int] = Field(None, description="耗时(毫秒)") error_message: Optional[str] = Field(None, description="错误信息") class Config: from_attributes = True class ProgressResponse(BaseModel): """进度响应模式""" report_id: UUID = Field(..., description="报告ID") current_step: int = Field(..., description="当前步骤") total_steps: int = Field(..., description="总步骤数") current_step_name: str = Field(..., description="当前步骤名称") status: str = Field(..., description="整体状态") step_timings: List[StepTiming] = Field([], description="步骤计时列表") estimated_remaining: Optional[int] = Field(None, description="预估剩余时间(秒)") class Config: from_attributes = True class ProgressResetResponse(BaseModel): """进度重置响应模式""" message: str = Field(..., description="操作结果消息") report_id: str = Field(..., description="报告ID")