#!/usr/bin/env python3
import sys
sys.path.append('backend')

import asyncio
from app.core.database import get_db
from app.services.products_master_service import ProductsMasterService
from app.models.raw_orders import RawOrder
from app.models.products_master import ProductMaster
from sqlalchemy import select

async def test_create_single():
    """测试创建单个产品记录"""
    service = ProductsMasterService()
    
    async for db in get_db():
        await service.initialize_extractors(db)
        
        # 找到特定的测试订单
        result = await db.execute(
            select(RawOrder).where(
                RawOrder.线上宝贝名称.like('%蓝色鳄鱼压纹麻花扣乐福鞋%')
            ).limit(1)
        )
        raw_order = result.scalar_one_or_none()
        
        if not raw_order:
            print("没有找到测试订单")
            return
        
        print(f"处理订单: {raw_order.id}")
        print(f"产品名称: {raw_order.线上宝贝名称}")
        
        # 解析订单数据
        parsed_data = await service._parse_order_data(raw_order)
        print(f"解析后的品牌: '{parsed_data['brand']}'")
        
        # 创建新的产品记录
        sku_key = service._generate_sku_key(raw_order)
        print(f"SKU Key: {sku_key}")
        
        new_product = await service._create_product_master(db, raw_order, parsed_data, sku_key)
        await service._create_source_mapping(db, new_product.id, raw_order)
        
        print(f"创建的产品ID: {new_product.id}")
        print(f"创建的产品品牌: '{new_product.品牌}'")
        
        await db.commit()
        
        # 再次查询验证
        result = await db.execute(
            select(ProductMaster).where(ProductMaster.id == new_product.id)
        )
        verified_product = result.scalar_one_or_none()
        
        if verified_product:
            print(f"验证 - 数据库中的品牌: '{verified_product.品牌}'")
        
        break

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