61 lines
2.0 KiB
Python
61 lines
2.0 KiB
Python
|
|
#!/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完成。")
|