#!/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_comprehensive_formats():
    """测试各种货号格式"""
    extractor = ProductCodeExtractor()
    
    test_cases = [
        # HILLY O42格式
        {"name": "小王国Bogner博格纳女款夹克HILLY O42代购8.16", "expected": "HILLY O42", "format": "字母+空格+字母+数字"},
        # Bogner MAGAN格式验证
        {"name": "Bogner博格纳 女款 绿色 连帽棉服夹克 MAGAN 代购8.16", "expected": "MAGAN", "format": "5位纯字母"},
        # 数字连字符格式  
        {"name": "Tory Burch 女款 白色 大浮雕logo 板鞋156540-100代购11.2MC", "expected": "156540-100", "format": "数字-数字连字符"},
        # 长货号格式
        {"name": "小王国 Rag & Bone绿色短款圆领短袖T恤MOSS MAI BOXY TEE8.13", "expected": "MOSS MAI BOXY TEE", "format": "4个大写单词"},
        # Bogner特殊格式
        {"name": "小王国Bogner博格纳女款橘色排骨夹克RHEA2-O代购8.16", "expected": "RHEA2-O", "format": "字母数字-字母"},
        {"name": "小王国Bogner博格纳女款白色滑雪图案短袖T恤DEBRA4 003代购8.16", "expected": "DEBRA4 003", "format": "字母数字+空格+数字"},
        # 最新增的格式
        {"name": "On昂跑 Cloud X 3女款缓震日常训练运动鞋60.98098代购3.12", "expected": "60.98098", "format": "小数点格式"},
        # 之前新增的格式
        {"name": "小王国Bogner博格纳女款黑白拼接冰火系列夹克LESKA 8.16", "expected": "LESKA", "format": "纯大写字母"},
        {"name": "GN现货 Burberry 女款黄色起球设计开衫80776841 小王国", "expected": "80776841", "format": "8位纯数字"},
        
        # 之前支持的格式
        {"name": "Acne Studios中性款字母短袖T恤TSHI000046代购8.18", "expected": "TSHI000046", "format": "字母+数字"},
        {"name": "小王国MaxMara the cube 深蓝色羽绒马甲ASOFT 075代购8.18", "expected": "ASOFT 075", "format": "字母+空格+数字"},
        {"name": "小王国 Acne Studios 中性款 魔术贴小白鞋 Steffey Friend 8.18", "expected": "Steffey Friend", "format": "首字母大写单词"},
        {"name": "小王国Rag & Bone 大圆领 中袖 T恤JACKIE SCOOPNECK 8.13", "expected": "JACKIE SCOOPNECK", "format": "两个大写单词"},
        {"name": "小王国 BUrberry 米色条纹长袖开衫 8084328 美国代购8.14MC", "expected": "8084328", "format": "7位数字"},
        {"name": "现货NANAMICA Hooded Deck Jkt男女机能户外连帽甲板夹克S25FA012", "expected": "S25FA012", "format": "字母数字混合"},
        {"name": "小王国 Rag & Bone 黑色/白色圆领短袖T恤CORE TEE 8.13", "expected": "CORE TEE", "format": "两个大写单词"},
        {"name": "小王国Bogner博格纳女款棕色排骨夹克AYAS-O 8.16", "expected": "AYAS-O", "format": "连字符"},
        {"name": "小王国Bogner博格纳女款深色条纹拉链夹克AISHA3代购8.16", "expected": "AISHA3", "format": "字母+数字"},
        # Alexander McQueen多段数字格式
        {"name": "Alexander McQueen 女款黑色系带马丁靴586402 1000代购7.30", "expected": "586402 1000", "format": "多段数字+空格"},
        # Burberry多颜色格式
        {"name": "Burberry 男款衬衫 8084328/8084329/8084330 代购8.16", "expected": "8084328/8084329/8084330", "format": "/分隔多颜色货号"},
        {"name": "Burberry 女款手袋 81234567/81234568 代购8.18", "expected": "81234567/81234568", "format": "/分隔双色货号"},
        {"name": "Burberry 经典风衣 90123456 90123457/90123458 代购8.19", "expected": "90123456 90123457/90123458", "format": "混合分隔符货号"},
        # 多段-连接格式（通用）
        {"name": "Lanvin 女款 黑色翻毛皮CURB运动鞋FW-SKDK0B-VESU小王国代购8.10", "expected": "FW-SKDK0B-VESU", "format": "多段-连接字母数字"},
        {"name": "Prada 男款皮鞋 2EE368-3AUF-F0002 代购8.12", "expected": "2EE368-3AUF-F0002", "format": "三段-连接格式"},
        # Balenciaga空格分隔字母数字格式
        {"name": "Balenciaga 女款 Cargo 做旧 运动鞋 785756 W2MU1代购8.15M", "expected": "785756 W2MU1", "format": "Balenciaga空格分隔"},
        {"name": "Balenciaga 女包 987654 XY12Z3 AB45代购8.17", "expected": "987654 XY12Z3 AB45", "format": "Balenciaga三段分隔"},
        # Polo Ralph Lauren和Jil Sander格式
        {"name": "Polo Ralph Lauren 大童 棉质 LOGO马标 长袖T 32384 代购MC", "expected": "32384", "format": "5位纯数字货号"},
        {"name": "Jil Sander 女款 带帽 面包羽绒服夹克 J40AF0131 J70122代购MC", "expected": "J40AF0131 J70122", "format": "Jil Sander空格分隔"},
    ]
    
    print("=== 综合货号格式测试 ===")
    
    success_count = 0
    total_count = len(test_cases)
    
    for i, case in enumerate(test_cases, 1):
        # 为特定品牌指定品牌参数
        brand = None
        if "Polo Ralph Lauren" in case['name']:
            brand = "Polo Ralph Lauren"
        elif "Jil Sander" in case['name']:
            brand = "Jil Sander"
        elif "Balenciaga" in case['name']:
            brand = "Balenciaga"
        elif "Burberry" in case['name']:
            brand = "Burberry"
        elif "Alexander McQueen" in case['name']:
            brand = "Alexander McQueen"
        
        product_code = extractor.extract_product_code(case['name'], brand)
        status = "✓" if product_code == case['expected'] else "✗"
        
        if product_code == case['expected']:
            success_count += 1
        
        print(f"\n测试 {i:2d}: {status} [{case['format']}]")
        print(f"商品名称: {case['name']}")
        print(f"期望货号: {case['expected']}")
        print(f"实际货号: {product_code}")
        
        if product_code == case['expected']:
            print(f"✅ 匹配成功")
        else:
            print(f"❌ 不匹配！")
    
    print(f"\n=== 测试总结 ===")
    print(f"成功: {success_count}/{total_count} ({success_count/total_count*100:.1f}%)")

if __name__ == "__main__":
    test_comprehensive_formats()