#!/usr/bin/env python3
"""
测试Pale Pink解析问题
"""

import sys
import os
sys.path.append(os.path.dirname(os.path.abspath(__file__)))

from app.utils.text_parser import AttributeExtractor
from app.utils.color_processor import process_color_attribute

def test_pale_pink_parsing():
    """测试Pale Pink解析"""
    
    print("=== 测试Pale Pink解析 ===\n")
    
    extractor = AttributeExtractor()
    test_text = "Pale Pink_L"
    
    print(f"测试文本: {test_text}")
    
    # 1. 测试原始提取
    raw_color = extractor._extract_color(test_text)
    raw_size = extractor._extract_size(test_text)
    
    print(f"原始颜色提取: {raw_color}")
    print(f"原始尺寸提取: {raw_size}")
    
    # 2. 测试颜色处理的详细步骤
    print(f"\n颜色处理详细步骤:")
    from app.utils.color_processor import ColorProcessor
    processor = ColorProcessor()
    
    print(f"是否品牌特色颜色: {raw_color.upper() in processor.brand_specific_colors if raw_color else False}")
    print(f"是否颜色代码: {processor._is_color_code(raw_color) if raw_color else False}")
    print(f"是否中文颜色: {processor._is_chinese_color(raw_color) if raw_color else False}")
    print(f"是否英文颜色: {processor._is_english_color(raw_color) if raw_color else False}")
    
    processed_color = process_color_attribute(raw_color) if raw_color else None
    print(f"颜色处理后: {processed_color}")
    
    # 3. 检查颜色别名映射
    print(f"\n颜色别名映射检查:")
    color_aliases = extractor.case_insensitive_colors
    pale_pink_lower = "pale pink"
    
    print(f"是否有 '{pale_pink_lower}' 映射: {pale_pink_lower in color_aliases}")
    if pale_pink_lower in color_aliases:
        print(f"映射到: {color_aliases[pale_pink_lower]}")
    
    # 检查部分匹配
    print(f"\n部分匹配检查:")
    print(f"颜色别名总数: {len(color_aliases)}")
    for alias, canonical in color_aliases.items():
        if "pink" in alias.lower():
            print(f"  {alias} -> {canonical}")
    
    # 4. 完整属性提取测试
    print(f"\n完整属性提取:")
    attributes = extractor.extract_attributes(test_text)
    print(f"提取结果: {attributes}")
    
    # 5. 检查 _normalize_color 方法
    print(f"\n_normalize_color 测试:")
    normalized = extractor._normalize_color(raw_color) if raw_color else None
    print(f"标准化结果: {normalized}")

if __name__ == "__main__":
    test_pale_pink_parsing()