113 lines
3.7 KiB
Python
113 lines
3.7 KiB
Python
"""demo workspaces and users
|
|
|
|
Revision ID: 20260728_0002
|
|
Revises: 20260724_0001
|
|
Create Date: 2026-07-28
|
|
"""
|
|
|
|
from collections.abc import Sequence
|
|
|
|
from alembic import op
|
|
|
|
|
|
revision: str = "20260728_0002"
|
|
down_revision: str | Sequence[str] | None = "20260724_0001"
|
|
branch_labels: str | Sequence[str] | None = None
|
|
depends_on: str | Sequence[str] | None = None
|
|
|
|
|
|
ADMIN_ROLE = "0000000000HNQN4KM476QNKW1C"
|
|
DEVELOPER_ROLE = "00000000005RCQ4GPGBK3WZYMM"
|
|
MODEL_WORKSPACE = "00000000000BM630VT9ARVFZPC"
|
|
RISK_WORKSPACE = "0000000000AE0NC0V5T424KK86"
|
|
ZHANG = "0000000000RF6FG1SDBXG59S13"
|
|
LI = "0000000000H2QYCGPCWQM1JSGS"
|
|
WANG = "0000000000RWG40ESZPGJT629J"
|
|
ZHAO = "00000000004CQV7WASJA6N6FW4"
|
|
|
|
|
|
def upgrade() -> None:
|
|
op.execute(
|
|
f"""
|
|
INSERT INTO roles
|
|
(role_id, role_code, role_name, role_scope, is_builtin)
|
|
VALUES
|
|
('{ADMIN_ROLE}', 'admin', '管理员', 'workspace', 1),
|
|
('{DEVELOPER_ROLE}', 'developer', '开发人员', 'workspace', 1)
|
|
ON DUPLICATE KEY UPDATE
|
|
role_name = VALUES(role_name),
|
|
role_scope = VALUES(role_scope)
|
|
"""
|
|
)
|
|
op.execute(
|
|
f"""
|
|
INSERT INTO users
|
|
(user_id, username, display_name, password_hash, status, email)
|
|
VALUES
|
|
('{ZHANG}', 'admin-zhang', '张三', 'demo-login-disabled', 'active',
|
|
'zhangsan@example.local'),
|
|
('{LI}', 'admin-li', '李四', 'demo-login-disabled', 'active',
|
|
'lisi@example.local'),
|
|
('{WANG}', 'dev-wang', '王五', 'demo-login-disabled', 'active',
|
|
'wangwu@example.local'),
|
|
('{ZHAO}', 'dev-zhao', '赵六', 'demo-login-disabled', 'active',
|
|
'zhaoliu@example.local')
|
|
ON DUPLICATE KEY UPDATE
|
|
username = VALUES(username),
|
|
display_name = VALUES(display_name),
|
|
status = 'active',
|
|
email = VALUES(email)
|
|
"""
|
|
)
|
|
op.execute(
|
|
f"""
|
|
INSERT INTO workspaces
|
|
(workspace_id, workspace_code, workspace_name, active_root_uri,
|
|
quota_bytes, used_bytes, status, created_by, description,
|
|
artifact_bucket, artifact_prefix)
|
|
VALUES
|
|
('{MODEL_WORKSPACE}', 'model-dev', '模型开发 Workspace',
|
|
'file:///workspace/workspaces/model-dev', 0, 0, 'active',
|
|
'{ZHANG}', '模型开发与脚本调度', 'model-platform',
|
|
'workspaces/model-dev'),
|
|
('{RISK_WORKSPACE}', 'risk-validation', '风险验证 Workspace',
|
|
'file:///workspace/workspaces/risk-validation', 0, 0, 'active',
|
|
'{LI}', '风险模型验证与批处理', 'model-platform',
|
|
'workspaces/risk-validation')
|
|
ON DUPLICATE KEY UPDATE
|
|
workspace_name = VALUES(workspace_name),
|
|
active_root_uri = VALUES(active_root_uri),
|
|
status = 'active',
|
|
description = VALUES(description)
|
|
"""
|
|
)
|
|
values = []
|
|
for workspace_id in (MODEL_WORKSPACE, RISK_WORKSPACE):
|
|
for user_id, role_id in (
|
|
(ZHANG, ADMIN_ROLE),
|
|
(LI, ADMIN_ROLE),
|
|
(WANG, DEVELOPER_ROLE),
|
|
(ZHAO, DEVELOPER_ROLE),
|
|
):
|
|
values.append(
|
|
f"('{workspace_id}', '{user_id}', '{role_id}', 'active')"
|
|
)
|
|
op.execute(
|
|
"""
|
|
INSERT INTO workspace_members
|
|
(workspace_id, user_id, role_id, member_status)
|
|
VALUES
|
|
"""
|
|
+ ",\n".join(values)
|
|
+ """
|
|
ON DUPLICATE KEY UPDATE
|
|
role_id = VALUES(role_id),
|
|
member_status = 'active'
|
|
"""
|
|
)
|
|
|
|
|
|
def downgrade() -> None:
|
|
# 演示身份可能已产生业务数据,降级时保留,避免破坏外键引用。
|
|
pass
|