2025-03-17 14:58:05 +08:00

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]] = {}