#!/usr/bin/env python3
"""
测试output变量提取逻辑
"""
import sys
sys.path.insert(0, 'backend')

from app.services.workflow_engine import WorkflowEngine

# 模拟llm-format节点的输入数据
input_data = {
    'right': {
        'right': {
            'right': '是的，我记得！根据我们之前的对话，你告诉我你的名字叫"老七"。我会在本次对话中记住这个名字，以便更好地为你提供帮助。如果你希望我用其他称呼，也可以随时告诉我。',
            'query': '你还记得我的名字吗？'
        },
        'memory': {
            'conversation_history': [],
            'user_profile': {},
            'context': {}
        },
        'query': '你还记得我的名字吗？'
    },
    'memory': {
        'conversation_history': [],
        'user_profile': {},
        'context': {}
    },
    'query': '你还记得我的名字吗？'
}

# 创建WorkflowEngine实例
engine = WorkflowEngine("test", {"nodes": [], "edges": []})

# 测试_get_nested_value方法
print("测试_get_nested_value方法:")
value1 = engine._get_nested_value(input_data, 'output')
print(f"  _get_nested_value(input_data, 'output'): {value1}")

# 测试output变量提取逻辑
print("\n测试output变量提取逻辑:")
right_value = input_data.get('right')
print(f"  right_value类型: {type(right_value)}")
print(f"  right_value: {str(right_value)[:100]}")

if right_value is not None:
    if isinstance(right_value, str):
        value = right_value
        print(f"  ✅ 从right字段（字符串）提取: {value[:100]}")
    elif isinstance(right_value, dict):
        current = right_value
        depth = 0
        while isinstance(current, dict) and depth < 10:
            if 'right' in current:
                current = current['right']
                depth += 1
                if isinstance(current, str):
                    value = current
                    print(f"  ✅ 从right字段（嵌套{depth}层）提取: {value[:100]}")
                    break
            else:
                break
        else:
            print(f"  ❌ 无法提取字符串值")

print("\n测试完成")
