#!/usr/bin/env python3
"""
Check another problematic Tods product
"""
import sys
import asyncio
sys.path.append('backend')

from sqlalchemy import select, text
from app.core.database import get_db
from app.models.products_master import ProductMaster
from app.utils.text_parser import BrandExtractor

async def check_another_tods():
    """Check the another problematic Tods product"""
    print("检查另一个有问题的Tods产品...")
    
    try:
        async for db in get_db():
            # The specific product mentioned
            product_name = "Tods女款黑色一字带平底凉鞋 XXW15L0IH90MIDB999美国代购 8.15LA"
            
            print(f"\n搜索产品: {product_name}")
            print("=" * 80)
            
            # Search for this specific product
            query1 = select(ProductMaster).where(
                ProductMaster.线上宝贝名称.like('%黑色一字带平底凉鞋%XXW15L0IH90MIDB999%')
            )
            
            result1 = await db.execute(query1)
            products1 = result1.scalars().all()
            
            if products1:
                print(f"找到 {len(products1)} 个匹配的产品:")
                for product in products1:
                    print(f"\n产品ID: {product.id}")
                    print(f"产品名称: {product.线上宝贝名称}")
                    print(f"当前品牌: '{product.品牌}'")
                    print(f"品牌长度: {len(product.品牌)} 字符")
                    print(f"货号: '{product.货号}'")
                    
                    if product.品牌 != "Tods":
                        print(f"❌ 品牌不正确！应该是 'Tods'")
            else:
                print("未找到该产品")
            
            # Test with BrandExtractor
            print("\n\n使用BrandExtractor测试:")
            print("=" * 80)
            extractor = BrandExtractor()
            
            test_names = [
                "Tods女款黑色一字带平底凉鞋 XXW15L0IH90MIDB999美国代购 8.15LA",
                "Tods女款黑色一字带平底凉鞋 XXW15L0IH90MIDB999美国代购8.15LA",  # 没有空格
                "Tods女款黑色一字带平底凉鞋XXW15L0IH90MIDB999美国代购8.15LA",  # 完全没有空格
            ]
            
            for test_name in test_names:
                result = extractor.extract_brand(test_name)
                print(f"\n输入: {test_name}")
                print(f"提取的品牌: '{result}'")
                
                # Show candidates
                candidates = extractor._extract_brand_candidates(test_name)
                print(f"候选品牌: {candidates}")
                
                if result != "Tods":
                    print(f"❌ 错误！应该是 'Tods'")
                else:
                    print(f"✅ 正确")
            
            # Search for all products with "Tods黑色" as brand
            print("\n\n搜索所有品牌包含'Tods黑色'的产品:")
            print("=" * 80)
            
            bad_brand_query = select(ProductMaster).where(
                ProductMaster.品牌.like('Tods黑色%')
            )
            
            bad_result = await db.execute(bad_brand_query)
            bad_products = bad_result.scalars().all()
            
            if bad_products:
                print(f"发现 {len(bad_products)} 个有问题的产品:")
                for i, product in enumerate(bad_products, 1):
                    print(f"\n{i}. 产品ID: {product.id}")
                    print(f"   产品名称: {product.线上宝贝名称[:60]}...")
                    print(f"   错误品牌: '{product.品牌}'")
                    print(f"   货号: '{product.货号}'")
            else:
                print("✅ 没有发现品牌为'Tods黑色'的产品")
            
            # Check all non-standard Tods brands
            print("\n\n检查所有非标准Tods品牌:")
            print("=" * 80)
            
            non_standard_query = text("""
                SELECT 品牌, COUNT(*) as count, GROUP_CONCAT(SUBSTR(线上宝贝名称, 1, 50), '...') as samples
                FROM products_master
                WHERE (线上宝贝名称 LIKE '%Tods%' OR 品牌 LIKE '%Tods%')
                AND 品牌 != 'Tods'
                GROUP BY 品牌
            """)
            
            non_standard_result = await db.execute(non_standard_query)
            non_standard = non_standard_result.fetchall()
            
            if non_standard:
                print(f"发现 {len(non_standard)} 种非标准Tods品牌:")
                for row in non_standard:
                    print(f"\n品牌: '{row[0]}' ({row[1]} 个产品)")
                    print(f"样例: {row[2][:100]}...")
            else:
                print("✅ 所有Tods产品品牌都是标准的")
            
            break
            
    except Exception as e:
        print(f"Error: {e}")
        import traceback
        traceback.print_exc()

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