90 lines
5.5 KiB
SQL
90 lines
5.5 KiB
SQL
-- =============================================================================
|
||
-- 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 = '*:*:*');
|