From 0f385c9839c4bb7c4883c8313ac15aa11efecfc9 Mon Sep 17 00:00:00 2001 From: wren <“porlong@qq.com”> Date: Mon, 25 May 2026 14:52:10 +0800 Subject: [PATCH] fix(rules): unify rule configuration naming --- .../controllers/ruleController.py | 6 ++--- .../services/impl/rbacAdminServiceImpl.py | 2 +- .../services/impl/rbacServiceImpl.py | 4 +-- legal-platform-frontend | 2 +- scripts/创建sql/seed_govdoc_permissions.sql | 4 +-- scripts/创建sql/user_rbac_seed.sql | 2 +- tests/test_home_entry_visibility.py | 27 +++++++++++++++++++ 7 files changed, 37 insertions(+), 10 deletions(-) diff --git a/fastapi_modules/fastapi_leaudit/controllers/ruleController.py b/fastapi_modules/fastapi_leaudit/controllers/ruleController.py index 71b5f81..d149808 100644 --- a/fastapi_modules/fastapi_leaudit/controllers/ruleController.py +++ b/fastapi_modules/fastapi_leaudit/controllers/ruleController.py @@ -1,4 +1,4 @@ -"""规则管理控制器。""" +"""规则配置控制器。""" from typing import Any @@ -30,10 +30,10 @@ from fastapi_modules.fastapi_leaudit.services.permissionService import IPermissi class RuleController(BaseController): - """规则管理控制器。""" + """规则配置控制器。""" def __init__(self): - super().__init__(prefix="/rule-sets", tags=["规则管理"]) + super().__init__(prefix="/rule-sets", tags=["规则配置"]) self.RuleService: IRuleService = GetRuleServiceSingleton() self.PermissionService: IPermissionService = PermissionServiceImpl() self._PERMISSIONS = { diff --git a/fastapi_modules/fastapi_leaudit/services/impl/rbacAdminServiceImpl.py b/fastapi_modules/fastapi_leaudit/services/impl/rbacAdminServiceImpl.py index 72e9ce0..005ccdd 100644 --- a/fastapi_modules/fastapi_leaudit/services/impl/rbacAdminServiceImpl.py +++ b/fastapi_modules/fastapi_leaudit/services/impl/rbacAdminServiceImpl.py @@ -245,7 +245,7 @@ class RbacAdminServiceImpl(IRbacAdminService): "route_path": "/rules", "route_name": "rule-management", "component": "rules", - "route_title": "规则管理", + "route_title": "规则配置", "icon": "ri-book-3-line", "sort_order": 70, "is_hidden": False, diff --git a/fastapi_modules/fastapi_leaudit/services/impl/rbacServiceImpl.py b/fastapi_modules/fastapi_leaudit/services/impl/rbacServiceImpl.py index 5abf423..5986fd3 100644 --- a/fastapi_modules/fastapi_leaudit/services/impl/rbacServiceImpl.py +++ b/fastapi_modules/fastapi_leaudit/services/impl/rbacServiceImpl.py @@ -159,7 +159,7 @@ class RbacServiceImpl(IRbacService): "route_name": "rule-management", "component": "rules", "parent_id": None, - "route_title": "规则管理", + "route_title": "规则配置", "icon": "ri-book-3-line", "sort_order": 5, "is_hidden": False, @@ -489,7 +489,7 @@ class RbacServiceImpl(IRbacService): "route_name": "rule-management", "component": "rules", "parent_id": None, - "route_title": "规则管理", + "route_title": "规则配置", "icon": "ri-book-3-line", "sort_order": 5, "is_hidden": False, diff --git a/legal-platform-frontend b/legal-platform-frontend index fe2b82b..469de25 160000 --- a/legal-platform-frontend +++ b/legal-platform-frontend @@ -1 +1 @@ -Subproject commit fe2b82bda32145e5370adad08fd10b6b687a59f9 +Subproject commit 469de25dc8ce8c7d8e6212795a090442afd91c6e diff --git a/scripts/创建sql/seed_govdoc_permissions.sql b/scripts/创建sql/seed_govdoc_permissions.sql index 77a0341..2394d04 100644 --- a/scripts/创建sql/seed_govdoc_permissions.sql +++ b/scripts/创建sql/seed_govdoc_permissions.sql @@ -102,7 +102,7 @@ seed(role_key, permission_key, grant_type, data_scope) AS ( ('provincial_admin', 'govdoc:settings:read', 'GRANT', 'ALL'), ('provincial_admin', 'govdoc:settings:update', 'GRANT', 'ALL'), - -- admin: 模块读写 + 规则查看,不含规则管理与配置修改 + -- admin: 模块读写 + 规则查看,不含规则配置与配置修改 ('admin', 'govdoc:module:read', 'GRANT', 'REGION'), ('admin', 'govdoc:document:create', 'GRANT', 'REGION'), ('admin', 'govdoc:document:read', 'GRANT', 'REGION'), @@ -135,4 +135,4 @@ ON CONFLICT (role_id, permission_id) DO UPDATE SET data_scope = EXCLUDED.data_scope, updated_at = NOW(); -COMMIT; \ No newline at end of file +COMMIT; diff --git a/scripts/创建sql/user_rbac_seed.sql b/scripts/创建sql/user_rbac_seed.sql index a6776dd..a254dce 100644 --- a/scripts/创建sql/user_rbac_seed.sql +++ b/scripts/创建sql/user_rbac_seed.sql @@ -34,7 +34,7 @@ VALUES ('/documents/list', 'documents.list', 'documents/list', NULL, '文档列表', 'table', 11, FALSE, TRUE, '{"group":"documents"}'::jsonb, 0, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL), ('/audit', 'audit', 'Layout', NULL, '评查任务', 'audit', 20, FALSE, TRUE, '{"group":"audit"}'::jsonb, 0, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL), ('/audit/runs', 'audit.runs', 'audit/runs', NULL, '评查运行', 'history', 21, FALSE, TRUE, '{"group":"audit"}'::jsonb, 0, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL), - ('/rules', 'rules', 'Layout', NULL, '规则管理', 'rule', 30, FALSE, TRUE, '{"group":"rules"}'::jsonb, 0, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL), + ('/rules', 'rules', 'Layout', NULL, '规则配置', 'rule', 30, FALSE, TRUE, '{"group":"rules"}'::jsonb, 0, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL), ('/system', 'system', 'Layout', NULL, '系统管理', 'setting', 90, FALSE, TRUE, '{"group":"system"}'::jsonb, 0, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL), ('/system/users', 'system.users', 'system/users', NULL, '用户管理', 'user', 91, FALSE, TRUE, '{"group":"system"}'::jsonb, 0, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL), ('/system/roles', 'system.roles', 'system/roles', NULL, '角色权限', 'shield', 92, FALSE, TRUE, '{"group":"system"}'::jsonb, 0, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL), diff --git a/tests/test_home_entry_visibility.py b/tests/test_home_entry_visibility.py index a9e3980..c8f469c 100644 --- a/tests/test_home_entry_visibility.py +++ b/tests/test_home_entry_visibility.py @@ -1,6 +1,8 @@ """首页入口可见性测试。""" +from fastapi_modules.fastapi_leaudit.services.impl.entryModuleAdminServiceImpl import EntryModuleAdminServiceImpl from fastapi_modules.fastapi_leaudit.services.impl.homeServiceImpl import HomeServiceImpl +from fastapi_modules.fastapi_leaudit.services.impl.rbacServiceImpl import RbacServiceImpl def test_document_entry_targets_are_visible_without_file_management_routes(): @@ -19,3 +21,28 @@ def test_non_document_entry_targets_still_require_route_grant(): assert service._isAllowedTargetPath("/tenants", set()) is False assert service._isAllowedTargetPath("/cross-checking", set()) is False assert service._isAllowedTargetPath("/cross-checking", {"/cross-checking"}) is True + + +def test_govdoc_home_features_use_rule_config_for_legacy_rule_groups(): + """内部公文旧规则分组功能编码应兼容到规则配置。""" + service = HomeServiceImpl() + + assert service._parseFeatures(["home", "rule_groups"], "govdoc") == ["home", "rules"] + assert service._parseFeatures([], "govdoc") == ["home", "govdoc_audits", "govdoc_upload", "rules"] + + +def test_govdoc_admin_features_use_rule_config_for_legacy_rule_groups(): + """入口模块管理读写内部公文功能时兼容旧规则分组编码。""" + service = EntryModuleAdminServiceImpl() + + assert service._parseFeatures(["home", "rule_groups"], "govdoc") == ["home", "rules"] + assert service._normalizeFeatures(["rule_groups"], "govdoc") == ["rules"] + + +def test_rbac_compat_routes_use_rule_config_title(): + """RBAC 兼容菜单里的 /rules 标题统一为规则配置。""" + service = RbacServiceImpl() + routes = service._buildCompatibilityRoutes(["admin"], {"rules:list:read"}) + rules_route = next(route for route in routes if route.route_path == "/rules") + + assert rules_route.route_title == "规则配置"