fix(workflow): require end node only in main graph during runtime validation

This commit is contained in:
mengyonghao
2026-01-06 10:46:55 +08:00
parent 0300abc454
commit 049642ae48

View File

@@ -91,6 +91,7 @@ class WorkflowValidator:
"""验证工作流配置 """验证工作流配置
Args: Args:
publish: 发布验证标识
workflow_config: 工作流配置字典或 WorkflowConfig Pydantic 模型 workflow_config: 工作流配置字典或 WorkflowConfig Pydantic 模型
Returns: Returns:
@@ -114,7 +115,7 @@ class WorkflowValidator:
graphs = cls.get_subgraph(workflow_config) graphs = cls.get_subgraph(workflow_config)
logger.info(graphs) logger.info(graphs)
for graph in graphs: for index, graph in enumerate(graphs):
nodes = graph.get("nodes", []) nodes = graph.get("nodes", [])
edges = graph.get("edges", []) edges = graph.get("edges", [])
variables = graph.get("variables", []) variables = graph.get("variables", [])
@@ -125,10 +126,11 @@ class WorkflowValidator:
elif len(start_nodes) > 1: elif len(start_nodes) > 1:
errors.append(f"工作流只能有一个 start 节点,当前有 {len(start_nodes)}") errors.append(f"工作流只能有一个 start 节点,当前有 {len(start_nodes)}")
# 2. 验证 end 节点(至少一个) if index == len(graphs) - 1:
end_nodes = [n for n in nodes if n.get("type") == NodeType.END] # 2. 验证 主图end 节点(至少一个)
if len(end_nodes) == 0: end_nodes = [n for n in nodes if n.get("type") == NodeType.END]
errors.append("工作流必须至少有一个 end 节点") if len(end_nodes) == 0:
errors.append("工作流必须至少有一个 end 节点")
# 3. 验证节点 ID 唯一性 # 3. 验证节点 ID 唯一性
node_ids = [n.get("id") for n in nodes] node_ids = [n.get("id") for n in nodes]