42 lines
1.5 KiB
Python
42 lines
1.5 KiB
Python
"""
|
|
进度追踪相关的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") |