#!/usr/bin/env python
"""
简单的同步处理脚本 - 修复 greenlet async 初始化
直接使用数据库路径处理订单
"""
import sys
import os

# 确保从backend目录运行
script_dir = os.path.dirname(os.path.abspath(__file__))
if not script_dir.endswith('backend'):
    backend_dir = script_dir
else:
    backend_dir = script_dir
os.chdir(backend_dir)

# 设置绝对数据库路径
db_path = os.path.join(backend_dir, 'ordersys.db')
os.environ['DATABASE_URL'] = f'sqlite+aiosqlite:///{db_path}'

print(f"📂 Working directory: {os.getcwd()}")
print(f"💾 Database path: {db_path}")

import asyncio
from app.services.products_master_service import ProductsMasterService
from app.services.procurement_order_service_v2 import ProcurementOrderServiceV2
from app.services.procurement_order_sync_service import ProcurementOrderSyncService
from app.core.database import AsyncSessionLocal


async def main():
    """主函数"""
    print("\n" + "="*80)
    print("🚀 开始生成产品主表和采购订单")
    print("="*80)

    # 创建数据库会话
    async with AsyncSessionLocal() as db:
        try:
            # 步骤1: 生成产品主表
            print("\n📝 步骤1: 生成产品主表...")
            pm_service = ProductsMasterService()
            pm_result = await pm_service.generate_products_master(db, force_rebuild=False)
            print(f"✅ 产品主表完成: {pm_result}")

            # 步骤2: 生成采购订单
            print("\n🛒 步骤2: 生成采购订单...")
            po_service = ProcurementOrderServiceV2()
            po_result = await po_service.generate_procurement_orders(db, force_rebuild=False)
            print(f"✅ 采购订单完成: {po_result}")

            # 步骤3: 同步状态
            print("\n🔄 步骤3: 同步订单状态...")
            sync_service = ProcurementOrderSyncService()
            sync_result = await sync_service.sync_order_status(db)
            print(f"✅ 状态同步完成: {sync_result}")

            print("\n🎉 所有步骤完成！")

        except Exception as e:
            print(f"\n❌ 错误: {e}")
            import traceback
            traceback.print_exc()
            sys.exit(1)


if __name__ == "__main__":
    # 使用asyncio.run运行
    asyncio.run(main())
