"""
初始化内置工具
在系统启动时或手动运行此脚本来加载内置工具
"""
from sqlalchemy.orm import Session
from database import SessionLocal, engine
import models
from builtin_tools import get_builtin_tools

def init_builtin_tools():
    """初始化内置工具到数据库"""
    db = SessionLocal()
    
    try:
        print("="*60)
        print("初始化内置工具")
        print("="*60)
        
        builtin_tools = get_builtin_tools()
        created_count = 0
        updated_count = 0
        skipped_count = 0
        
        for tool_data in builtin_tools:
            # 检查工具是否已存在
            existing_tool = db.query(models.AITool).filter(
                models.AITool.name == tool_data["name"]
            ).first()
            
            if existing_tool:
                # 更新现有工具
                existing_tool.description = tool_data["description"]
                existing_tool.parameters_schema = tool_data["parameters_schema"]
                existing_tool.function_code = tool_data.get("function_code")
                existing_tool.is_code_tool = tool_data.get("is_code_tool", False)
                updated_count += 1
                print(f"[OK] 更新工具: {tool_data['name']}")
            else:
                # 创建新工具
                new_tool = models.AITool(
                    name=tool_data["name"],
                    description=tool_data["description"],
                    parameters_schema=tool_data["parameters_schema"],
                    function_code=tool_data.get("function_code"),
                    is_code_tool=tool_data.get("is_code_tool", False)
                )
                db.add(new_tool)
                created_count += 1
                print(f"[OK] 创建工具: {tool_data['name']}")
        
        db.commit()
        
        print("\n" + "="*60)
        print("初始化完成！")
        print("="*60)
        print(f"创建: {created_count} 个工具")
        print(f"更新: {updated_count} 个工具")
        print(f"总计: {created_count + updated_count} 个内置工具")
        
        print("\n内置工具列表：")
        for i, tool in enumerate(builtin_tools, 1):
            print(f"{i}. {tool['name']}")
            print(f"   分类: {tool.get('category', 'N/A')}")
            print(f"   描述: {tool['description']}")
            print(f"   示例: {tool.get('usage_example', 'N/A')}")
            print()
        
        return True
        
    except Exception as e:
        print(f"[ERROR] 初始化失败: {e}")
        db.rollback()
        return False
    finally:
        db.close()

if __name__ == "__main__":
    # 确保数据库表已创建
    models.Base.metadata.create_all(bind=engine)
    
    # 初始化内置工具
    success = init_builtin_tools()
    
    if success:
        print("\n提示：")
        print("1. 内置工具已加载到数据库")
        print("2. 在管理后台的'工具管理'中可以查看这些工具")
        print("3. 可以在'数字员工管理'中将这些工具分配给 AI 员工")
        print("4. 天气查询工具需要配合后端 API 使用")
        print("   API 端点: GET /api/weather?city=城市名")
