#!/usr/bin/env python3
"""测试Canada Goose货号提取逻辑"""

import sys
sys.path.append('/Users/jinjunqian/PycharmProjects/订单处理新版/ordersys')

from backend.app.utils.text_parser import ProductCodeExtractor

def test_canada_goose_extraction():
    """测试Canada Goose货号提取"""
    extractor = ProductCodeExtractor()

    test_cases = [
        # (产品名称, 品牌, 预期货号)
        ("CANADA GOOSE/加拿大鹅 男款徽标马甲2054M 代购 CA 4.29 MC", "Canada Goose", "2054M"),
        ("Canada Goose 男款Crofton 面包羽绒马甲 2229M 代购 CA 4.29 MC", "Canada Goose", "2229M"),
        ("缺吊牌 CANADA GOOSE/加拿大鹅女款长款 羽绒服3900W 5.31MC", "Canada Goose", "3900W"),
        ("CANADA GOOSE  女款Freestyle羽绒马甲 2836L 代购 4.29 MC", "Canada Goose", "2836L"),
        ("Canada Goose Expedition Parka 男款远征羽绒服4660M代购4.8MC", "Canada Goose", "4660M"),
        ("Canada Goose Expedition Parka 男款远征羽绒服2051M 代购4.8MC", "Canada Goose", "2051M"),
        ("小王国 Canada Goose 女款Junction短款派克羽绒服夹克 2602LB AT", "Canada Goose", "2602LB"),
        ("小王国Canada Goose男款HyBridge 羽绒上衣9204M 代购9.13AT", "Canada Goose", "9204M"),
        ("小王国 CANADA GOOSE 女款CYPRESS PUFFER羽绒服 2239L 9.13AT", "Canada Goose", "2239L"),
        # 更多复杂格式
        ("Canada Goose 2756WT 9061 女款羽绒服", "Canada Goose", "2756WT"),
        ("Canada Goose 3835WT 9433 男款", "Canada Goose", "3835WT"),
        ("Canada Goose 4815MT 9061 XL", "Canada Goose", "4815MT"),
        ("Canada Goose 2729MCB 黑色", "Canada Goose", "2729MCB"),
    ]

    print("Canada Goose货号提取测试：")
    print("=" * 80)

    passed = 0
    failed = 0

    for product_name, brand, expected_code in test_cases:
        result = extractor.extract_product_code(product_name, brand)

        # 对比结果
        if result == expected_code:
            print(f"✅ 通过: {expected_code}")
            print(f"   产品: {product_name[:60]}...")
            passed += 1
        else:
            print(f"❌ 失败: 期望 {expected_code}, 实际 {result}")
            print(f"   产品: {product_name[:60]}...")
            failed += 1
        print("-" * 80)

    # 额外测试：不应该误匹配的情况
    print("\n测试误匹配情况：")
    non_cg_test_cases = [
        ("Burberry 男款外套 80721821 代购", "Burberry", "80721821"),
        ("MaxMara 女款大衣 MAGAN 代购", "MaxMara", "MAGAN"),
        ("Arc'teryx X8485 户外夹克", "Arc'teryx", "X8485"),
    ]

    for product_name, brand, expected_code in non_cg_test_cases:
        result = extractor.extract_product_code(product_name, brand)
        if result == expected_code:
            print(f"✅ 通过: {brand} 品牌正确提取 {expected_code}")
            passed += 1
        else:
            print(f"❌ 失败: {brand} 品牌期望 {expected_code}, 实际 {result}")
            failed += 1

    print("\n" + "=" * 80)
    print(f"测试结果汇总：")
    print(f"通过: {passed}/{passed + failed}")
    print(f"失败: {failed}/{passed + failed}")
    print(f"成功率: {(passed/(passed + failed) * 100):.1f}%")

    return passed, failed

if __name__ == "__main__":
    test_canada_goose_extraction()