Files
jcgl-dev/dev/sql/apt_rev01/16_it3_permissions.sql
zfjia 35751b4f00
IT-0 verify / verify (push) Waiting to run
1111
2026-11-11 18:30:31 +08:00

90 lines
5.5 KiB
SQL
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- =============================================================================
-- IT-3 权限点与页面菜单种子(可重放)。执行顺序:14 补列 → 15 设备种子 → 本文件。
-- 依据:公寓端/10 表 10-24(权限与安全)、表 10-26(N-25~N-37 接口)、
-- 04 §0 接口增量表、13 表 13-13 验收①、CR-02 §12(CR-C25 / 验收 15)。
-- 口径:
-- 1) 只新增 IT-3 需要的权限点与 1 个页面菜单,不改 3000 目录、不改 IT-1/IT-2 既有 F 点。
-- 2) N-34 / N-38(`/open/v1/**`)为设备侧匿名分区,无权限点字符串,
-- 靠「设备编码 + HMAC + 时间窗 + nonce」四要素鉴权,不在此登记。
-- 3) 签到终端只有「发起申请」权(N-34);确认 / 驳回必须 `duty:person:reg` + 二次确认(N-36/N-37)。
-- 4) 设备下发 / 可见范围 / 类别标注 / 三级对账属 IT-7(N-26/N-27/N-29),
-- 表 10-24 #1 要求登记 `apt:face:category`,本期只登记权限点并置灰,
-- 与 IT-2 的 3014 `apt:room:add` 置灰策略一致,避免「页面有按钮、后端恒 40940」的假交互。
-- =============================================================================
-- 1. F 权限点(parent 3000)
INSERT INTO sys_menu
(menu_id, menu_name, parent_id, order_num, path, component, query, route_name,
is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark)
VALUES
(3211, '人脸人员查看', 3000, 11, '', '', '', '', 1, 0, 'F', '0', '0',
'apt:face:list', '#', 'IT-3', NOW(),
'IT-3 N-25 人脸人员 / N-35 注册台账查看;只读,不接受客户端 gyid'),
(3212, '人脸注册审核', 3000, 12, '', '', '', '', 1, 0, 'F', '0', '0',
'duty:person:reg', '#', 'IT-3', NOW(),
'IT-3 N-35/N-36/N-37 值班台;确认=注册生效点,须二次确认;签到终端只有申请权'),
(3213, '人脸下发', 3000, 13, '', '', '', '', 1, 0, 'F', '1', '1',
'apt:face:dispatch', '#', 'IT-3', NOW(),
'N-26 设备下发指令;IT-7 才开放,本期置灰不授予角色'),
(3214, '人脸可见范围', 3000, 14, '', '', '', '', 1, 0, 'F', '1', '1',
'apt:face:scope', '#', 'IT-3', NOW(),
'N-27 设备人脸可见范围;IT-7 才开放,本期置灰不授予角色'),
(3215, '人脸对账', 3000, 15, '', '', '', '', 1, 0, 'F', '1', '1',
'apt:face:reconcile', '#', 'IT-3', NOW(),
'N-29 三级版本 / hash 对账;IT-7 才开放,本期置灰不授予角色'),
(3216, '人脸类别标注', 3000, 16, '', '', '', '', 1, 0, 'F', '1', '1',
'apt:face:category', '#', 'IT-3', NOW(),
'表 10-24 #7 人员类别标注仅公寓管理员可改;类别变更联动 FACE_ERASE 属 IT-7,本期置灰不授予角色')
ON DUPLICATE KEY UPDATE menu_name = VALUES(menu_name), parent_id = VALUES(parent_id),
order_num = VALUES(order_num), menu_type = VALUES(menu_type), visible = VALUES(visible),
status = VALUES(status), perms = VALUES(perms), remark = VALUES(remark);
-- 2. C 页面菜单(父目录 3000,完整路由 /apt/face)
INSERT INTO sys_menu
(menu_id, menu_name, parent_id, order_num, path, component, query, route_name,
is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark)
VALUES
(3201, '人脸注册审核', 3000, 5, 'face', 'apt/face/reg/index', '', '', 1, 0, 'C', '0', '0',
'', 'peoples', 'IT-3', NOW(),
'IT-3 人脸注册申请台账:regState 切换待审/已确认/已驳回;N-36 确认、N-37 驳回;双路同步状态只读')
ON DUPLICATE KEY UPDATE menu_name = VALUES(menu_name), parent_id = VALUES(parent_id),
order_num = VALUES(order_num), path = VALUES(path), component = VALUES(component),
menu_type = VALUES(menu_type), visible = VALUES(visible), status = VALUES(status),
icon = VALUES(icon), remark = VALUES(remark);
-- 3. 超管关联(仅可用项;置灰项 3213~3216 不关联)
INSERT INTO sys_role_menu (role_id, menu_id)
SELECT 1, m.menu_id FROM sys_menu m
WHERE m.menu_id IN (3201, 3211, 3212)
AND NOT EXISTS (SELECT 1 FROM sys_role_menu rm WHERE rm.role_id = 1 AND rm.menu_id = m.menu_id);
-- 4. 校验
SELECT '=== IT-3 权限点与页面菜单(应 7 行:6 F + 1 C)===' AS section;
SELECT menu_id, menu_name, menu_type, visible, status, perms, component
FROM sys_menu WHERE menu_id BETWEEN 3201 AND 3216 ORDER BY menu_id;
SELECT '=== C 菜单组件路径(须与 src/views/apt/face/reg/index.vue 一致)===' AS section;
SELECT menu_id, CONCAT('src/views/', component, '.vue') AS vue_file
FROM sys_menu WHERE menu_id = 3201;
SELECT '=== 超管关联可用项(应 3)===' AS section;
SELECT COUNT(*) AS admin_bound
FROM sys_role_menu rm JOIN sys_menu m ON m.menu_id = rm.menu_id
WHERE rm.role_id = 1 AND m.menu_id IN (3201, 3211, 3212);
SELECT '=== 置灰项是否仍未关联角色(3213~3216 应为 0)===' AS section;
SELECT COUNT(*) AS grey_bound
FROM sys_role_menu rm JOIN sys_menu m ON m.menu_id = rm.menu_id
WHERE m.menu_id IN (3213, 3214, 3215, 3216);
SELECT '=== 公寓端菜单树构成(应 M=1 / C=5 / F=21)===' AS section;
SELECT menu_type, COUNT(*) AS cnt
FROM sys_menu
WHERE menu_id = 3000 OR parent_id = 3000
GROUP BY menu_type ORDER BY menu_type;
SELECT '=== M0 验收账号仍无公寓端权限点(应为 0)===' AS section;
SELECT COUNT(*) AS apt_permission_count
FROM sys_role_menu rm JOIN sys_menu m ON m.menu_id = rm.menu_id
WHERE rm.role_id = 300 AND (m.perms LIKE 'apt:%' OR m.perms LIKE 'duty:%' OR m.perms = '*:*:*');