#!/usr/bin/env python3
"""
测试products API返回的实际品牌数据
"""
import sys
import asyncio
sys.path.append('backend')

from app.core.database import get_db
from app.services.procurement_list_service_v2 import ProcurementListServiceV2

async def test_products_api():
    """测试products API返回的品牌数据"""
    print("测试products API返回的品牌数据...")
    print("=" * 80)
    
    try:
        async for db in get_db():
            service = ProcurementListServiceV2()
            
            # 调用实际的API方法 - 模拟前端调用
            print("模拟调用: /products-master/products API")
            print("-" * 40)
            
            # 测试LA采购方式的产品
            result = await service.get_product_aggregated_list(
                db=db,
                procurement_method='LA',
                page=1,
                page_size=50
            )
            
            items = result.get('items', [])
            print(f"找到 {len(items)} 个产品")
            
            # 检查Tods产品
            print(f"\n检查Tods相关产品的品牌值:")
            print("-" * 40)
            
            tods_count = 0
            problem_count = 0
            
            for item in items:
                product_name = item.get('product_name', '')
                brand = item.get('brand', '')
                
                if 'Tods' in product_name or 'Tods' in brand:
                    tods_count += 1
                    print(f"\n产品名: {product_name[:60]}...")
                    print(f"API返回的品牌: '{brand}'")
                    
                    if brand == 'Tods':
                        print(f"✅ 品牌正确")
                    else:
                        print(f"❌ 品牌错误！")
                        problem_count += 1
                        
                        # 分析错误模式
                        if len(brand) > 10:
                            print(f"   品牌长度异常: {len(brand)} 字符")
                        if '黑色' in brand or '卡其色' in brand or '棕色' in brand:
                            print(f"   品牌包含颜色信息")
                        if '拖鞋' in brand or '凉鞋' in brand or '双肩包' in brand:
                            print(f"   品牌包含产品类型")
                    
                    # 只显示前5个
                    if tods_count >= 5:
                        break
            
            print(f"\n\n汇总:")
            print(f"检查了 {tods_count} 个Tods相关产品")
            print(f"发现 {problem_count} 个品牌错误")
            
            if problem_count == 0:
                print("✅ 所有Tods产品的品牌都正确!")
            else:
                print(f"❌ 发现 {problem_count} 个品牌错误的产品")
            
            # 测试特定产品名称
            print(f"\n\n测试特定产品名称:")
            print("-" * 40)
            
            test_names = [
                "Tods女款卡其色麻花拖鞋",
                "Tods女款黑色一字带平底凉鞋",
                "Tods女款牛仔拼色镂空锁扣装饰踩鞋"
            ]
            
            for test_name in test_names:
                result = await service.get_product_aggregated_list(
                    db=db,
                    procurement_method='LA',
                    product_name=test_name,
                    page=1,
                    page_size=5
                )
                
                items = result.get('items', [])
                if items:
                    item = items[0]
                    print(f"\n搜索: {test_name}")
                    print(f"  找到产品: {item.get('product_name', '')[:60]}...")
                    print(f"  API品牌: '{item.get('brand', '')}'")
                    
                    if item.get('brand') == 'Tods':
                        print(f"  ✅ 品牌正确")
                    else:
                        print(f"  ❌ 品牌错误!")
                else:
                    print(f"\n搜索: {test_name}")
                    print(f"  未找到产品")
            
            break
            
    except Exception as e:
        print(f"Error: {e}")
        import traceback
        traceback.print_exc()

if __name__ == "__main__":
    asyncio.run(test_products_api())