#!/usr/bin/env python3
"""
测试颜色/尺寸混合格式的解析修复
"""

import sys
import os
from datetime import datetime

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

from app.utils.text_parser import AttributeExtractor


def test_color_size_parsing():
    """测试颜色尺寸解析修复"""
    print("=== 测试颜色/尺寸混合格式解析修复 ===\n")
    
    extractor = AttributeExtractor()
    
    # 测试用例
    test_cases = [
        # 问题案例
        {
            "text": "Amethyst/Silver_L",
            "expected_color": "Amethyst/Silver",
            "expected_size": "L"
        },
        {
            "text": "Ecru_12[胸围约112cm]",
            "expected_color": "Ecru",
            "expected_size": "12"
        },
        
        # 其他类似案例
        {
            "text": "Soft Blue/Silver_M",
            "expected_color": "Soft Blue/Silver",
            "expected_size": "M"
        },
        {
            "text": "NVBW_L[胸围约116]",
            "expected_color": "NVBW",
            "expected_size": "L"
        },
        {
            "text": "白色LA_7/37",
            "expected_color": "白色",  # 根据现有数据，LA不被认为是颜色的一部分
            "expected_size": "7/37"   # 这个需要进一步分析
        },
        {
            "text": "深色_S",
            "expected_color": "深色",
            "expected_size": "S"
        },
        {
            "text": "黑色_36",
            "expected_color": "黑色",
            "expected_size": "36"
        },
        
        # 复杂案例
        {
            "text": "Deep Navy/Gold_42[EU]",
            "expected_color": "Deep Navy/Gold",
            "expected_size": "42"
        },
        {
            "text": "Rose Gold/Silver_S",
            "expected_color": "Rose Gold/Silver",
            "expected_size": "S"
        },
        {
            "text": "Multi Color_10",
            "expected_color": "Multi Color",
            "expected_size": "10"
        }
    ]
    
    print("测试结果:")
    print("序号 | 输入文本 | 期望颜色 | 实际颜色 | 期望尺寸 | 实际尺寸 | 状态")
    print("-" * 100)
    
    success_count = 0
    for i, case in enumerate(test_cases, 1):
        text = case["text"]
        expected_color = case["expected_color"]
        expected_size = case["expected_size"]
        
        # 提取颜色和尺寸
        actual_color = extractor._extract_color(text)
        actual_size = extractor._extract_size(text)
        
        # 检查结果
        color_match = actual_color == expected_color
        size_match = actual_size == expected_size
        overall_match = color_match and size_match
        
        if overall_match:
            success_count += 1
            status = "✓"
        else:
            status = "✗"
        
        print(f"{i:2d}   | {text:20} | {expected_color:15} | {actual_color or 'None':15} | {expected_size:8} | {actual_size or 'None':8} | {status}")
        
        if not overall_match:
            if not color_match:
                print(f"     颜色不匹配: 期望 '{expected_color}', 实际 '{actual_color}'")
            if not size_match:
                print(f"     尺寸不匹配: 期望 '{expected_size}', 实际 '{actual_size}'")
    
    print(f"\n测试结果总结:")
    print(f"总测试用例: {len(test_cases)}")
    print(f"成功解析: {success_count}")
    print(f"失败解析: {len(test_cases) - success_count}")
    print(f"成功率: {success_count/len(test_cases)*100:.1f}%")
    
    # 额外测试：验证完整的属性提取
    print(f"\n=== 完整属性提取测试 ===")
    full_test_cases = [
        "ST JOHN 香芋紫蕾丝花朵 半袖上衣 K92KQ01 代购8.16 LA|Amethyst/Silver_L",
        "ST JOHN 女款米白色 流苏细节 小香风 上衣K62GC22代购8.16LA|Ecru_12[胸围约112cm]"
    ]
    
    for case in full_test_cases:
        parts = case.split('|')
        product_name = parts[0]
        sales_attr = parts[1]
        
        print(f"\n商品名称: {product_name}")
        print(f"销售属性: {sales_attr}")
        
        color = extractor._extract_color(sales_attr)
        size = extractor._extract_size(sales_attr)
        
        print(f"提取颜色: {color}")
        print(f"提取尺寸: {size}")


if __name__ == "__main__":
    test_color_size_parsing()