feat: add backend rule group and permission support

This commit is contained in:
wren
2026-05-06 09:40:37 +08:00
parent 7acbe0f1d9
commit 76ba7e65ed
45 changed files with 6175 additions and 110 deletions
+49 -1
View File
@@ -38,7 +38,14 @@ VALUES
('/rules/sets', 'rules.sets', 'rules/sets', NULL, '规则集管理', 'yaml', 31, 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)
('/system/roles', 'system.roles', 'system/roles', NULL, '角色权限', 'shield', 92, FALSE, TRUE, '{"group":"system"}'::jsonb, 0, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL),
('/chat-with-llm', 'chat-with-llm', 'chat-with-llm', NULL, 'AI对话', 'chat', 15, FALSE, TRUE, '{"group":"assistant"}'::jsonb, 0, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL),
('/contract-template', 'contract-template', 'contract-template', NULL, '合同管理', 'file-search', 40, FALSE, TRUE, '{"group":"contract"}'::jsonb, 0, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL),
('/contract-template/search', 'contract-template.search', 'contract-template/search', NULL, '模板搜索', 'search', 41, FALSE, TRUE, '{"group":"contract"}'::jsonb, 0, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL),
('/contract-template/list', 'contract-template.list', 'contract-template/list', NULL, '模板列表', 'folder', 42, FALSE, TRUE, '{"group":"contract"}'::jsonb, 0, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL),
('/cross-checking', 'cross-checking', 'cross-checking', NULL, '交叉评查', 'flow', 60, FALSE, TRUE, '{"group":"cross-review"}'::jsonb, 0, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL),
('/cross-checking/upload', 'cross-checking.upload', 'cross-checking/upload', NULL, '创建任务', 'upload', 61, FALSE, TRUE, '{"group":"cross-review"}'::jsonb, 0, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL),
('/cross-checking/result', 'cross-checking.result', 'cross-checking/result', NULL, '评查结果', 'table', 62, FALSE, TRUE, '{"group":"cross-review"}'::jsonb, 0, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL)
ON CONFLICT DO NOTHING;
-- --------------------------------------------------------------------------
@@ -73,6 +80,11 @@ VALUES
('rules:binding_create:write', 'rules', 'binding_create', 'write', '创建规则绑定', '创建规则绑定', 'API', TRUE, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, NULL, 48, NULL, '/api/rule-sets/{rule_type}/bindings', 'POST', NULL),
('rules:binding_update:write', 'rules', 'binding_update', 'write', '更新规则绑定', '更新规则绑定', 'API', TRUE, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, NULL, 49, NULL, '/api/rule-sets/bindings/{binding_id}', 'PUT', NULL),
('rules:binding_delete:delete', 'rules', 'binding_delete', 'delete', '删除规则绑定', '删除规则绑定', 'API', TRUE, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, NULL, 50, NULL, '/api/rule-sets/bindings/{binding_id}', 'DELETE', NULL),
('evaluation_point:list:read', 'evaluation_point', 'list', 'read', '查看评查点列表', '评查点列表', 'API', TRUE, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, NULL, 51, NULL, '/api/v3/evaluation-points', 'GET', NULL),
('evaluation_point:detail:read', 'evaluation_point', 'detail', 'read', '查看评查点详情', '评查点详情', 'API', TRUE, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, NULL, 52, NULL, '/api/v3/evaluation-points/{id}', 'GET', NULL),
('evaluation_point:create:write', 'evaluation_point', 'create', 'write', '创建评查点', '创建评查点', 'API', TRUE, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, NULL, 53, NULL, '/api/v3/evaluation-points', 'POST', NULL),
('evaluation_point:update:write', 'evaluation_point', 'update', 'write', '更新评查点', '更新评查点', 'API', TRUE, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, NULL, 54, NULL, '/api/v3/evaluation-points/{id}', 'PUT', NULL),
('evaluation_point:delete:delete', 'evaluation_point', 'delete', 'delete', '删除评查点', '删除评查点', 'API', TRUE, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, NULL, 55, NULL, '/api/v3/evaluation-points/{id}', 'DELETE', NULL),
('users:list:read', 'users', 'list', 'read', '查看用户列表', '用户列表', 'API', TRUE, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, NULL, 60, NULL, '/api/users/list', 'GET', NULL),
('users:create:write', 'users', 'create', 'write', '创建用户', '创建用户', 'API', TRUE, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, NULL, 61, NULL, '/api/users', 'POST', NULL),
@@ -115,6 +127,13 @@ seed(role_key, route_path, permission, status) AS (
('super_admin', '/audit/runs', 'RW', 1),
('super_admin', '/rules', 'RW', 1),
('super_admin', '/rules/sets', 'RW', 1),
('super_admin', '/chat-with-llm', 'RW', 1),
('super_admin', '/contract-template', 'RW', 1),
('super_admin', '/contract-template/search', 'RW', 1),
('super_admin', '/contract-template/list', 'RW', 1),
('super_admin', '/cross-checking', 'RW', 1),
('super_admin', '/cross-checking/upload', 'RW', 1),
('super_admin', '/cross-checking/result', 'RW', 1),
('super_admin', '/system', 'RW', 1),
('super_admin', '/system/users', 'RW', 1),
('super_admin', '/system/roles', 'RW', 1),
@@ -125,6 +144,13 @@ seed(role_key, route_path, permission, status) AS (
('provincial_admin', '/audit/runs', 'RW', 1),
('provincial_admin', '/rules', 'RW', 1),
('provincial_admin', '/rules/sets', 'RW', 1),
('provincial_admin', '/chat-with-llm', 'RW', 1),
('provincial_admin', '/contract-template', 'RW', 1),
('provincial_admin', '/contract-template/search', 'RW', 1),
('provincial_admin', '/contract-template/list', 'RW', 1),
('provincial_admin', '/cross-checking', 'RW', 1),
('provincial_admin', '/cross-checking/upload', 'RW', 1),
('provincial_admin', '/cross-checking/result', 'RW', 1),
('provincial_admin', '/system', 'RW', 1),
('provincial_admin', '/system/users', 'RW', 1),
('provincial_admin', '/system/roles', 'RW', 1),
@@ -135,6 +161,13 @@ seed(role_key, route_path, permission, status) AS (
('admin', '/audit/runs', 'RW', 1),
('admin', '/rules', 'RW', 1),
('admin', '/rules/sets', 'RW', 1),
('admin', '/chat-with-llm', 'RW', 1),
('admin', '/contract-template', 'RW', 1),
('admin', '/contract-template/search', 'RW', 1),
('admin', '/contract-template/list', 'RW', 1),
('admin', '/cross-checking', 'RW', 1),
('admin', '/cross-checking/upload', 'RW', 1),
('admin', '/cross-checking/result', 'RW', 1),
('admin', '/system', 'RW', 1),
('admin', '/system/users', 'RW', 1),
@@ -184,6 +217,11 @@ seed(role_key, permission_key, grant_type, data_scope) AS (
('super_admin', 'rules:binding_create:write', 'GRANT', 'ALL'),
('super_admin', 'rules:binding_update:write', 'GRANT', 'ALL'),
('super_admin', 'rules:binding_delete:delete', 'GRANT', 'ALL'),
('super_admin', 'evaluation_point:list:read', 'GRANT', 'ALL'),
('super_admin', 'evaluation_point:detail:read', 'GRANT', 'ALL'),
('super_admin', 'evaluation_point:create:write', 'GRANT', 'ALL'),
('super_admin', 'evaluation_point:update:write', 'GRANT', 'ALL'),
('super_admin', 'evaluation_point:delete:delete', 'GRANT', 'ALL'),
('super_admin', 'users:list:read', 'GRANT', 'ALL'),
('super_admin', 'users:create:write', 'GRANT', 'ALL'),
('super_admin', 'users:update:write', 'GRANT', 'ALL'),
@@ -215,6 +253,11 @@ seed(role_key, permission_key, grant_type, data_scope) AS (
('provincial_admin', 'rules:binding_create:write', 'GRANT', 'ALL'),
('provincial_admin', 'rules:binding_update:write', 'GRANT', 'ALL'),
('provincial_admin', 'rules:binding_delete:delete', 'GRANT', 'ALL'),
('provincial_admin', 'evaluation_point:list:read', 'GRANT', 'ALL'),
('provincial_admin', 'evaluation_point:detail:read', 'GRANT', 'ALL'),
('provincial_admin', 'evaluation_point:create:write', 'GRANT', 'ALL'),
('provincial_admin', 'evaluation_point:update:write', 'GRANT', 'ALL'),
('provincial_admin', 'evaluation_point:delete:delete', 'GRANT', 'ALL'),
('provincial_admin', 'users:list:read', 'GRANT', 'ALL'),
('provincial_admin', 'users:create:write', 'GRANT', 'ALL'),
('provincial_admin', 'users:update:write', 'GRANT', 'ALL'),
@@ -242,6 +285,11 @@ seed(role_key, permission_key, grant_type, data_scope) AS (
('admin', 'rules:binding_list:read', 'GRANT', 'DEPT'),
('admin', 'rules:binding_create:write', 'GRANT', 'DEPT'),
('admin', 'rules:binding_update:write', 'GRANT', 'DEPT'),
('admin', 'evaluation_point:list:read', 'GRANT', 'DEPT'),
('admin', 'evaluation_point:detail:read', 'GRANT', 'DEPT'),
('admin', 'evaluation_point:create:write', 'GRANT', 'DEPT'),
('admin', 'evaluation_point:update:write', 'GRANT', 'DEPT'),
('admin', 'evaluation_point:delete:delete', 'GRANT', 'DEPT'),
('admin', 'users:list:read', 'GRANT', 'DEPT'),
('admin', 'users:update:write', 'GRANT', 'DEPT'),