-- ============================================================================= -- Migration: Analytics V1 Permissions & Legacy Menu Deactivation -- Target: KingbaseES, schema public -- Scope: Deactivate legacy dropped score menus, add attendance analytics menu & dashboard permissions -- ============================================================================= BEGIN; -- 1. Deactivate legacy score menus (2166, 2175, 2176) UPDATE public.sys_menu SET status = '1', visible = '1', update_by = 'admin', update_time = CURRENT_TIMESTAMP, remark = '已废弃旧表停用(V2架构)' WHERE menu_id IN (2166, 2175, 2176); -- 2. Insert attendance analytics menu under '统计分析' (parent_id = 2169) INSERT INTO public.sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) SELECT 2251, '考勤分析', 2169, 1, 'attendance', 'train/analysis/attendance/index', '', 1, 0, 'C', '0', '0', 'train:analysis:attendance', 'chart', 'admin', CURRENT_TIMESTAMP, '', NULL, '考勤专题分析页面' WHERE NOT EXISTS (SELECT 1 FROM public.sys_menu WHERE menu_id = 2251); -- 3. Insert attendance query button permission INSERT INTO public.sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) SELECT 2252, '考勤分析查询', 2251, 1, '#', '', '', 1, 0, 'F', '0', '0', 'train:analysis:attendance:query', '#', 'admin', CURRENT_TIMESTAMP, '', NULL, '考勤分析数据查询' WHERE NOT EXISTS (SELECT 1 FROM public.sys_menu WHERE menu_id = 2252); -- 4. Insert dashboard button permission INSERT INTO public.sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) SELECT 2253, '管理驾驶舱', 2169, 0, '#', '', '', 1, 0, 'F', '0', '0', 'train:analysis:dashboard', '#', 'admin', CURRENT_TIMESTAMP, '', NULL, '管理端驾驶舱权限' WHERE NOT EXISTS (SELECT 1 FROM public.sys_menu WHERE menu_id = 2253); -- 5. Grant permissions to train_admin role (role_id = 3) INSERT INTO public.sys_role_menu (role_id, menu_id) SELECT 3, 2251 WHERE NOT EXISTS (SELECT 1 FROM public.sys_role_menu WHERE role_id = 3 AND menu_id = 2251); INSERT INTO public.sys_role_menu (role_id, menu_id) SELECT 3, 2252 WHERE NOT EXISTS (SELECT 1 FROM public.sys_role_menu WHERE role_id = 3 AND menu_id = 2252); INSERT INTO public.sys_role_menu (role_id, menu_id) SELECT 3, 2253 WHERE NOT EXISTS (SELECT 1 FROM public.sys_role_menu WHERE role_id = 3 AND menu_id = 2253); -- 6. Verification DO $$ BEGIN IF (SELECT count(*) FROM public.sys_menu WHERE menu_id = 2251 AND perms = 'train:analysis:attendance') <> 1 THEN RAISE EXCEPTION 'Menu 2251 verification failed'; END IF; IF (SELECT count(*) FROM public.sys_menu WHERE menu_id = 2252 AND perms = 'train:analysis:attendance:query') <> 1 THEN RAISE EXCEPTION 'Menu 2252 verification failed'; END IF; IF (SELECT count(*) FROM public.sys_menu WHERE menu_id = 2253 AND perms = 'train:analysis:dashboard') <> 1 THEN RAISE EXCEPTION 'Menu 2253 verification failed'; END IF; IF (SELECT count(*) FROM public.sys_role_menu WHERE role_id = 3 AND menu_id IN (2251, 2252, 2253)) <> 3 THEN RAISE EXCEPTION 'Role assignment verification failed'; END IF; END $$; COMMIT;