""" 任务实例相关API模型 包含任务实例的请求和响应的数据模型 """ from typing import Dict, Any, List, Optional from pydantic import BaseModel, Field from enum import Enum # 请求模型 class TaskInstanceCreateInput(BaseModel): """任务实例创建输入模型""" task_id: str = Field(..., description="任务ID") name: Optional[str] = Field(None, description="任务名称") variables: Optional[Dict[str, Any]] = Field(None, description="任务变量") priority: int = Field(1, description="任务优先级") input_params: Optional[Dict[str, Any]] = Field(None, description="任务输入参数") block_outputs: Optional[Dict[str, Any]] = Field(None, description="块输出参数") context_params: Optional[Dict[str, Any]] = Field(None, description="上下文参数") class TaskInstanceUpdateInput(BaseModel): """任务实例更新输入模型""" variables: Optional[Dict[str, Any]] = Field(None, description="任务变量") priority: Optional[int] = Field(None, description="任务优先级") input_params: Optional[Dict[str, Any]] = Field(None, description="任务输入参数") block_outputs: Optional[Dict[str, Any]] = Field(None, description="块输出参数") context_params: Optional[Dict[str, Any]] = Field(None, description="上下文参数") # 任务输入参数模型 class TaskInputParamItem(BaseModel): """任务输入参数项目""" key: str = Field(..., description="参数名") label: str = Field(..., description="参数标签") type: str = Field(..., description="参数类型") required: bool = Field(False, description="是否必填") default_value: Optional[Any] = Field(None, description="默认值") description: Optional[str] = Field(None, description="参数说明") options: Optional[Dict[str, Any]] = Field(None, description="选项配置,用于下拉选择、单选、多选类型") validation_rules: Optional[Dict[str, Any]] = Field(None, description="验证规则") class TaskInputParamsInput(BaseModel): """任务输入参数添加/更新模型""" params: List[TaskInputParamItem] = Field(..., description="输入参数列表") # 任务实例状态枚举 class TaskInstanceStatus(str, Enum): """任务实例状态枚举""" DRAFT = "draft" # 草稿 PUBLISHED = "published" # 已发布 RUNNING = "running" # 运行中 COMPLETED = "completed" # 已完成 FAILED = "failed" # 失败 CANCELED = "canceled" # 已取消