53 lines
2.5 KiB
Python
53 lines
2.5 KiB
Python
"""
|
|
任务实例相关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" # 已取消 |