#!/usr/bin/env python3
"""
测试年龄格式化和日期格式化功能
"""

import os
import sys
import logging
from pathlib import Path

# 添加项目根目录到Python路径
project_root = Path(__file__).parent
sys.path.insert(0, str(project_root))

# 配置日志
logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s - %(levelname)s - %(message)s'
)

def test_formatting_functions():
    """测试格式化函数"""
    try:
        # 导入函数
        from app.core.data_parse.parse_resume import format_date_to_yyyy_mm_dd
        
        print("开始测试日期格式化功能...")
        
        # 测试各种日期格式
        test_dates = [
            "2023.11",
            "2023-11", 
            "2023年11月",
            "2023/11",
            "202311",
            "2023.11.01",
            "2023-11-01",
            "2023年11月1日",
            "2023/11/01",
            "2009.08",
            "2013.11",
            "2017.04",
            "2019.12",
            "无效日期",
            ""
        ]
        
        print("\n=== 日期格式化测试 ===")
        for test_date in test_dates:
            formatted = format_date_to_yyyy_mm_dd(test_date)
            print(f"原始: '{test_date}' -> 格式化: '{formatted}'")
        
        return True
        
    except Exception as e:
        print(f"测试失败: {str(e)}")
        import traceback
        traceback.print_exc()
        return False

def test_age_formatting():
    """测试年龄格式化功能"""
    try:
        print("\n开始测试年龄格式化功能...")
        
        # 测试年龄字段映射
        test_ages = [
            "37岁",
            "25岁",
            "42岁",
            "30",
            "年龄不详",
            ""
        ]
        
        print("\n=== 年龄格式化测试 ===")
        for test_age in test_ages:
            import re
            age_match = re.search(r'(\d+)', str(test_age))
            if age_match:
                formatted_age = age_match.group(1)
                print(f"原始: '{test_age}' -> 格式化: '{formatted_age}'")
            else:
                print(f"原始: '{test_age}' -> 格式化: ''")
        
        return True
        
    except Exception as e:
        print(f"测试失败: {str(e)}")
        import traceback
        traceback.print_exc()
        return False

def test_full_resume_parsing():
    """测试完整的简历解析功能"""
    try:
        # 导入函数
        from app.core.data_parse.parse_resume import parse_resume_with_qwen
        
        # 测试文件路径
        test_file = "方全.pdf"
        
        # 检查文件是否存在
        if not os.path.exists(test_file):
            print(f"错误: 测试文件 {test_file} 不存在")
            return False
        
        print(f"\n开始测试完整简历解析功能...")
        print(f"测试文件: {test_file}")
        
        # 调用函数
        result = parse_resume_with_qwen(test_file)
        
        # 输出格式化后的结果
        print("\n=== 格式化后的解析结果 ===")
        print(f"姓名(中文): {result.get('name_zh', 'N/A')}")
        print(f"年龄: {result.get('age', 'N/A')}")
        
        # 输出职业轨迹
        career_path = result.get('career_path', [])
        if career_path:
            print(f"\n职业轨迹 (共{len(career_path)}条):")
            for i, career in enumerate(career_path, 1):
                print(f"  {i}. 日期: {career.get('date', 'N/A')}")
                print(f"     公司: {career.get('hotel_zh', 'N/A')}")
                print(f"     职位: {career.get('title_zh', 'N/A')}")
        else:
            print("\n职业轨迹: 无")
        
        print("\n=== 完整测试完成 ===")
        return True
        
    except Exception as e:
        print(f"测试失败: {str(e)}")
        import traceback
        traceback.print_exc()
        return False

if __name__ == "__main__":
    print("=" * 50)
    print("测试格式化功能")
    print("=" * 50)
    
    # 测试日期格式化
    success1 = test_formatting_functions()
    
    # 测试年龄格式化
    success2 = test_age_formatting()
    
    # 测试完整简历解析
    success3 = test_full_resume_parsing()
    
    print("\n" + "=" * 50)
    print("测试总结:")
    print(f"日期格式化测试: {'✓ 成功' if success1 else '✗ 失败'}")
    print(f"年龄格式化测试: {'✓ 成功' if success2 else '✗ 失败'}")
    print(f"完整简历解析测试: {'✓ 成功' if success3 else '✗ 失败'}")
    print("=" * 50) 