#!/usr/bin/env python3
"""
测试Alexander McQueen品牌货号格式：1段或几段数字，中间空格分隔
"""

import sys
import os

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

from app.utils.text_parser import ProductCodeExtractor

def test_mcqueen_format():
    """测试Alexander McQueen货号格式"""
    extractor = ProductCodeExtractor()
    
    test_cases = [
        # 用户示例
        {
            'name': "Alexander McQueen 女款黑色系带马丁靴586402 1000代购7.30",
            'expected': "586402 1000",
            'format': "两段数字+空格"
        },
        # 其他可能的格式
        {
            'name': "Alexander McQueen 商品名称123456代购7.30",
            'expected': "123456",
            'format': "单段数字"
        },
        {
            'name': "Alexander McQueen 商品名称123 456 789代购7.30",
            'expected': "123 456 789",
            'format': "三段数字+空格"
        }
    ]
    
    print("=== Alexander McQueen货号格式测试 ===")
    print("规则：1段或几段数字，中间空格分隔，不包含日期")
    print()
    
    for i, case in enumerate(test_cases, 1):
        print(f"测试 {i}: [{case['format']}]")
        print(f"商品名称: {case['name']}")
        print(f"期望货号: {case['expected']}")
        
        product_code = extractor.extract_product_code(case['name'], "Alexander McQueen")
        print(f"实际货号: {product_code}")
        
        if product_code == case['expected']:
            print("✅ 匹配成功")
        else:
            print("❌ 不匹配！")
            
            # 详细调试
            print("\n=== 详细调试 ===")
            import re
            
            # 测试不同的模式
            patterns_to_test = [
                r'\d{6}\s+\d{4}',               # 6位数字+空格+4位数字
                r'\d{3,}\s+\d{3,}',             # 至少3位数字+空格+至少3位数字
                r'\d+\s+\d+',                   # 数字+空格+数字
                r'\d+(?:\s+\d+)+',              # 数字+一个或多个(空格+数字)
                r'(?<!\d\.)\d{3,}(?:\s+\d{3,})+(?!\.\d)', # 避免日期格式
            ]
            
            clean_name = case['name']
            for j, pattern in enumerate(patterns_to_test, 1):
                matches = re.findall(pattern, clean_name)
                print(f"模式 {j} ({pattern}): {matches}")
        print()

if __name__ == "__main__":
    test_mcqueen_format()