-- ============================================================
-- 角色路由权限初始化脚本
-- 说明：为各角色分配路由权限（只分配一级菜单权限，子路由自动继承）
-- 生成时间: 2025-11-17
-- ============================================================

-- 清空现有权限（如果需要重新初始化）
-- TRUNCATE TABLE role_route;

-- ============================================================
-- 1. 超级管理员 (super_admin) - 拥有所有权限
-- ============================================================

INSERT INTO role_route (role_id, route_id)
SELECT 12, id FROM sys_routes WHERE parent_id IS NULL AND is_hidden = false;

-- ============================================================
-- 2. 系统管理员 (admin) - 拥有所有权限
-- ============================================================

INSERT INTO role_route (role_id, route_id)
SELECT 1, id FROM sys_routes WHERE parent_id IS NULL AND is_hidden = false;

-- ============================================================
-- 3. 系统管理员 (system_admin) - 拥有所有权限
-- ============================================================

INSERT INTO role_route (role_id, route_id)
SELECT 13, id FROM sys_routes WHERE parent_id IS NULL AND is_hidden = false;

-- ============================================================
-- 4. 业务管理员 (business_admin) - 核心业务权限
-- ============================================================

INSERT INTO role_route (role_id, route_id)
SELECT 14, id FROM sys_routes
WHERE parent_id IS NULL AND is_hidden = false
AND route_path IN (
    '/home',              -- 系统概览
    '/documents',         -- 文档管理
    '/rules',            -- 评查规则库
    '/contract-template', -- 合同模板
    '/cross-checking',    -- 交叉评查
    '/chat-with-llm'      -- AI法务助手
);

-- ============================================================
-- 5. 文档管理员 (document_admin) - 文档相关权限
-- ============================================================

INSERT INTO role_route (role_id, route_id)
SELECT 15, id FROM sys_routes
WHERE parent_id IS NULL AND is_hidden = false
AND route_path IN (
    '/home',              -- 系统概览
    '/documents',         -- 文档管理
    '/rules',            -- 评查规则库
    '/contract-template'  -- 合同模板
);

-- ============================================================
-- 6. 评查管理员 (evaluation_admin) - 评查相关权限
-- ============================================================

INSERT INTO role_route (role_id, route_id)
SELECT 16, id FROM sys_routes
WHERE parent_id IS NULL AND is_hidden = false
AND route_path IN (
    '/home',              -- 系统概览
    '/documents',         -- 文档管理
    '/rules',            -- 评查规则库
    '/chat-with-llm'      -- AI法务助手
);

-- ============================================================
-- 7. 交叉评查管理员 (crossreview_admin) - 交叉评查权限
-- ============================================================

INSERT INTO role_route (role_id, route_id)
SELECT 17, id FROM sys_routes
WHERE parent_id IS NULL AND is_hidden = false
AND route_path IN (
    '/home',              -- 系统概览
    '/documents',         -- 文档管理
    '/cross-checking'     -- 交叉评查
);

-- ============================================================
-- 8. 评查员 (auditor) - 执行评查任务
-- ============================================================

INSERT INTO role_route (role_id, route_id)
SELECT 18, id FROM sys_routes
WHERE parent_id IS NULL AND is_hidden = false
AND route_path IN (
    '/home',              -- 系统概览
    '/documents',         -- 文档管理
    '/rules',            -- 评查规则库
    '/cross-checking',    -- 交叉评查
    '/chat-with-llm'      -- AI法务助手
);

-- ============================================================
-- 9. 上传者 (uploader) - 仅上传文档
-- ============================================================

INSERT INTO role_route (role_id, route_id)
SELECT 19, id FROM sys_routes
WHERE parent_id IS NULL AND is_hidden = false
AND route_path IN (
    '/home',              -- 系统概览
    '/documents'          -- 文档管理
);

-- ============================================================
-- 10. 部门主管 (deptLeader) - 部门管理权限
-- ============================================================

INSERT INTO role_route (role_id, route_id)
SELECT 3, id FROM sys_routes
WHERE parent_id IS NULL AND is_hidden = false
AND route_path IN (
    '/home',              -- 系统概览
    '/documents',         -- 文档管理
    '/rules',            -- 评查规则库
    '/contract-template', -- 合同模板
    '/cross-checking',    -- 交叉评查
    '/chat-with-llm'      -- AI法务助手
);

-- ============================================================
-- 11. 小组组长 (groupLeader) - 小组管理权限
-- ============================================================

INSERT INTO role_route (role_id, route_id)
SELECT 4, id FROM sys_routes
WHERE parent_id IS NULL AND is_hidden = false
AND route_path IN (
    '/home',              -- 系统概览
    '/documents',         -- 文档管理
    '/rules',            -- 评查规则库
    '/cross-checking',    -- 交叉评查
    '/chat-with-llm'      -- AI法务助手
);

-- ============================================================
-- 12. 普通员工 (common) - 基本权限
-- ============================================================

INSERT INTO role_route (role_id, route_id)
SELECT 2, id FROM sys_routes
WHERE parent_id IS NULL AND is_hidden = false
AND route_path IN (
    '/home',              -- 系统概览
    '/documents',         -- 文档管理
    '/chat-with-llm'      -- AI法务助手
);

-- ============================================================
-- 13. 访客 (guest) - 只读权限
-- ============================================================

INSERT INTO role_route (role_id, route_id)
SELECT 20, id FROM sys_routes
WHERE parent_id IS NULL AND is_hidden = false
AND route_path IN (
    '/home'               -- 系统概览
);

-- ============================================================
-- 验证权限配置
-- ============================================================

-- 查看各角色的路由权限数量
SELECT
    r.role_name,
    r.role_key,
    COUNT(rr.route_id) as route_count
FROM roles r
LEFT JOIN role_route rr ON r.id = rr.role_id
GROUP BY r.id, r.role_name, r.role_key
ORDER BY route_count DESC;

-- 查看管理员角色的具体路由权限
SELECT
    r.role_name,
    sr.route_path,
    sr.route_title,
    sr.sort_order
FROM role_route rr
JOIN roles r ON rr.role_id = r.id
JOIN sys_routes sr ON rr.route_id = sr.id
WHERE r.role_key IN ('admin', 'super_admin')
ORDER BY r.role_name, sr.sort_order;

-- ============================================================
-- 完成！
-- ============================================================

-- 提示：执行此脚本后，请清除浏览器缓存并重新登录系统
