refactor: 权限组简化为2组(readonly/write) + Transfer穿梭框选择数据库

- access_type 从3值(readonly/datachange/ddl)简化为2值(readonly/write)
- readonly=只读查看(关联只读/从库用于查询) write=写入变更(关联主库用于工单)
- 前端InstanceGroupPage重写: 2权限类型卡片+自定义Transfer穿梭框组件
- Transfer组件: 左侧可选数据库→右侧已授权数据库, 搜索/勾选/箭头移动
- role_permissions.py更新: 2值权限映射, get_accessible_instances按access_type过滤
- 后端schema/模型校验更新为readonly|write正则
- 15个测试全部通过
This commit is contained in:
logan committed 2026-05-24 19:27:04 +08:00
1 parent 8161bcf5b5
commit 4111e1eee8
6 files changed
+352 -316

No files matched your search

+4 -4
View File
@@ -9,8 +9,8 @@ class InstanceGroupCreate(BaseModel):
db_type: str = Field(default="all", pattern=r"^(mysql|redis|pg|mongo|all)$")
access_type: str = Field(
default="readonly",
pattern=r"^(readonly|datachange|ddl)$",
description="权限组类型: readonly(只读查询) / datachange(数据变更) / ddl(DDL变更)",
pattern=r"^(readonly|write)$",
description="权限组类型: readonly(只读查看) / write(写入变更)",
)
allowed_databases: Optional[List[str]] = Field(
default=None,
@@ -27,8 +27,8 @@ class InstanceGroupUpdate(BaseModel):
db_type: Optional[str] = Field(default=None, pattern=r"^(mysql|redis|pg|mongo|all)$")
access_type: Optional[str] = Field(
default=None,
pattern=r"^(readonly|datachange|ddl)$",
description="权限组类型: readonly(只读查询) / datachange(数据变更) / ddl(DDL变更)",
pattern=r"^(readonly|write)$",
description="权限组类型: readonly(只读查看) / write(写入变更)",
)
allowed_databases: Optional[List[str]] = Field(
default=None,