-- 初始化权限相关基础数据（与 sys schema 对应）
-- 包含：部门、角色、模块、权限、视图及其关联关系

-- =============================
-- 1. 初始化根部门
-- =============================
INSERT INTO sys.tb_sys_dept (
  optsn, dept_id, name, parent_id, dept_path, description, 
  creator, create_time, deleted
) VALUES
('DEPT-0001', 'dept_root', '根部门', NULL, '/dept_root/', '系统根部门', 
 'system', now(), false);

-- =============================
-- 2. 初始化全局角色
-- =============================
INSERT INTO sys.tb_sys_role (
  optsn, role_id, name, description, scope, owner_dept_id, 
  status, creator, dept_path, create_time, deleted
) VALUES
-- 超级管理员（全局）
('ROLE-0001', 'role_super_admin', '超级管理员', '拥有系统所有权限的最高管理员', 
 'global', NULL, true, 'system', NULL, now(), false),

-- 系统管理员（全局）
('ROLE-0002', 'role_system_admin', '系统管理员', '负责系统配置和用户管理', 
 'global', NULL, true, 'system', NULL, now(), false),

-- 普通用户（全局）
('ROLE-0003', 'role_user', '普通用户', '系统普通用户角色', 
 'global', NULL, true, 'system', NULL, now(), false),

-- 访客（全局）
('ROLE-0004', 'role_guest', '访客', '系统访客角色，仅限查看基础信息', 
 'global', NULL, true, 'system', NULL, now(), false);

-- =============================
-- 3. 初始化系统模块
-- =============================
INSERT INTO sys.tb_sys_module (
  optsn, module_id, name, description, 
  creator, dept_path, create_time, deleted
) VALUES
('MODULE-0001', 'module_system', '系统管理', '用户、角色、权限、部门管理', 
 'system', NULL, now(), false),

('MODULE-0002', 'module_file', '文件管理', '文件上传、下载、关联管理', 
 'system', NULL, now(), false),

('MODULE-0003', 'module_message', '消息通知', '消息发送、接收、模板管理', 
 'system', NULL, now(), false),

('MODULE-0004', 'module_config', '配置管理', '系统配置参数管理', 
 'system', NULL, now(), false),

('MODULE-0005', 'module_knowledge', '知识库', '知识文档管理', 
 'system', NULL, now(), false),

('MODULE-0006', 'module_bidding', '招投标', '招投标业务管理', 
 'system', NULL, now(), false),

('MODULE-0007', 'module_workcase', '智能客服', '客服工单管理', 
 'system', NULL, now(), false);

-- =============================
-- 4. 初始化系统权限
-- =============================
INSERT INTO sys.tb_sys_permission (
  optsn, permission_id, name, code, description, module_id, 
  status, creator, dept_path, create_time, deleted
) VALUES
-- 系统管理模块权限
('PERM-0001', 'perm_user_view', '用户查看', 'system:user:view', '查看用户列表和详情', 'module_system', 
 true, 'system', NULL, now(), false),
('PERM-0002', 'perm_user_create', '用户创建', 'system:user:create', '创建新用户', 'module_system', 
 true, 'system', NULL, now(), false),
('PERM-0003', 'perm_user_edit', '用户编辑', 'system:user:edit', '编辑用户信息', 'module_system', 
 true, 'system', NULL, now(), false),
('PERM-0004', 'perm_user_delete', '用户删除', 'system:user:delete', '删除用户', 'module_system', 
 true, 'system', NULL, now(), false),

('PERM-0011', 'perm_role_view', '角色查看', 'system:role:view', '查看角色列表和详情', 'module_system', 
 true, 'system', NULL, now(), false),
('PERM-0012', 'perm_role_create', '角色创建', 'system:role:create', '创建新角色', 'module_system', 
 true, 'system', NULL, now(), false),
('PERM-0013', 'perm_role_edit', '角色编辑', 'system:role:edit', '编辑角色信息', 'module_system', 
 true, 'system', NULL, now(), false),
('PERM-0014', 'perm_role_delete', '角色删除', 'system:role:delete', '删除角色', 'module_system', 
 true, 'system', NULL, now(), false),

('PERM-0021', 'perm_dept_view', '部门查看', 'system:dept:view', '查看部门列表和详情', 'module_system', 
 true, 'system', NULL, now(), false),
('PERM-0022', 'perm_dept_create', '部门创建', 'system:dept:create', '创建新部门', 'module_system', 
 true, 'system', NULL, now(), false),
('PERM-0023', 'perm_dept_edit', '部门编辑', 'system:dept:edit', '编辑部门信息', 'module_system', 
 true, 'system', NULL, now(), false),
('PERM-0024', 'perm_dept_delete', '部门删除', 'system:dept:delete', '删除部门', 'module_system', 
 true, 'system', NULL, now(), false),

('PERM-0031', 'perm_permission_view', '权限查看', 'system:permission:view', '查看权限列表', 'module_system', 
 true, 'system', NULL, now(), false),
('PERM-0032', 'perm_permission_manage', '权限管理', 'system:permission:manage', '管理权限配置', 'module_system', 
 true, 'system', NULL, now(), false),

-- 系统管理模块导出权限
('PERM-0041', 'perm_user_export', '用户导出', 'system:user:export', '导出用户数据', 'module_system', 
 true, 'system', NULL, now(), false),
('PERM-0042', 'perm_role_export', '角色导出', 'system:role:export', '导出角色数据', 'module_system', 
 true, 'system', NULL, now(), false),
('PERM-0043', 'perm_dept_export', '部门导出', 'system:dept:export', '导出部门数据', 'module_system', 
 true, 'system', NULL, now(), false),

-- 文件管理模块权限
('PERM-0101', 'perm_file_view', '文件查看', 'file:file:view', '查看文件列表', 'module_file', 
 true, 'system', NULL, now(), false),
('PERM-0102', 'perm_file_upload', '文件上传', 'file:file:upload', '上传文件', 'module_file', 
 true, 'system', NULL, now(), false),
('PERM-0103', 'perm_file_download', '文件下载', 'file:file:download', '下载文件', 'module_file', 
 true, 'system', NULL, now(), false),
('PERM-0104', 'perm_file_delete', '文件删除', 'file:file:delete', '删除文件', 'module_file', 
 true, 'system', NULL, now(), false),
('PERM-0105', 'perm_file_export', '文件导出', 'file:file:export', '导出文件列表数据', 'module_file', 
 true, 'system', NULL, now(), false),

-- 消息通知模块权限
('PERM-0201', 'perm_message_view', '消息查看', 'message:message:view', '查看消息列表', 'module_message', 
 true, 'system', NULL, now(), false),
('PERM-0202', 'perm_message_send', '消息发送', 'message:message:send', '发送消息通知', 'module_message', 
 true, 'system', NULL, now(), false),
('PERM-0203', 'perm_message_manage', '消息管理', 'message:message:manage', '管理消息模板和配置', 'module_message', 
 true, 'system', NULL, now(), false),
('PERM-0204', 'perm_message_export', '消息导出', 'message:message:export', '导出消息数据', 'module_message', 
 true, 'system', NULL, now(), false),

-- 配置管理模块权限
('PERM-0301', 'perm_config_view', '配置查看', 'config:config:view', '查看系统配置', 'module_config', 
 true, 'system', NULL, now(), false),
('PERM-0302', 'perm_config_edit', '配置编辑', 'config:config:edit', '修改系统配置', 'module_config', 
 true, 'system', NULL, now(), false),
('PERM-0303', 'perm_config_export', '配置导出', 'config:config:export', '导出系统配置数据', 'module_config', 
 true, 'system', NULL, now(), false),

-- 日志模块权限
('PERM-0401', 'perm_log_view', '日志查看', 'log:log:view', '查看系统日志', 'module_system', 
 true, 'system', NULL, now(), false),
('PERM-0402', 'perm_log_export', '日志导出', 'log:log:export', '导出系统日志数据', 'module_system', 
 true, 'system', NULL, now(), false),

-- 平台基础菜单访问权限（所有登录用户都有）
('PERM-0501', 'perm_platform_home', '工作台访问', 'platform:home:view', '访问平台工作台', 'module_system', 
 true, 'system', NULL, now(), false),
('PERM-0502', 'perm_platform_chat', 'AI助手访问', 'platform:chat:view', '访问AI助手', 'module_system', 
 true, 'system', NULL, now(), false),
('PERM-0503', 'perm_platform_bidding', '招标助手访问', 'platform:bidding:view', '访问招标助手（iframe）', 'module_bidding', 
 true, 'system', NULL, now(), false),
('PERM-0504', 'perm_platform_workcase', '泰豪小电访问', 'platform:workcase:view', '访问泰豪小电客服（iframe）', 'module_workcase', 
 true, 'system', NULL, now(), false),
('PERM-0505', 'perm_platform_workflow', '智能体编排访问', 'platform:workflow:view', '访问智能体编排（iframe）', 'module_system', 
 true, 'system', NULL, now(), false);

-- =============================
-- 5. 初始化视图（菜单）
-- =============================
INSERT INTO sys.tb_sys_view (
  optsn, view_id, name, parent_id, url, component, icon, type, 
  view_type, iframe_url, service, layout, order_num, description, 
  creator, create_time, deleted
) VALUES
-- =========================
-- 平台应用菜单 (platform)
-- =========================
-- 一级菜单
('VIEW-P002', 'view_platform_chat', '泰豪AI助手', NULL, '/aichat', 'public/Chat/AIChatView.vue', 'ChatDotRound', 1, 
 'route', NULL, 'platform', 'SidebarLayout', 10, '泰豪AI助手-直接智能体对话', 'system', now(), false),
('VIEW-P001', 'view_platform_home', '全部应用', NULL, '/agents', 'public/Agents/AgentPlatformView.vue', 'Grid', 1, 
 'route', NULL, 'platform', 'SidebarLayout', 20, '全部智能体', 'system', now(), false),
-- iframe 嵌入菜单
('VIEW-P005', 'view_platform_workflow', '智能体编排', NULL, NULL, NULL, 'Connection', 1, 
 'iframe', 'http://localhost:3000', 'platform', 'SidebarLayout', 30, 'Dify智能体编排（iframe）', 'system', now(), false),
('VIEW-P003', 'view_platform_bidding', '招标助手', NULL, NULL, NULL, 'Document', 1, 
 'iframe', 'http://localhost:5002', 'platform', 'SidebarLayout', 40, '招标应用（iframe）', 'system', now(), false),
('VIEW-P004', 'view_platform_workcase', '泰豪小电', NULL, ‘’, NULL, 'Service', 1, 
 'iframe', 'http://localhost:5003', 'platform', 'SidebarLayout', 50, '客服应用（iframe）', 'system', now(), false),

-- 系统管理目录
('VIEW-P100', 'view_system', '系统管理', NULL, '/system', NULL, 'Settings', 0, 
 'route', NULL, 'platform', 'SidebarLayout', 100, '系统管理目录', 'system', now(), false),

-- 系统管理子菜单
('VIEW-P101', 'view_user', '用户管理', 'view_system', '/system/user', 'system/UserList', 'Users', 1, 
 'route', NULL, 'platform', 'SidebarLayout', 10, '用户管理页面', 'system', now(), false),

('VIEW-P102', 'view_role', '角色管理', 'view_system', '/system/role', 'system/RoleList', 'Shield', 1, 
 'route', NULL, 'platform', 'SidebarLayout', 20, '角色管理页面', 'system', now(), false),

('VIEW-P103', 'view_dept', '部门管理', 'view_system', '/system/dept', 'system/DeptList', 'Building', 1, 
 'route', NULL, 'platform', 'SidebarLayout', 30, '部门管理页面', 'system', now(), false),

('VIEW-P104', 'view_permission', '权限管理', 'view_system', '/system/permission', 'system/PermissionList', 'Lock', 1, 
 'route', NULL, 'platform', 'SidebarLayout', 40, '权限管理页面', 'system', now(), false),

('VIEW-P105', 'view_config', '配置管理', 'view_system', '/system/config', 'system/ConfigList', 'Settings', 1, 
 'route', NULL, 'platform', 'SidebarLayout', 50, '配置管理页面', 'system', now(), false),

('VIEW-P106', 'view_file', '文件管理', 'view_system', '/system/file', 'system/FileList', 'FileText', 1, 
 'route', NULL, 'platform', 'SidebarLayout', 60, '文件管理页面', 'system', now(), false),

('VIEW-P107', 'view_message', '消息管理', 'view_system', '/system/message', 'system/MessageList', 'Mail', 1, 
 'route', NULL, 'platform', 'SidebarLayout', 70, '消息管理页面', 'system', now(), false),

-- =========================
-- 招标应用菜单 (bidding)
-- =========================
('VIEW-B001', 'view_bidding_home', '首页', NULL, '/home', 'Home', 'House', 1, 
 'route', NULL, 'bidding', 'DefaultLayout', 10, '招标应用首页', 'system', now(), false),

('VIEW-B002', 'view_bidding_list', '招标列表', NULL, '/bidding/list', 'bidding/List', 'List', 1, 
 'route', NULL, 'bidding', 'DefaultLayout', 20, '招标项目列表', 'system', now(), false),

('VIEW-B003', 'view_bidding_detail', '招标详情', NULL, '/bidding/detail', 'bidding/Detail', 'Document', 1, 
 'route', NULL, 'bidding', 'DefaultLayout', 30, '招标项目详情', 'system', now(), false),

('VIEW-B004', 'view_bidding_offer', '投标管理', NULL, '/bidding/offer', 'bidding/Offer', 'Edit', 1, 
 'route', NULL, 'bidding', 'DefaultLayout', 40, '投标管理页面', 'system', now(), false),

-- =========================
-- 客服应用菜单 (workcase)
-- =========================
('VIEW-W001', 'view_workcase_home', '首页', NULL, '/home', 'Home', 'House', 1, 
 'route', NULL, 'workcase', 'DefaultLayout', 10, '客服应用首页', 'system', now(), false),

('VIEW-W002', 'view_workcase_list', '工单列表', NULL, '/workcase/list', 'workcase/List', 'Tickets', 1, 
 'route', NULL, 'workcase', 'DefaultLayout', 20, '工单列表页面', 'system', now(), false),

('VIEW-W003', 'view_workcase_detail', '工单详情', NULL, '/workcase/detail', 'workcase/Detail', 'Document', 1, 
 'route', NULL, 'workcase', 'DefaultLayout', 30, '工单详情页面', 'system', now(), false),

('VIEW-W004', 'view_workcase_chat', '智能客服', NULL, '/workcase/chat', 'workcase/Chat', 'ChatDotRound', 1, 
 'route', NULL, 'workcase', 'DefaultLayout', 40, '智能客服聊天', 'system', now(), false);

-- =============================
-- 6. 角色权限关联（超级管理员拥有所有权限）
-- =============================
INSERT INTO sys.tb_sys_role_permission (
  optsn, role_id, permission_id, creator, dept_path, create_time, deleted
)
SELECT 
  'RP-' || LPAD(ROW_NUMBER() OVER (ORDER BY permission_id)::TEXT, 4, '0'),
  'role_super_admin',
  permission_id,
  'system',
  NULL,
  now(),
  false
FROM sys.tb_sys_permission
WHERE deleted = false;

-- 系统管理员权限（除了用户删除外的系统管理权限 + 所有平台基础菜单）
INSERT INTO sys.tb_sys_role_permission (
  optsn, role_id, permission_id, creator, dept_path, create_time, deleted
)
SELECT 
  'RP-SA-' || LPAD(ROW_NUMBER() OVER (ORDER BY permission_id)::TEXT, 4, '0'),
  'role_system_admin',
  permission_id,
  'system',
  NULL,
  now(),
  false
FROM sys.tb_sys_permission
WHERE deleted = false 
  AND code NOT IN ('system:user:delete', 'system:role:delete', 'system:dept:delete')
  AND (
    module_id IN ('module_system', 'module_file', 'module_message', 'module_config', 'module_bidding', 'module_workcase')
    OR code LIKE 'platform:%:view'  -- 包含所有平台基础菜单权限
  );

-- 普通用户权限（基础查看和文件操作 + 平台基础菜单访问）
INSERT INTO sys.tb_sys_role_permission (
  optsn, role_id, permission_id, creator, dept_path, create_time, deleted
) VALUES
-- 平台基础菜单访问权限
('RP-U-0001', 'role_user', 'perm_platform_home', 'system', NULL, now(), false),
('RP-U-0002', 'role_user', 'perm_platform_chat', 'system', NULL, now(), false),
('RP-U-0003', 'role_user', 'perm_platform_bidding', 'system', NULL, now(), false),
('RP-U-0004', 'role_user', 'perm_platform_workcase', 'system', NULL, now(), false),
('RP-U-0005', 'role_user', 'perm_platform_workflow', 'system', NULL, now(), false),
-- 系统功能权限
('RP-U-0011', 'role_user', 'perm_user_view', 'system', NULL, now(), false),
('RP-U-0012', 'role_user', 'perm_file_view', 'system', NULL, now(), false),
('RP-U-0013', 'role_user', 'perm_file_upload', 'system', NULL, now(), false),
('RP-U-0014', 'role_user', 'perm_file_download', 'system', NULL, now(), false),
('RP-U-0015', 'role_user', 'perm_message_view', 'system', NULL, now(), false),
('RP-U-0016', 'role_user', 'perm_config_view', 'system', NULL, now(), false);

-- 访客权限（仅查看 + 基础菜单访问）
INSERT INTO sys.tb_sys_role_permission (
  optsn, role_id, permission_id, creator, dept_path, create_time, deleted
) VALUES
-- 平台基础菜单访问权限
('RP-G-0001', 'role_guest', 'perm_platform_home', 'system', NULL, now(), false),
('RP-G-0002', 'role_guest', 'perm_platform_chat', 'system', NULL, now(), false),
-- 系统功能权限（仅查看）
('RP-G-0011', 'role_guest', 'perm_user_view', 'system', NULL, now(), false),
('RP-G-0012', 'role_guest', 'perm_file_view', 'system', NULL, now(), false),
('RP-G-0013', 'role_guest', 'perm_message_view', 'system', NULL, now(), false);

-- =============================
-- 7. 视图权限关联
-- =============================
-- 将视图与对应模块的权限关联（使用真正的 view_id，不是 optsn）
INSERT INTO sys.tb_sys_view_permission (
  optsn, view_id, permission_id, creator, dept_path, create_time, deleted
) VALUES
-- 平台基础菜单权限关联（所有登录用户都可访问）
('VP-P001', 'view_platform_home', 'perm_platform_home', 'system', NULL, now(), false),
('VP-P002', 'view_platform_chat', 'perm_platform_chat', 'system', NULL, now(), false),
('VP-P003', 'view_platform_bidding', 'perm_platform_bidding', 'system', NULL, now(), false),
('VP-P004', 'view_platform_workcase', 'perm_platform_workcase', 'system', NULL, now(), false),
('VP-P005', 'view_platform_workflow', 'perm_platform_workflow', 'system', NULL, now(), false),

-- 用户管理视图关联用户权限
('VP-0001', 'view_user', 'perm_user_view', 'system', NULL, now(), false),
('VP-0002', 'view_user', 'perm_user_create', 'system', NULL, now(), false),
('VP-0003', 'view_user', 'perm_user_edit', 'system', NULL, now(), false),
('VP-0004', 'view_user', 'perm_user_delete', 'system', NULL, now(), false),
('VP-0005', 'view_user', 'perm_user_export', 'system', NULL, now(), false),

-- 角色管理视图关联角色权限
('VP-0011', 'view_role', 'perm_role_view', 'system', NULL, now(), false),
('VP-0012', 'view_role', 'perm_role_create', 'system', NULL, now(), false),
('VP-0013', 'view_role', 'perm_role_edit', 'system', NULL, now(), false),
('VP-0014', 'view_role', 'perm_role_delete', 'system', NULL, now(), false),
('VP-0015', 'view_role', 'perm_role_export', 'system', NULL, now(), false),

-- 部门管理视图关联部门权限
('VP-0021', 'view_dept', 'perm_dept_view', 'system', NULL, now(), false),
('VP-0022', 'view_dept', 'perm_dept_create', 'system', NULL, now(), false),
('VP-0023', 'view_dept', 'perm_dept_edit', 'system', NULL, now(), false),
('VP-0024', 'view_dept', 'perm_dept_delete', 'system', NULL, now(), false),
('VP-0025', 'view_dept', 'perm_dept_export', 'system', NULL, now(), false),

-- 权限管理视图关联权限管理权限
('VP-0031', 'view_permission', 'perm_permission_view', 'system', NULL, now(), false),
('VP-0032', 'view_permission', 'perm_permission_manage', 'system', NULL, now(), false),

-- 配置管理视图关联配置权限
('VP-0041', 'view_config', 'perm_config_view', 'system', NULL, now(), false),
('VP-0042', 'view_config', 'perm_config_edit', 'system', NULL, now(), false),
('VP-0043', 'view_config', 'perm_config_export', 'system', NULL, now(), false),

-- 文件管理视图关联文件权限
('VP-0051', 'view_file', 'perm_file_view', 'system', NULL, now(), false),
('VP-0052', 'view_file', 'perm_file_upload', 'system', NULL, now(), false),
('VP-0053', 'view_file', 'perm_file_download', 'system', NULL, now(), false),
('VP-0054', 'view_file', 'perm_file_delete', 'system', NULL, now(), false),
('VP-0055', 'view_file', 'perm_file_export', 'system', NULL, now(), false),

-- 消息管理视图关联消息权限
('VP-0061', 'view_message', 'perm_message_view', 'system', NULL, now(), false),
('VP-0062', 'view_message', 'perm_message_send', 'system', NULL, now(), false),
('VP-0063', 'view_message', 'perm_message_manage', 'system', NULL, now(), false),
('VP-0064', 'view_message', 'perm_message_export', 'system', NULL, now(), false);
