#!/usr/bin/env python
"""
全量重建脚本
"""
import asyncio
import logging
from app.services.products_master_service import ProductsMasterService
from app.services.procurement_order_service_v2 import ProcurementOrderServiceV2
from app.core.database import get_db

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

async def main():
    """主函数"""
    async for db in get_db():
        try:
            # 1. 重建 products_master
            logger.info("开始重建 products_master 和映射关系...")
            service = ProductsMasterService()
            result = await service.generate_products_master(db, force_rebuild=True)
            await db.commit()
            logger.info(f"Products Master 重建完成: {result}")
            
            # 2. 重建采购订单
            logger.info("开始重建采购订单...")
            procurement_service = ProcurementOrderServiceV2()
            procurement_result = await procurement_service.generate_procurement_orders(db)
            await db.commit()
            logger.info(f"采购订单重建完成: {procurement_result}")
            
            logger.info("全量重建完成！")
            
        except Exception as e:
            logger.error(f"重建失败: {e}")
            await db.rollback()
            raise
        finally:
            break

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