from typing import Optional from datetime import datetime from enum import Enum from pydantic import BaseModel class TaskStatus(str, Enum): """任务状态枚举""" PENDING = "pending" RUNNING = "running" COMPLETED = "completed" FAILED = "failed" class TaskType(str, Enum): """任务类型枚举""" START_SOFTWARE = "start_software" STOP_SOFTWARE = "stop_software" RESTART_SOFTWARE = "restart_software" class Task(BaseModel): """任务模型""" id: str task_type: TaskType software_id: str status: TaskStatus = TaskStatus.PENDING created_at: datetime started_at: Optional[datetime] = None completed_at: Optional[datetime] = None error_message: Optional[str] = None progress: int = 0