"""V25 将新增系统监控接入统一功能权限,不修改已应用的 V22。""" from alembic import op import sqlalchemy as sa revision: str = "25d6e7f8a9b0" down_revision: str | None = "24c5d6e7f8a9" branch_labels = None depends_on = None def upgrade(): bind = op.get_bind() for code, name, kind in ( ("system:monitor:view", "系统监控:查看", 1), ("system:monitor:export", "系统监控:导出", 2), ): bind.execute(sa.text("INSERT INTO permissions (perm_code,perm_name,perm_type,sort_order,status) SELECT :code,:name,:kind,100,1 WHERE NOT EXISTS (SELECT 1 FROM permissions WHERE perm_code=:code)"), {"code": code,"name": name,"kind": kind}) bind.execute(sa.text("INSERT INTO role_permissions (role_id,permission_id) SELECT r.id,p.id FROM roles r JOIN permissions p ON p.perm_code=:code WHERE r.role_code='admin' AND NOT EXISTS (SELECT 1 FROM role_permissions old WHERE old.role_id=r.id AND old.permission_id=p.id)"), {"code": code}) bind.execute(sa.text("UPDATE permissions p JOIN permissions parent ON parent.perm_code='system:monitor:view' SET p.parent_id=parent.id WHERE p.perm_code='system:monitor:export'")) def downgrade(): # V23 也可能已登记目录;回退此兼容版本不删除任何既有授权。 return