#!/usr/bin/env python3
"""
调试品牌筛选问题
"""
import sys
import asyncio
sys.path.append('backend')

from sqlalchemy import select, func, text, and_
from app.core.database import get_db
from app.models.products_master import ProductMaster

async def debug_brand_filter():
    """调试品牌筛选问题"""
    print("调试品牌筛选问题...")
    print("=" * 80)
    
    try:
        async for db in get_db():
            # 1. 直接SQL查询所有Tods产品
            print("1. 直接SQL查询:")
            print("-" * 40)
            
            direct_query = text("""
                SELECT id, 线上宝贝名称, 品牌, 货号
                FROM products_master
                WHERE 品牌 = 'Tods'
                LIMIT 5
            """)
            
            direct_result = await db.execute(direct_query)
            direct_products = direct_result.fetchall()
            
            print(f"直接SQL找到 {len(direct_products)} 个品牌='Tods'的产品")
            for row in direct_products:
                print(f"  ID:{row[0]} - {row[1][:50]}... - 品牌:'{row[2]}'")
            
            # 2. 使用ORM查询
            print(f"\n2. 使用ORM查询:")
            print("-" * 40)
            
            orm_query = select(ProductMaster).where(ProductMaster.品牌 == 'Tods').limit(5)
            orm_result = await db.execute(orm_query)
            orm_products = orm_result.scalars().all()
            
            print(f"ORM查询找到 {len(orm_products)} 个品牌='Tods'的产品")
            for product in orm_products:
                print(f"  ID:{product.id} - {product.线上宝贝名称[:50]}... - 品牌:'{product.品牌}'")
            
            # 3. 检查具体产品的品牌值
            print(f"\n3. 检查具体产品:")
            print("-" * 40)
            
            specific_query = select(ProductMaster).where(
                ProductMaster.线上宝贝名称.like('%卡其色麻花拖鞋%')
            )
            specific_result = await db.execute(specific_query)
            specific_products = specific_result.scalars().all()
            
            if specific_products:
                for product in specific_products:
                    print(f"产品ID: {product.id}")
                    print(f"产品名称: {product.线上宝贝名称}")
                    print(f"品牌值: '{product.品牌}'")
                    print(f"品牌类型: {type(product.品牌)}")
                    print(f"品牌长度: {len(product.品牌)}")
                    
                    # 检查字符编码
                    brand_bytes = product.品牌.encode('utf-8')
                    print(f"品牌UTF-8字节: {brand_bytes}")
                    
                    # 检查是否有隐藏字符
                    brand_repr = repr(product.品牌)
                    print(f"品牌repr: {brand_repr}")
                    
                    # 测试品牌比较
                    print(f"品牌 == 'Tods': {product.品牌 == 'Tods'}")
                    print(f"品牌.strip() == 'Tods': {product.品牌.strip() == 'Tods'}")
                    print()
            
            # 4. 检查数据库中所有不同的品牌值
            print(f"4. 检查所有包含'Tods'的品牌值:")
            print("-" * 40)
            
            brand_query = text("""
                SELECT DISTINCT 品牌, COUNT(*) as count,
                       HEX(品牌) as hex_value,
                       LENGTH(品牌) as brand_length
                FROM products_master
                WHERE 品牌 LIKE '%Tods%'
                GROUP BY 品牌
                ORDER BY count DESC
            """)
            
            brand_result = await db.execute(brand_query)
            brands = brand_result.fetchall()
            
            for row in brands:
                print(f"品牌: '{row[0]}' ({row[1]} 个产品)")
                print(f"  长度: {row[3]} 字符")
                print(f"  十六进制: {row[2]}")
                print(f"  是否等于'Tods': {row[0] == 'Tods'}")
                print()
            
            break
            
    except Exception as e:
        print(f"Error: {e}")
        import traceback
        traceback.print_exc()

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