#!/usr/bin/env python3
"""
测试用户指出的缺失货号
"""

import sys
import os

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

from app.utils.text_parser import ProductCodeExtractor

def test_missing_codes():
    """测试用户指出的缺失货号"""
    extractor = ProductCodeExtractor()
    
    test_cases = [
        {
            "name": "现货 Anine Bing 小logo字母 鸭舌帽9084  小王国",
            "expected": "9084",
            "brand": "Anine Bing"
        },
        {
            "name": "ArcTeryx始祖鸟 男款Cormac小鸟标透气防晒速干短袖T恤9718代购M",
            "expected": "9718", 
            "brand": "ArcTeryx"
        },
        {
            "name": "Ralph Lauren 拉夫劳伦男士logo刺绣拉链夹克秋冬防风冲锋衣710548506002/003 卡其色 S",
            "expected": "710548506002/003",
            "brand": "Ralph Lauren"
        },
        {
            "name": "现货 MaxMara Weekend纯棉字母数字印花短袖T恤 Teiera 小王国",
            "expected": "Teiera",
            "brand": "MaxMara"
        },
        {
            "name": "CANADA GOOSE/加拿大鹅 男款徽标马甲2054M 代购 CA 4.29 MC",
            "expected": "2054M",
            "brand": "CANADA GOOSE"
        }
    ]
    
    print("=== 测试缺失的货号 ===")
    
    for i, case in enumerate(test_cases, 1):
        print(f"\n测试 {i}: {case['name']}")
        print(f"期望货号: {case['expected']}")
        print(f"品牌: {case['brand']}")
        
        # 提取货号
        current_code = extractor.extract_product_code(case['name'], case['brand'])
        print(f"实际货号: {current_code}")
        
        if current_code == case['expected']:
            print("✅ 测试通过：货号提取正确")
        else:
            print("❌ 测试失败！")
            print(f"  - 期望: {case['expected']}")
            print(f"  - 实际: {current_code}")
            
            # 调试处理过程
            print("\n=== 调试过程 ===")
            bracket_result = extractor.bracket_processor.process_bracket_content(case['name'])
            print(f"方括号处理: '{bracket_result['cleaned_text']}'")
            
            clean_name = extractor._remove_brand(bracket_result["cleaned_text"], case['brand'])
            print(f"品牌移除后: '{clean_name}'")
            
            # 手动测试模式匹配
            import re
            
            # 测试4位数字模式
            four_digit_match = re.search(r'(?<!\d)\d{4}(?!\d)', clean_name)
            if four_digit_match:
                print(f"4位数字匹配: {four_digit_match.group()}")
            
            # 测试字母+数字模式
            letter_digit_match = re.search(r'[A-Z]+\d+[A-Z]*', clean_name)
            if letter_digit_match:
                print(f"字母数字匹配: {letter_digit_match.group()}")
            
            # 测试长数字/分隔格式
            long_digit_match = re.search(r'\d{10,}(?:[/]\d+)*', clean_name)
            if long_digit_match:
                print(f"长数字/分隔匹配: {long_digit_match.group()}")

if __name__ == "__main__":
    test_missing_codes()