96 lines
3.1 KiB
Python
96 lines
3.1 KiB
Python
from datetime import datetime
|
|
from typing import List, Optional
|
|
from pydantic import BaseModel, Field
|
|
from enum import Enum
|
|
from router.common_model import BaseResponse
|
|
|
|
|
|
class TaskStatusEnum(str, Enum):
|
|
"""任务状态枚举"""
|
|
|
|
IDLE = "idle"
|
|
INITIALIZING = "initializing"
|
|
RUNNING = "running"
|
|
PAUSED = "paused"
|
|
COMPLETED = "completed"
|
|
FAILED = "failed"
|
|
TERMINATED = "terminated"
|
|
|
|
|
|
class CourseInfo(BaseModel):
|
|
"""课程信息响应模型"""
|
|
|
|
course_id: str = Field("", description="课程ID")
|
|
course_name: str = Field("", description="课程名称")
|
|
teacher_name: str = Field("", description="教师姓名")
|
|
is_evaluated: str = Field("", description="是否已评价")
|
|
evaluation_content: str = Field("", description="评价内容")
|
|
|
|
|
|
# 统一响应数据模型
|
|
class EvaluationStatsData(BaseModel):
|
|
"""评价统计信息数据模型"""
|
|
|
|
total_courses: int = Field(0, description="总课程数")
|
|
pending_courses: int = Field(0, description="待评价课程数")
|
|
success_count: int = Field(0, description="成功评价数")
|
|
fail_count: int = Field(0, description="失败评价数")
|
|
current_index: int = Field(0, description="当前评价索引")
|
|
status: TaskStatusEnum = Field(TaskStatusEnum.IDLE, description="任务状态")
|
|
current_countdown: int = Field(0, description="当前倒计时")
|
|
start_time: Optional[datetime] = Field(None, description="开始时间")
|
|
end_time: Optional[datetime] = Field(None, description="结束时间")
|
|
error_message: str = Field("", description="错误消息")
|
|
course_list: List[CourseInfo] = Field(default_factory=list, description="课程列表")
|
|
|
|
|
|
class CurrentCourseInfoData(BaseModel):
|
|
"""当前评价课程信息数据模型"""
|
|
|
|
is_evaluating: bool = Field(False, description="是否正在评价")
|
|
course_name: str = Field("", description="课程名称")
|
|
teacher_name: str = Field("", description="教师姓名")
|
|
progress_text: str = Field("", description="进度文本")
|
|
countdown_seconds: int = Field(0, description="倒计时秒数")
|
|
current_index: int = Field(-1, description="当前索引")
|
|
total_pending: int = Field(0, description="总待评价数")
|
|
|
|
|
|
class TaskOperationData(BaseModel):
|
|
"""任务操作数据模型"""
|
|
|
|
task_status: TaskStatusEnum = Field(TaskStatusEnum.IDLE, description="任务状态")
|
|
|
|
|
|
class InitializeData(BaseModel):
|
|
"""初始化数据模型"""
|
|
|
|
total_courses: int = Field(0, description="总课程数")
|
|
pending_courses: int = Field(0, description="待评价课程数")
|
|
course_list: List[CourseInfo] = Field(default_factory=list, description="课程列表")
|
|
|
|
|
|
# 统一响应模型
|
|
class EvaluationStatsResponse(BaseResponse[EvaluationStatsData]):
|
|
"""评价统计信息响应模型"""
|
|
|
|
pass
|
|
|
|
|
|
class CurrentCourseInfoResponse(BaseResponse[CurrentCourseInfoData]):
|
|
"""当前评价课程信息响应模型"""
|
|
|
|
pass
|
|
|
|
|
|
class TaskOperationResponse(BaseResponse[TaskOperationData]):
|
|
"""任务操作响应模型"""
|
|
|
|
pass
|
|
|
|
|
|
class InitializeResponse(BaseResponse[InitializeData]):
|
|
"""初始化响应模型"""
|
|
|
|
pass
|