#!/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完成。")