#!/usr/bin/env python3
"""
在正式服务器上执行：将 admin001 设为管理后台管理员
运行方式：
  1. SSH 到堡垒机，再 SSH 到 10.90.5.110
  2. 进入部署目录：cd /opt/wecom-it-desk
  3. 执行：docker exec -i wecom_it_backend python /app/scripts/set_admin.py
（如果脚本不在容器内，可先 docker cp 进去，或用下面的 SQL 方式）
"""
import sys
import os

# 方法一：直接通过 SQLAlchemy 写入数据库（在容器内执行）
from sqlalchemy import create_engine, text
from sqlalchemy.orm import sessionmaker
import uuid

# 从环境变量读取数据库配置
DB_URL = os.environ.get(
    "DATABASE_URL",
    "postgresql://wecom:wecom_secret_2026@postgres:5432/wecom_it_desk"
)

engine = create_engine(DB_URL)
Session = sessionmaker(bind=engine)
session = Session()

# 检查 agents 表中是否已有 admin001
result = session.execute(
    text("SELECT id, user_id, name, role FROM agents WHERE user_id = :uid"),
    {"uid": "admin001"}
).fetchone()

if result:
    agent_id, user_id, name, role = result
    print(f"✅ 已存在记录：id={agent_id}, user_id={user_id}, name={name}, role={role}")
    if role != "admin":
        session.execute(
            text("UPDATE agents SET role = 'admin' WHERE user_id = :uid"),
            {"uid": "admin001"}
        )
        session.commit()
        print(f"✅ 已将 {user_id} 角色更新为 admin")
    else:
        print(f"ℹ️  角色已经是 admin，无需修改")
else:
    # 不存在则创建
    new_id = str(uuid.uuid4())
    session.execute(
        text(
            "INSERT INTO agents (id, user_id, name, status, current_load, max_load, role, skill_tags, created_at, updated_at) "
            "VALUES (:id, :uid, :name, 'offline', 0, 5, 'admin', '[]', NOW(), NOW())"
        ),
        {"id": new_id, "uid": "admin001", "name": "系统管理员"}
    )
    session.commit()
    print(f"✅ 已创建管理员记录：id={new_id}, user_id=admin001, role=admin")

session.close()
print("\n完成。")
