ss
This commit is contained in:
108
debug_switch_node.py
Normal file
108
debug_switch_node.py
Normal file
@@ -0,0 +1,108 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
调试Switch节点的详细脚本
|
||||
"""
|
||||
import sys
|
||||
import os
|
||||
import json
|
||||
|
||||
sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'backend'))
|
||||
|
||||
from app.core.database import SessionLocal
|
||||
from app.models.execution import Execution
|
||||
from app.models.agent import Agent
|
||||
|
||||
def main():
|
||||
db = SessionLocal()
|
||||
try:
|
||||
# 获取最近的执行记录
|
||||
execution = db.query(Execution).filter(
|
||||
Execution.agent_id.isnot(None)
|
||||
).order_by(Execution.created_at.desc()).first()
|
||||
|
||||
if not execution:
|
||||
print("❌ 没有找到执行记录")
|
||||
return
|
||||
|
||||
print(f"执行ID: {execution.id}")
|
||||
print(f"状态: {execution.status}")
|
||||
print()
|
||||
|
||||
# 获取Agent配置
|
||||
agent = db.query(Agent).filter(Agent.id == execution.agent_id).first()
|
||||
if not agent:
|
||||
print("❌ 没有找到Agent")
|
||||
return
|
||||
|
||||
workflow_config = agent.workflow_config
|
||||
nodes = workflow_config.get('nodes', [])
|
||||
edges = workflow_config.get('edges', [])
|
||||
|
||||
# 找到Switch节点
|
||||
switch_node = None
|
||||
for node in nodes:
|
||||
if node.get('type') == 'switch':
|
||||
switch_node = node
|
||||
break
|
||||
|
||||
if not switch_node:
|
||||
print("❌ 没有找到Switch节点")
|
||||
return
|
||||
|
||||
print("=" * 80)
|
||||
print("Switch节点配置:")
|
||||
print("=" * 80)
|
||||
print(f"节点ID: {switch_node['id']}")
|
||||
print(f"字段: {switch_node['data'].get('field')}")
|
||||
print(f"Cases: {json.dumps(switch_node['data'].get('cases', {}), ensure_ascii=False, indent=2)}")
|
||||
print(f"Default: {switch_node['data'].get('default')}")
|
||||
print()
|
||||
|
||||
# 找到从Switch节点出发的边
|
||||
print("=" * 80)
|
||||
print("从Switch节点出发的边:")
|
||||
print("=" * 80)
|
||||
switch_edges = [e for e in edges if e.get('source') == switch_node['id']]
|
||||
for edge in switch_edges:
|
||||
print(f"边ID: {edge.get('id')}")
|
||||
print(f" sourceHandle: {edge.get('sourceHandle')}")
|
||||
print(f" target: {edge.get('target')}")
|
||||
print()
|
||||
|
||||
# 查看执行结果
|
||||
print("=" * 80)
|
||||
print("执行结果中的节点输出:")
|
||||
print("=" * 80)
|
||||
if execution.output_data and 'node_results' in execution.output_data:
|
||||
node_results = execution.output_data['node_results']
|
||||
if switch_node['id'] in node_results:
|
||||
switch_result = node_results[switch_node['id']]
|
||||
print(f"Switch节点输出: {json.dumps(switch_result, ensure_ascii=False, indent=2)}")
|
||||
else:
|
||||
print("❌ Switch节点没有输出结果")
|
||||
else:
|
||||
print("❌ 没有找到节点执行结果")
|
||||
|
||||
# 检查哪些分支节点执行了
|
||||
print()
|
||||
print("=" * 80)
|
||||
print("执行了的分支节点:")
|
||||
print("=" * 80)
|
||||
if execution.output_data and 'node_results' in execution.output_data:
|
||||
node_results = execution.output_data['node_results']
|
||||
for edge in switch_edges:
|
||||
target_id = edge.get('target')
|
||||
if target_id in node_results:
|
||||
print(f"✅ {target_id} (sourceHandle: {edge.get('sourceHandle')})")
|
||||
else:
|
||||
print(f"❌ {target_id} (sourceHandle: {edge.get('sourceHandle')}) - 未执行")
|
||||
|
||||
except Exception as e:
|
||||
print(f"❌ 错误: {str(e)}")
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
finally:
|
||||
db.close()
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user