#!/usr/bin/env python3
"""
测试品牌筛选功能
"""
import sys
import asyncio
sys.path.append('backend')

from app.core.database import get_db
from app.services.products_master_service import ProductsMasterService

async def test_brand_filtering():
    """测试品牌筛选功能"""
    print("测试品牌筛选功能...")
    print("=" * 80)
    
    try:
        async for db in get_db():
            service = ProductsMasterService()
            
            # 1. 不筛选品牌，看看有多少产品
            print("1. 不筛选品牌的产品总数:")
            print("-" * 40)
            
            all_result = await service.get_products_list(
                db=db,
                page=1,
                page_size=1
            )
            
            total_count = all_result.get('pagination', {}).get('total', 0)
            print(f"总产品数: {total_count}")
            
            # 2. 筛选Tods品牌
            print(f"\n2. 筛选Tods品牌:")
            print("-" * 40)
            
            tods_result = await service.get_products_list(
                db=db,
                brand="Tods",
                page=1,
                page_size=10
            )
            
            tods_total = tods_result.get('pagination', {}).get('total', 0)
            tods_items = tods_result.get('items', [])
            
            print(f"Tods品牌产品数: {tods_total}")
            print(f"返回的items数量: {len(tods_items)}")
            
            if tods_items:
                print(f"前几个Tods产品:")
                for i, item in enumerate(tods_items[:3], 1):
                    print(f"\n{i}. ID: {item['id']}")
                    print(f"   产品名称: {item['线上宝贝名称'][:50]}...")
                    print(f"   品牌: '{item['品牌']}'")
                    
                    if item['品牌'] != 'Tods':
                        print(f"   ❌ 品牌不匹配!")
                    else:
                        print(f"   ✅ 品牌正确")
            else:
                print("❌ 没有找到Tods品牌的产品")
            
            # 3. 测试其他品牌
            print(f"\n3. 测试其他品牌:")
            print("-" * 40)
            
            # 获取品牌列表
            brands_to_test = ['MaxMara', 'SportMax', 'ST JOHN']
            
            for test_brand in brands_to_test:
                brand_result = await service.get_products_list(
                    db=db,
                    brand=test_brand,
                    page=1,
                    page_size=1
                )
                
                brand_total = brand_result.get('pagination', {}).get('total', 0)
                print(f"品牌'{test_brand}': {brand_total} 个产品")
            
            # 4. 测试有问题的具体情况
            print(f"\n4. 测试具体的卡其色麻花拖鞋产品:")
            print("-" * 40)
            
            # 按产品名称搜索
            name_result = await service.get_products_list(
                db=db,
                product_name="卡其色麻花拖鞋",
                page=1,
                page_size=5
            )
            
            name_items = name_result.get('items', [])
            print(f"按名称搜索找到: {len(name_items)} 个产品")
            
            if name_items:
                for item in name_items:
                    print(f"\nID: {item['id']}")
                    print(f"产品名称: {item['线上宝贝名称']}")
                    print(f"品牌: '{item['品牌']}'")
                    
                    # 然后尝试用这个品牌进行筛选
                    brand_value = item['品牌']
                    print(f"尝试用品牌'{brand_value}'进行筛选:")
                    
                    brand_filter_result = await service.get_products_list(
                        db=db,
                        brand=brand_value,
                        page=1,
                        page_size=5
                    )
                    
                    brand_filter_total = brand_filter_result.get('pagination', {}).get('total', 0)
                    print(f"  筛选结果: {brand_filter_total} 个产品")
                    
                    if brand_filter_total == 0:
                        print(f"  ❌ 品牌筛选失败！明明产品的品牌是'{brand_value}'但筛选不到")
                    else:
                        print(f"  ✅ 品牌筛选正常")
            
            break
            
    except Exception as e:
        print(f"Error: {e}")
        import traceback
        traceback.print_exc()

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