Files
FastapiAdmin/backend/app/plugin/module_task/node/schema.py
T
zhangtao 1f7e9e8d67 feat(workflow): 重构工作流模块并迁移到module_task目录
- 将工作流相关模块从module_application迁移到module_task目录
- 新增节点类型模型、服务和API接口
- 添加动态节点组件和节点操作工具函数
- 更新前端工作流编辑器支持动态节点配置
- 移除旧的module_application工作流相关文件
- 升级element-plus到2.11.0版本
- 优化性能工具函数(防抖和节流)
- 清理不再使用的依赖项(langchain-anthropic和langchain-mcp-adapters)
2026-02-17 03:24:53 +08:00

66 lines
3.1 KiB
Python

from dataclasses import dataclass, field
from pydantic import BaseModel, ConfigDict, Field
from app.common.enums import QueueEnum
from app.core.base_schema import BaseSchema, UserBySchema
class NodeCreateSchema(BaseModel):
"""创建节点模型"""
name: str = Field(..., description="节点类型名称", min_length=2, max_length=64)
code: str = Field(..., description="节点类型编码", min_length=2, max_length=32)
category: str = Field(default="action", description="节点分类(trigger/action/condition/control/integration/custom)")
config_schema: dict = Field(default_factory=dict, description="配置表单Schema(JSON Schema)")
input_schema: dict | None = Field(default=None, description="输入数据Schema")
output_schema: dict | None = Field(default=None, description="输出数据Schema")
handler: str = Field(default="", description="处理器路径(如: app.workflow.handlers.custom_handler)")
meta_data: dict | None = Field(default=None, description="元数据")
status: str = Field(default="0", description="是否启用(0:启用 1:禁用)")
description: str | None = Field(default=None, description="描述")
class NodeUpdateSchema(BaseModel):
"""更新节点模型"""
name: str | None = Field(default=None, description="节点类型名称", min_length=2, max_length=64)
code: str | None = Field(default=None, description="节点类型编码", min_length=2, max_length=32)
category: str | None = Field(default=None, description="节点分类")
config_schema: dict | None = Field(default=None, description="配置表单Schema")
input_schema: dict | None = Field(default=None, description="输入数据Schema")
output_schema: dict | None = Field(default=None, description="输出数据Schema")
handler: str | None = Field(default=None, description="处理器路径")
meta_data: dict | None = Field(default=None, description="元数据")
status: str | None = Field(default=None, description="是否启用(0:启用 1:禁用)")
description: str | None = Field(default=None, description="描述")
class NodeOutSchema(NodeCreateSchema, BaseSchema, UserBySchema):
"""节点响应模型"""
model_config = ConfigDict(from_attributes=True)
@dataclass
class NodeQueryParam:
"""节点查询参数"""
name: str | None = field(default=None, metadata={"description": "节点名称"})
code: str | None = field(default=None, metadata={"description": "节点编码"})
category: str | None = field(default=None, metadata={"description": "节点分类"})
status: str | None = field(default=None, metadata={"description": "是否启用(0:启用 1:禁用)"})
def to_search_dict(self) -> dict:
"""转换为搜索字典"""
search_dict = {}
if self.name:
search_dict["name"] = (QueueEnum.like.value, self.name)
if self.code:
search_dict["code"] = (QueueEnum.like.value, self.code)
if self.category:
search_dict["category"] = (QueueEnum.eq.value, self.category)
if self.status:
search_dict["status"] = (QueueEnum.eq.value, self.status)
return search_dict