feat: migrate cross review to v3 leaudit flow

This commit is contained in:
wren
2026-05-07 18:18:59 +08:00
parent 35e0c45c42
commit 1c84209f38
23 changed files with 5172 additions and 39 deletions
@@ -0,0 +1,104 @@
-- ============================================================================
-- LeAudit Platform — 交叉评查第一阶段表结构
-- ============================================================================
BEGIN;
CREATE TABLE IF NOT EXISTS leaudit_cross_review_tasks (
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
task_name VARCHAR(255) NOT NULL,
task_type VARCHAR(32) NOT NULL,
doc_type_id BIGINT,
doc_type_code VARCHAR(64),
assigner_id BIGINT NOT NULL,
status VARCHAR(32) NOT NULL DEFAULT 'in_progress',
create_time TIMESTAMPTZ NOT NULL DEFAULT NOW(),
update_time TIMESTAMPTZ NOT NULL DEFAULT NOW(),
delete_time TIMESTAMPTZ
);
CREATE INDEX IF NOT EXISTS idx_lcr_tasks_assigner_id ON leaudit_cross_review_tasks (assigner_id);
CREATE INDEX IF NOT EXISTS idx_lcr_tasks_status ON leaudit_cross_review_tasks (status);
CREATE INDEX IF NOT EXISTS idx_lcr_tasks_doc_type_id ON leaudit_cross_review_tasks (doc_type_id);
COMMENT ON TABLE leaudit_cross_review_tasks IS '交叉评查任务主表';
CREATE TABLE IF NOT EXISTS leaudit_cross_review_task_members (
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
task_id BIGINT NOT NULL,
user_id BIGINT NOT NULL,
member_role VARCHAR(32) NOT NULL DEFAULT 'participant',
create_time TIMESTAMPTZ NOT NULL DEFAULT NOW(),
update_time TIMESTAMPTZ NOT NULL DEFAULT NOW(),
delete_time TIMESTAMPTZ
);
CREATE INDEX IF NOT EXISTS idx_lcr_task_members_task_id ON leaudit_cross_review_task_members (task_id);
CREATE INDEX IF NOT EXISTS idx_lcr_task_members_user_id ON leaudit_cross_review_task_members (user_id);
CREATE INDEX IF NOT EXISTS idx_lcr_task_members_role ON leaudit_cross_review_task_members (member_role);
CREATE UNIQUE INDEX IF NOT EXISTS uq_lcr_task_members_task_user_active
ON leaudit_cross_review_task_members (task_id, user_id)
WHERE delete_time IS NULL;
COMMENT ON TABLE leaudit_cross_review_task_members IS '交叉评查任务成员表';
CREATE TABLE IF NOT EXISTS leaudit_cross_review_task_documents (
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
task_id BIGINT NOT NULL,
document_id BIGINT NOT NULL,
audit_status INTEGER NOT NULL DEFAULT 0,
create_time TIMESTAMPTZ NOT NULL DEFAULT NOW(),
update_time TIMESTAMPTZ NOT NULL DEFAULT NOW(),
delete_time TIMESTAMPTZ
);
CREATE INDEX IF NOT EXISTS idx_lcr_task_documents_task_id ON leaudit_cross_review_task_documents (task_id);
CREATE INDEX IF NOT EXISTS idx_lcr_task_documents_document_id ON leaudit_cross_review_task_documents (document_id);
CREATE INDEX IF NOT EXISTS idx_lcr_task_documents_task_status ON leaudit_cross_review_task_documents (task_id, audit_status);
CREATE UNIQUE INDEX IF NOT EXISTS uq_lcr_task_documents_task_document_active
ON leaudit_cross_review_task_documents (task_id, document_id)
WHERE delete_time IS NULL;
COMMENT ON TABLE leaudit_cross_review_task_documents IS '交叉评查任务文档挂载表';
CREATE TABLE IF NOT EXISTS leaudit_cross_review_proposals (
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
task_id BIGINT NOT NULL,
document_id BIGINT NOT NULL,
rule_result_id BIGINT NOT NULL,
proposer_id BIGINT NOT NULL,
proposed_score_delta NUMERIC(10, 2) NOT NULL,
reason TEXT NOT NULL,
status VARCHAR(32) NOT NULL DEFAULT 'pending',
create_time TIMESTAMPTZ NOT NULL DEFAULT NOW(),
update_time TIMESTAMPTZ NOT NULL DEFAULT NOW(),
delete_time TIMESTAMPTZ
);
CREATE INDEX IF NOT EXISTS idx_lcr_proposals_task_id ON leaudit_cross_review_proposals (task_id);
CREATE INDEX IF NOT EXISTS idx_lcr_proposals_document_id ON leaudit_cross_review_proposals (document_id);
CREATE INDEX IF NOT EXISTS idx_lcr_proposals_rule_result_id ON leaudit_cross_review_proposals (rule_result_id);
CREATE INDEX IF NOT EXISTS idx_lcr_proposals_proposer_id ON leaudit_cross_review_proposals (proposer_id);
CREATE INDEX IF NOT EXISTS idx_lcr_proposals_status ON leaudit_cross_review_proposals (status);
COMMENT ON TABLE leaudit_cross_review_proposals IS '交叉评查提案表';
CREATE TABLE IF NOT EXISTS leaudit_cross_review_votes (
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
proposal_id BIGINT NOT NULL,
voter_id BIGINT NOT NULL,
vote_type VARCHAR(16) NOT NULL,
create_time TIMESTAMPTZ NOT NULL DEFAULT NOW(),
update_time TIMESTAMPTZ NOT NULL DEFAULT NOW(),
delete_time TIMESTAMPTZ
);
CREATE INDEX IF NOT EXISTS idx_lcr_votes_proposal_id ON leaudit_cross_review_votes (proposal_id);
CREATE INDEX IF NOT EXISTS idx_lcr_votes_voter_id ON leaudit_cross_review_votes (voter_id);
CREATE UNIQUE INDEX IF NOT EXISTS uq_lcr_votes_proposal_voter_active
ON leaudit_cross_review_votes (proposal_id, voter_id)
WHERE delete_time IS NULL;
COMMENT ON TABLE leaudit_cross_review_votes IS '交叉评查投票表';
COMMIT;
@@ -0,0 +1,84 @@
-- ============================================================================
-- 交叉评查第一阶段权限种子
-- ============================================================================
BEGIN;
INSERT INTO permissions (
permission_key, module, resource, action, description, display_name,
permission_type, is_system, metadata, created_at, updated_at,
created_by, updated_by, parent_id, sort_order, route_id, api_path, api_method, related_routes
)
VALUES
('cross_review:task:create', 'cross_review', 'task', 'create', '创建交叉评查任务', '创建交叉评查任务', 'API', TRUE, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, NULL, 200, NULL, '/api/v3/cross-review/tasks', 'POST', ARRAY['/cross-checking/upload']),
('cross_review:task:read', 'cross_review', 'task', 'read', '查看交叉评查任务', '查看交叉评查任务', 'API', TRUE, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, NULL, 201, NULL, '/api/v3/cross-review/tasks/query', 'POST', ARRAY['/cross-checking']),
('cross_review:progress:view', 'cross_review', 'progress', 'view', '查看交叉评查任务进度', '查看任务进度', 'API', TRUE, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, NULL, 202, NULL, '/api/v3/cross-review/tasks/{task_id}/progress', 'GET', ARRAY['/cross-checking']),
('cross_review:document:read', 'cross_review', 'document', 'read', '查看交叉评查任务文档', '查看任务文档', 'API', TRUE, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, NULL, 203, NULL, '/api/v3/cross-review/tasks/{task_id}/documents', 'GET', ARRAY['/cross-checking','/cross-checking/result']),
('cross_review:document:complete', 'cross_review', 'document', 'complete', '确认交叉评查文档完成', '确认文档完成', 'API', TRUE, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, NULL, 204, NULL, '/api/v3/cross-review/tasks/{task_id}/can-confirm', 'GET', ARRAY['/cross-checking/result']),
('cross_review:proposal:create', 'cross_review', 'proposal', 'create', '创建交叉评查提案', '创建交叉评查提案', 'API', TRUE, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, NULL, 205, NULL, '/api/v3/cross-review/proposals', 'POST', ARRAY['/cross-checking/result']),
('cross_review:proposal:read', 'cross_review', 'proposal', 'read', '查看交叉评查提案', '查看交叉评查提案', 'API', TRUE, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, NULL, 206, NULL, '/api/v3/cross-review/documents/{document_id}/proposals', 'GET', ARRAY['/cross-checking/result']),
('cross_review:proposal:delete', 'cross_review', 'proposal', 'delete', '撤销交叉评查提案', '撤销交叉评查提案', 'API', TRUE, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, NULL, 207, NULL, '/api/v3/cross-review/proposals/{proposal_id}', 'DELETE', ARRAY['/cross-checking/result']),
('cross_review:proposal:vote', 'cross_review', 'proposal', 'vote', '交叉评查提案投票', '交叉评查提案投票', 'API', TRUE, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, NULL, 208, NULL, '/api/v3/cross-review/proposals/{proposal_id}/votes', 'POST', ARRAY['/cross-checking/result'])
ON CONFLICT (permission_key) DO UPDATE SET
module = EXCLUDED.module,
resource = EXCLUDED.resource,
action = EXCLUDED.action,
description = EXCLUDED.description,
display_name = EXCLUDED.display_name,
updated_at = CURRENT_TIMESTAMP,
api_path = EXCLUDED.api_path,
api_method = EXCLUDED.api_method,
sort_order = EXCLUDED.sort_order,
related_routes = EXCLUDED.related_routes;
WITH role_map AS (
SELECT id, role_key FROM roles WHERE role_key IN ('super_admin', 'provincial_admin', 'admin', 'common')
),
perm_map AS (
SELECT id, permission_key FROM permissions WHERE permission_key LIKE 'cross_review:%'
),
seed(role_key, permission_key, grant_type, data_scope) AS (
VALUES
('super_admin', 'cross_review:task:create', 'GRANT', 'ALL'),
('super_admin', 'cross_review:task:read', 'GRANT', 'ALL'),
('super_admin', 'cross_review:progress:view', 'GRANT', 'ALL'),
('super_admin', 'cross_review:document:read', 'GRANT', 'ALL'),
('super_admin', 'cross_review:document:complete', 'GRANT', 'ALL'),
('super_admin', 'cross_review:proposal:create', 'GRANT', 'ALL'),
('super_admin', 'cross_review:proposal:read', 'GRANT', 'ALL'),
('super_admin', 'cross_review:proposal:delete', 'GRANT', 'ALL'),
('super_admin', 'cross_review:proposal:vote', 'GRANT', 'ALL'),
('provincial_admin', 'cross_review:task:create', 'GRANT', 'ALL'),
('provincial_admin', 'cross_review:task:read', 'GRANT', 'ALL'),
('provincial_admin', 'cross_review:progress:view', 'GRANT', 'ALL'),
('provincial_admin', 'cross_review:document:read', 'GRANT', 'ALL'),
('provincial_admin', 'cross_review:document:complete', 'GRANT', 'ALL'),
('provincial_admin', 'cross_review:proposal:create', 'GRANT', 'ALL'),
('provincial_admin', 'cross_review:proposal:read', 'GRANT', 'ALL'),
('provincial_admin', 'cross_review:proposal:delete', 'GRANT', 'ALL'),
('provincial_admin', 'cross_review:proposal:vote', 'GRANT', 'ALL'),
('admin', 'cross_review:task:create', 'GRANT', 'DEPT'),
('admin', 'cross_review:task:read', 'GRANT', 'DEPT'),
('admin', 'cross_review:progress:view', 'GRANT', 'DEPT'),
('admin', 'cross_review:document:read', 'GRANT', 'DEPT'),
('admin', 'cross_review:document:complete', 'GRANT', 'DEPT'),
('admin', 'cross_review:proposal:create', 'GRANT', 'DEPT'),
('admin', 'cross_review:proposal:read', 'GRANT', 'DEPT'),
('admin', 'cross_review:proposal:delete', 'GRANT', 'DEPT'),
('admin', 'cross_review:proposal:vote', 'GRANT', 'DEPT'),
('common', 'cross_review:task:read', 'GRANT', 'SELF'),
('common', 'cross_review:progress:view', 'GRANT', 'SELF'),
('common', 'cross_review:document:read', 'GRANT', 'SELF'),
('common', 'cross_review:proposal:read', 'GRANT', 'SELF')
)
INSERT INTO role_permissions (role_id, permission_id, grant_type, data_scope, created_at, updated_at)
SELECT rm.id, pm.id, seed.grant_type, seed.data_scope, NOW(), NOW()
FROM seed
JOIN role_map rm ON rm.role_key = seed.role_key
JOIN perm_map pm ON pm.permission_key = seed.permission_key
ON CONFLICT (role_id, permission_id) DO UPDATE SET
grant_type = EXCLUDED.grant_type,
data_scope = EXCLUDED.data_scope,
updated_at = NOW();
COMMIT;
+4 -1
View File
@@ -162,7 +162,10 @@ seed(role_key, route_path, permission, status) AS (
('admin', '/contract-template/list', 'RW', 1),
('admin', '/cross-checking', 'RW', 1),
('admin', '/cross-checking/upload', 'RW', 1),
('admin', '/cross-checking/result', 'RW', 1)
('admin', '/cross-checking/result', 'RW', 1),
('common', '/cross-checking', 'R', 1),
('common', '/cross-checking/result', 'R', 1)
)
INSERT INTO role_route (role_id, route_id, permission, status, created_at, updated_at)
SELECT rm.id, tm.id, s.permission, s.status, NOW(), NOW()
+52 -11
View File
@@ -96,18 +96,27 @@ VALUES
('evaluation_point:create:write', 'evaluation_point', 'create', 'write', '创建评查点', '创建评查点', 'API', TRUE, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, NULL, 54, 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, 55, 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, 56, NULL, '/api/v3/evaluation-points/{id}', 'DELETE', NULL),
('cross_review:task:create', 'cross_review', 'task', 'create', '创建交叉评查任务', '创建交叉评查任务', 'API', TRUE, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, NULL, 57, NULL, '/api/v3/cross-review/tasks', 'POST', ARRAY['/cross-checking/upload']),
('cross_review:task:read', 'cross_review', 'task', 'read', '查看交叉评查任务', '查看交叉评查任务', 'API', TRUE, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, NULL, 58, NULL, '/api/v3/cross-review/tasks/query', 'POST', ARRAY['/cross-checking']),
('cross_review:progress:view', 'cross_review', 'progress', 'view', '查看交叉评查任务进度', '查看交叉评查任务进度', 'API', TRUE, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, NULL, 59, NULL, '/api/v3/cross-review/tasks/{task_id}/progress', 'GET', ARRAY['/cross-checking']),
('cross_review:document:read', 'cross_review', 'document', 'read', '查看交叉评查任务文档', '查看交叉评查任务文档', 'API', TRUE, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, NULL, 60, NULL, '/api/v3/cross-review/tasks/{task_id}/documents', 'GET', ARRAY['/cross-checking','/cross-checking/result']),
('cross_review:document:complete', 'cross_review', 'document', 'complete', '确认交叉评查文档完成', '确认交叉评查文档完成', 'API', TRUE, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, NULL, 61, NULL, '/api/v3/cross-review/tasks/{task_id}/can-confirm', 'GET', ARRAY['/cross-checking/result']),
('cross_review:proposal:create', 'cross_review', 'proposal', 'create', '创建交叉评查提案', '创建交叉评查提案', 'API', TRUE, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, NULL, 62, NULL, '/api/v3/cross-review/proposals', 'POST', ARRAY['/cross-checking/result']),
('cross_review:proposal:read', 'cross_review', 'proposal', 'read', '查看交叉评查提案', '查看交叉评查提案', 'API', TRUE, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, NULL, 63, NULL, '/api/v3/cross-review/documents/{document_id}/proposals', 'GET', ARRAY['/cross-checking/result']),
('cross_review:proposal:delete', 'cross_review', 'proposal', 'delete', '撤销交叉评查提案', '撤销交叉评查提案', 'API', TRUE, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, NULL, 64, NULL, '/api/v3/cross-review/proposals/{proposal_id}', 'DELETE', ARRAY['/cross-checking/result']),
('cross_review:proposal:vote', 'cross_review', 'proposal', 'vote', '交叉评查提案投票', '交叉评查提案投票', 'API', TRUE, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, NULL, 65, NULL, '/api/v3/cross-review/proposals/{proposal_id}/votes', 'POST', ARRAY['/cross-checking/result']),
('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),
('users:update:write', 'users', 'update', 'write', '更新用户', '更新用户', 'API', TRUE, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, NULL, 62, NULL, '/api/users/{user_id}', 'PUT', NULL),
('users:disable:write', 'users', 'disable', 'write', '禁用/启用用户', '禁用用户', 'API', TRUE, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, NULL, 63, NULL, '/api/users/{user_id}/disable', 'PUT', NULL),
('users:roles_assign:write', 'users', 'roles_assign', 'write', '分配用户角色', '分配用户角色', 'API', TRUE, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, NULL, 64, NULL, '/api/users/{user_id}/roles', 'POST', NULL),
('users:list:read', 'users', 'list', 'read', '查看用户列表', '用户列表', 'API', TRUE, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, NULL, 70, NULL, '/api/users/list', 'GET', NULL),
('users:create:write', 'users', 'create', 'write', '创建用户', '创建用户', 'API', TRUE, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, NULL, 71, NULL, '/api/users', 'POST', NULL),
('users:update:write', 'users', 'update', 'write', '更新用户', '更新用户', 'API', TRUE, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, NULL, 72, NULL, '/api/users/{user_id}', 'PUT', NULL),
('users:disable:write', 'users', 'disable', 'write', '禁用/启用用户', '禁用用户', 'API', TRUE, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, NULL, 73, NULL, '/api/users/{user_id}/disable', 'PUT', NULL),
('users:roles_assign:write', 'users', 'roles_assign', 'write', '分配用户角色', '分配用户角色', 'API', TRUE, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, NULL, 74, NULL, '/api/users/{user_id}/roles', 'POST', NULL),
('rbac:roles:read', 'rbac', 'roles', 'read', '查看角色列表', '角色列表', 'API', TRUE, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, NULL, 70, NULL, '/api/rbac/roles', 'GET', NULL),
('rbac:roles:update', 'rbac', 'roles', 'update', '维护角色信息', '维护角色', 'API', TRUE, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, NULL, 71, NULL, '/api/rbac/roles/{role_id}', 'PUT', NULL),
('rbac:permissions:read', 'rbac', 'permissions', 'read', '查看权限点列表', '权限点列表', 'API', TRUE, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, NULL, 72, NULL, '/api/rbac/permissions', 'GET', NULL),
('rbac:role_permissions:write', 'rbac', 'role_permissions', 'write', '分配角色权限', '分配角色权限', 'API', TRUE, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, NULL, 73, NULL, '/api/rbac/roles/{role_id}/permissions', 'POST', NULL),
('rbac:role_routes:write', 'rbac', 'role_routes', 'write', '分配角色菜单', '分配角色菜单', 'API', TRUE, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, NULL, 74, NULL, '/api/rbac/roles/{role_id}/routes', 'PUT', NULL)
('rbac:roles:read', 'rbac', 'roles', 'read', '查看角色列表', '角色列表', 'API', TRUE, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, NULL, 80, NULL, '/api/rbac/roles', 'GET', NULL),
('rbac:roles:update', 'rbac', 'roles', 'update', '维护角色信息', '维护角色', 'API', TRUE, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, NULL, 81, NULL, '/api/rbac/roles/{role_id}', 'PUT', NULL),
('rbac:permissions:read', 'rbac', 'permissions', 'read', '查看权限点列表', '权限点列表', 'API', TRUE, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, NULL, 82, NULL, '/api/rbac/permissions', 'GET', NULL),
('rbac:role_permissions:write', 'rbac', 'role_permissions', 'write', '分配角色权限', '分配角色权限', 'API', TRUE, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, NULL, 83, NULL, '/api/rbac/roles/{role_id}/permissions', 'POST', NULL),
('rbac:role_routes:write', 'rbac', 'role_routes', 'write', '分配角色菜单', '分配角色菜单', 'API', TRUE, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, NULL, 84, NULL, '/api/rbac/roles/{role_id}/routes', 'PUT', NULL)
ON CONFLICT (permission_key) DO UPDATE SET
module = EXCLUDED.module,
resource = EXCLUDED.resource,
@@ -182,7 +191,9 @@ seed(role_key, route_path, permission, status) AS (
('common', '/documents', 'R', 1),
('common', '/documents/list', 'R', 1),
('common', '/audit', 'R', 1),
('common', '/audit/runs', 'R', 1)
('common', '/audit/runs', 'R', 1),
('common', '/cross-checking', 'R', 1),
('common', '/cross-checking/result', 'R', 1)
)
INSERT INTO role_route (role_id, route_id, permission, status, created_at, updated_at)
SELECT rm.id, tm.id, s.permission, s.status, NOW(), NOW()
@@ -231,6 +242,15 @@ seed(role_key, permission_key, grant_type, data_scope) AS (
('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', 'cross_review:task:create', 'GRANT', 'ALL'),
('super_admin', 'cross_review:task:read', 'GRANT', 'ALL'),
('super_admin', 'cross_review:progress:view', 'GRANT', 'ALL'),
('super_admin', 'cross_review:document:read', 'GRANT', 'ALL'),
('super_admin', 'cross_review:document:complete', 'GRANT', 'ALL'),
('super_admin', 'cross_review:proposal:create', 'GRANT', 'ALL'),
('super_admin', 'cross_review:proposal:read', 'GRANT', 'ALL'),
('super_admin', 'cross_review:proposal:delete', 'GRANT', 'ALL'),
('super_admin', 'cross_review:proposal:vote', 'GRANT', 'ALL'),
('super_admin', 'users:list:read', 'GRANT', 'ALL'),
('super_admin', 'users:create:write', 'GRANT', 'ALL'),
('super_admin', 'users:update:write', 'GRANT', 'ALL'),
@@ -268,6 +288,15 @@ seed(role_key, permission_key, grant_type, data_scope) AS (
('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', 'cross_review:task:create', 'GRANT', 'ALL'),
('provincial_admin', 'cross_review:task:read', 'GRANT', 'ALL'),
('provincial_admin', 'cross_review:progress:view', 'GRANT', 'ALL'),
('provincial_admin', 'cross_review:document:read', 'GRANT', 'ALL'),
('provincial_admin', 'cross_review:document:complete', 'GRANT', 'ALL'),
('provincial_admin', 'cross_review:proposal:create', 'GRANT', 'ALL'),
('provincial_admin', 'cross_review:proposal:read', 'GRANT', 'ALL'),
('provincial_admin', 'cross_review:proposal:delete', 'GRANT', 'ALL'),
('provincial_admin', 'cross_review:proposal:vote', 'GRANT', 'ALL'),
('provincial_admin', 'users:list:read', 'GRANT', 'ALL'),
('provincial_admin', 'users:create:write', 'GRANT', 'ALL'),
('provincial_admin', 'users:update:write', 'GRANT', 'ALL'),
@@ -296,6 +325,15 @@ 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', 'cross_review:task:create', 'GRANT', 'DEPT'),
('admin', 'cross_review:task:read', 'GRANT', 'DEPT'),
('admin', 'cross_review:progress:view', 'GRANT', 'DEPT'),
('admin', 'cross_review:document:read', 'GRANT', 'DEPT'),
('admin', 'cross_review:document:complete', 'GRANT', 'DEPT'),
('admin', 'cross_review:proposal:create', 'GRANT', 'DEPT'),
('admin', 'cross_review:proposal:read', 'GRANT', 'DEPT'),
('admin', 'cross_review:proposal:delete', 'GRANT', 'DEPT'),
('admin', 'cross_review:proposal:vote', 'GRANT', 'DEPT'),
('admin', 'evaluation_point:list:read', 'GRANT', 'DEPT'),
('admin', 'evaluation_point:detail:read', 'GRANT', 'DEPT'),
('admin', 'evaluation_point:create:write', 'GRANT', 'DEPT'),
@@ -312,6 +350,9 @@ seed(role_key, permission_key, grant_type, data_scope) AS (
('common', 'audit:run:execute', 'GRANT', 'SELF'),
('common', 'audit:status:read', 'GRANT', 'SELF'),
('common', 'audit:result:read', 'GRANT', 'SELF'),
('common', 'cross_review:task:read', 'GRANT', 'SELF'),
('common', 'cross_review:progress:view', 'GRANT', 'SELF'),
('common', 'cross_review:document:read', 'GRANT', 'SELF'),
('common', 'rules:list:read', 'GRANT', 'DEPT'),
('common', 'rules:version_list:read', 'GRANT', 'DEPT'),
('common', 'rules:content:read', 'GRANT', 'DEPT'),