#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
测试网页解析功能
"""

import json
import sys
import os

# 添加项目根目录到Python路径
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

from app.core.data_parse.parse_web import process_webpage_with_QWen

def test_single_person():
    """测试单人任命信息提取"""
    print("=" * 50)
    print("测试单人任命信息提取")
    print("=" * 50)
    
    try:
        # 读取单人任命文件
        with open('新任命单人-markdown格式.md', 'r', encoding='utf-8') as f:
            single_person_content = f.read()
        
        print("开始解析单人任命信息...")
        result = process_webpage_with_QWen(single_person_content, "2025-01-15")
        
        print("解析结果:")
        print(json.dumps(result, ensure_ascii=False, indent=2))
        
        # 验证结果
        if isinstance(result, list) and len(result) > 0:
            person = result[0]
            print(f"\n提取的人员信息:")
            print(f"中文姓名: {person.get('name_zh', 'N/A')}")
            print(f"英文姓名: {person.get('name_en', 'N/A')}")
            print(f"中文职位: {person.get('title_zh', 'N/A')}")
            print(f"英文职位: {person.get('title_en', 'N/A')}")
            print(f"中文酒店: {person.get('hotel_zh', 'N/A')}")
            print(f"英文酒店: {person.get('hotel_en', 'N/A')}")
            print(f"品牌组合: {person.get('brand_group', 'N/A')}")
            print(f"照片链接: {person.get('pic_url', 'N/A')}")
            print(f"职业轨迹: {len(person.get('career_path', []))} 条记录")
        else:
            print("❌ 解析失败：返回结果格式不正确")
            
    except Exception as e:
        print(f"❌ 单人测试失败: {str(e)}")

def test_multiple_persons():
    """测试多人任命信息提取"""
    print("\n" + "=" * 50)
    print("测试多人任命信息提取")
    print("=" * 50)
    
    try:
        # 读取多人任命文件
        with open('新任命多人-markdown格式.md', 'r', encoding='utf-8') as f:
            multiple_persons_content = f.read()
        
        print("开始解析多人任命信息...")
        result = process_webpage_with_QWen(multiple_persons_content, "2025-01-15")
        
        print("解析结果:")
        print(json.dumps(result, ensure_ascii=False, indent=2))
        
        # 验证结果
        if isinstance(result, list):
            print(f"\n✅ 成功提取 {len(result)} 个人员信息:")
            for i, person in enumerate(result, 1):
                print(f"\n第 {i} 个人员:")
                print(f"  中文姓名: {person.get('name_zh', 'N/A')}")
                print(f"  英文姓名: {person.get('name_en', 'N/A')}")
                print(f"  中文职位: {person.get('title_zh', 'N/A')}")
                print(f"  英文职位: {person.get('title_en', 'N/A')}")
                print(f"  中文酒店: {person.get('hotel_zh', 'N/A')}")
                print(f"  英文酒店: {person.get('hotel_en', 'N/A')}")
                print(f"  品牌组合: {person.get('brand_group', 'N/A')}")
                print(f"  照片链接: {person.get('pic_url', 'N/A')}")
                print(f"  职业轨迹: {len(person.get('career_path', []))} 条记录")
        else:
            print("❌ 解析失败：返回结果格式不正确")
            
    except Exception as e:
        print(f"❌ 多人测试失败: {str(e)}")

def test_field_validation():
    """测试字段验证"""
    print("\n" + "=" * 50)
    print("字段验证测试")
    print("=" * 50)
    
    # 测试简单的文本
    test_content = """
![照片](https://example.com/photo.jpg)

**张三先生**
**Mr. Zhang San**

北京万豪酒店
总经理

张三先生拥有15年酒店管理经验...
"""
    
    try:
        print("测试简单文本解析...")
        result = process_webpage_with_QWen(test_content, "2025-01-15")
        
        if isinstance(result, list) and len(result) > 0:
            person = result[0]
            required_fields = ['name_zh', 'name_en', 'title_zh', 'title_en', 
                             'hotel_zh', 'hotel_en', 'brand_group', 'career_path', 'pic_url']
            
            print("字段完整性检查:")
            all_fields_present = True
            for field in required_fields:
                if field in person:
                    print(f"  ✅ {field}: {person[field]}")
                else:
                    print(f"  ❌ {field}: 缺失")
                    all_fields_present = False
            
            if all_fields_present:
                print("\n✅ 所有必要字段都存在")
            else:
                print("\n❌ 部分字段缺失")
        else:
            print("❌ 解析失败")
            
    except Exception as e:
        print(f"❌ 字段验证测试失败: {str(e)}")

if __name__ == "__main__":
    print("网页解析功能测试")
    print("确保已设置 QWEN_API_KEY 环境变量")
    
    # 检查API密钥
    if not os.environ.get('QWEN_API_KEY'):
        print("⚠️  警告: 未设置 QWEN_API_KEY 环境变量")
    
    # 检查测试文件是否存在
    if not os.path.exists('新任命单人-markdown格式.md'):
        print("❌ 测试文件 '新任命单人-markdown格式.md' 不存在")
        sys.exit(1)
    
    if not os.path.exists('新任命多人-markdown格式.md'):
        print("❌ 测试文件 '新任命多人-markdown格式.md' 不存在")
        sys.exit(1)
    
    # 运行测试
    test_single_person()
    test_multiple_persons()
    test_field_validation()
    
    print("\n" + "=" * 50)
    print("测试完成")
    print("=" * 50) 