Fundamental_Analysis/backend/app/schemas/progress.py

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")