#!/usr/bin/env python3
"""
测试特定品牌货号和颜色识别问题：
1. Polo Ralph Lauren 纯数字货号
2. Jil Sander 空格分隔字母数字货号  
3. POPPY 626 颜色误识别问题
"""

import sys
import os

# 添加项目根目录到路径
sys.path.insert(0, os.path.join(os.path.dirname(__file__)))

from app.utils.text_parser import ProductCodeExtractor

def test_polo_jil_poppy():
    """测试特定品牌的货号和颜色识别"""
    extractor = ProductCodeExtractor()
    
    test_cases = [
        # Polo Ralph Lauren 纯数字货号
        {
            'name': "Polo Ralph Lauren 大童 棉质 LOGO马标 长袖T 32384 代购MC",
            'expected_code': "32384",
            'expected_color': None,
            'brand': "Polo Ralph Lauren",
            'description': "Polo Ralph Lauren 5位纯数字货号"
        },
        
        # Jil Sander 空格分隔字母数字货号
        {
            'name': "Jil Sander 女款 带帽 面包羽绒服夹克 J40AF0131 J70122代购MC",
            'expected_code': "J40AF0131 J70122",
            'expected_color': None,
            'brand': "Jil Sander", 
            'description': "Jil Sander 空格分隔字母数字货号"
        },
        
        # POPPY 颜色测试 - 应该被识别为颜色而不是货号
        {
            'name': "某品牌商品名称 POPPY 626 代购MC",
            'expected_code': None,  # POPPY应该被识别为颜色，626可能是货号
            'expected_color': "POPPY",  # POPPY应该是颜色
            'brand': None,
            'description': "POPPY应该被识别为颜色"
        },
        
        # 更完整的POPPY测试
        {
            'name': "某品牌女包 款式ABC POPPY 626 代购MC",
            'expected_code': "626",  # 626应该是货号
            'expected_color': "POPPY",  # POPPY应该是颜色
            'brand': None,
            'description': "POPPY颜色与货号分离测试"
        }
    ]
    
    print("=== Polo Ralph Lauren、Jil Sander 和 POPPY 测试 ===")
    print("测试货号提取和颜色识别的准确性")
    print()
    
    for i, case in enumerate(test_cases, 1):
        print(f"测试 {i}: [{case['description']}]")
        print(f"商品名称: {case['name']}")
        print(f"期望货号: {case['expected_code']}")
        print(f"期望颜色: {case['expected_color']}")
        
        # 提取货号
        current_code = extractor.extract_product_code(case['name'], case['brand'])
        print(f"实际货号: {current_code}")
        
        # 暂时跳过颜色提取测试，专注于货号问题
        print(f"实际颜色: [颜色测试暂时跳过]")
        
        # 检查货号结果
        code_correct = current_code == case['expected_code']
        
        if code_correct:
            print("✅ 货号测试通过")
        else:
            print("❌ 货号测试失败！")
            print(f"  - 期望货号: {case['expected_code']}")
            print(f"  - 实际货号: {current_code}")
        print()
    
    print("=== 问题分析 ===")
    print("需要解决的问题：")
    print("1. 确保Polo Ralph Lauren的5位数字货号能被正确识别")
    print("2. 确保Jil Sander的空格分隔字母数字格式能被正确识别")
    print("3. 修复POPPY被误识别为货号的问题，应该识别为颜色")

if __name__ == "__main__":
    test_polo_jil_poppy()