93 lines
2.6 KiB
Python
93 lines
2.6 KiB
Python
|
#!/usr/bin/env python
|
||
|
# -*- coding: utf-8 -*-
|
||
|
|
||
|
"""
|
||
|
API模型模块
|
||
|
包含API请求和响应的数据模型
|
||
|
"""
|
||
|
|
||
|
from typing import Dict, Any, List, Optional, Literal
|
||
|
from pydantic import BaseModel, Field, validator
|
||
|
from config.component_config import ComponentDiscovery
|
||
|
from config.task_config import TASK_TYPE_CONFIG, TaskType, TaskStatus
|
||
|
from enum import Enum
|
||
|
|
||
|
# 获取所有任务类型的key值
|
||
|
TASK_TYPE_KEYS = list(TASK_TYPE_CONFIG.keys())
|
||
|
|
||
|
# 排序字段枚举
|
||
|
class SortField(str, Enum):
|
||
|
CREATED_AT = "created_at"
|
||
|
UPDATED_AT = "updated_at"
|
||
|
NAME = "name"
|
||
|
|
||
|
# 排序方式枚举
|
||
|
class SortOrder(str, Enum):
|
||
|
ASC = "asc"
|
||
|
DESC = "desc"
|
||
|
|
||
|
# 通用响应模型
|
||
|
class ApiResponse(BaseModel):
|
||
|
code: int = Field(..., description="状态码")
|
||
|
message: str = Field(..., description="消息")
|
||
|
data: Optional[dict] = Field(None, description="数据")
|
||
|
|
||
|
# 任务相关模型
|
||
|
class TaskInput(BaseModel):
|
||
|
name: str = Field(..., description="任务名称")
|
||
|
task_type: TaskType = Field(
|
||
|
...,
|
||
|
description="任务类型,可选值为:" + ", ".join([t.value for t in TaskType]),
|
||
|
example=TaskType.NORMAL
|
||
|
)
|
||
|
|
||
|
class TaskBatchInput(BaseModel):
|
||
|
tasks: List[TaskInput]
|
||
|
|
||
|
class TaskIdList(BaseModel):
|
||
|
task_ids: List[str]
|
||
|
|
||
|
class TaskTypeInfo(BaseModel):
|
||
|
key: str
|
||
|
name: str
|
||
|
description: str
|
||
|
|
||
|
# 工作流相关模型
|
||
|
class WorkflowInput(BaseModel):
|
||
|
name: str
|
||
|
workflow_type: Optional[str] = "normal"
|
||
|
description: Optional[str] = ""
|
||
|
blocks: Optional[List[Dict[str, Any]]] = []
|
||
|
variables: Optional[Dict[str, Any]] = {}
|
||
|
schedule: Optional[Dict[str, Any]] = None
|
||
|
|
||
|
class WorkflowUpdateInput(BaseModel):
|
||
|
name: Optional[str] = None
|
||
|
description: Optional[str] = None
|
||
|
blocks: Optional[List[Dict[str, Any]]] = None
|
||
|
variables: Optional[Dict[str, Any]] = None
|
||
|
schedule: Optional[Dict[str, Any]] = None
|
||
|
|
||
|
class WorkflowExecuteInput(BaseModel):
|
||
|
task_inputs: Optional[Dict[str, Any]] = None
|
||
|
|
||
|
class WorkflowImportInput(BaseModel):
|
||
|
workflow_json: str
|
||
|
|
||
|
# 组件相关模型
|
||
|
class ComponentDiscoverInput(BaseModel):
|
||
|
package_name: Optional[str] = ComponentDiscovery.DEFAULT_PACKAGE
|
||
|
|
||
|
# 任务编辑相关模型
|
||
|
class TaskUpdateInput(BaseModel):
|
||
|
name: Optional[str] = None
|
||
|
description: Optional[str] = None
|
||
|
task_type: Optional[TaskType] = None
|
||
|
blocks: Optional[List[Dict[str, Any]]] = None
|
||
|
variables: Optional[Dict[str, Any]] = None
|
||
|
schedule: Optional[Dict[str, Any]] = None
|
||
|
|
||
|
class TaskEditInput(BaseModel):
|
||
|
task_id: str
|
||
|
blocks: List[Dict[str, Any]]
|
||
|
variables: Optional[Dict[str, Any]] = {}
|