| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- -- ============================================================================
- -- 1.0.535 Batch 4B · S5 IQC 检验单详情隐藏菜单 · VERIFY
- --
- -- 执行契约(AutoVersionUpdate.RunVerifyScriptIfExists):每条语句经
- -- SqlQuerySingle<object> 取首行首列并要求 IsTruthy == true。故:
- -- ① 禁止 SET @var(返回 null 即判失败)—— 一律内联子查询;
- -- ② 每条语句返回「通过为真」的标量;
- -- ③ 文件必须以最后一条 SQL 的分号结束,末尾不得残留 comment-only 块
- -- (本文件注释内刻意不出现字面分号,避免任何 splitter 把注释切成空语句)。
- -- ============================================================================
- -- 菜单存在且字段口径完全正确(含 IsHide=1 / IsKeepAlive=0 两个本批关键位)
- SELECT COUNT(*) = 1 FROM SysMenu WHERE Id = 1329015010004 AND Pid = 1322000000015 AND Type = 2 AND Status = 1 AND IsHide = 1 AND IsKeepAlive = 0 AND IsAffix = 0 AND IsIframe = 0 AND OrderNo = 45 AND Title = 'IQC检验单详情' AND Name = 'aidopS5IqcInspBillDetail' AND Path = '/aidop/s5/iqc/detail/:id' AND Component = '/aidop/s5/iqc/iqcInspBillDetail';
- -- 路由 Path 唯一(未产生重复菜单)
- SELECT COUNT(*) = 1 FROM SysMenu WHERE Path = '/aidop/s5/iqc/detail/:id';
- -- 路由 Name 唯一(vue-router name 冲突会导致动态路由注册异常)
- SELECT COUNT(*) = 1 FROM SysMenu WHERE Name = 'aidopS5IqcInspBillDetail';
- -- 租户可见性:与 IQC 任务列表入口的租户面完全一致(继承口径成立)
- SELECT (SELECT COUNT(DISTINCT TenantId) FROM SysTenantMenu WHERE MenuId = 1329015010004) = (SELECT COUNT(DISTINCT TenantId) FROM SysTenantMenu WHERE MenuId = 1329015010001);
- -- 租户可见性:不存在「入口可见但详情不可见」的租户
- SELECT COUNT(*) = 0 FROM SysTenantMenu e WHERE e.MenuId = 1329015010001 AND NOT EXISTS (SELECT 1 FROM SysTenantMenu d WHERE d.MenuId = 1329015010004 AND d.TenantId = e.TenantId);
- -- 角色授权:与 IQC 任务列表入口的角色面完全一致(继承口径成立)
- SELECT (SELECT COUNT(DISTINCT RoleId) FROM SysRoleMenu WHERE MenuId = 1329015010004) = (SELECT COUNT(DISTINCT RoleId) FROM SysRoleMenu WHERE MenuId = 1329015010001);
- -- 角色授权:不存在「能进入口页但进不了详情页」的角色
- SELECT COUNT(*) = 0 FROM SysRoleMenu e WHERE e.MenuId = 1329015010001 AND NOT EXISTS (SELECT 1 FROM SysRoleMenu d WHERE d.MenuId = 1329015010004 AND d.RoleId = e.RoleId);
- -- 未越权:详情页授权面没有超出入口页(不得凭空多授角色)
- SELECT COUNT(*) = 0 FROM SysRoleMenu d WHERE d.MenuId = 1329015010004 AND NOT EXISTS (SELECT 1 FROM SysRoleMenu e WHERE e.MenuId = 1329015010001 AND e.RoleId = d.RoleId);
- -- 端到端可达性:S5 IQC 检验员角色成员可经角色到达该详情菜单
- SELECT COUNT(*) >= 1 FROM SysRoleMenu rm JOIN SysRole r ON r.Id = rm.RoleId WHERE rm.MenuId = 1329015010004 AND r.Code = 'ROLE_S5_IQC_INSPECTOR';
- -- 主键无重复(多行插入的 MAX(Id)+ROW_NUMBER() 写法正确性)
- SELECT COUNT(*) = COUNT(DISTINCT Id) FROM SysTenantMenu WHERE MenuId = 1329015010004;
- SELECT COUNT(*) = COUNT(DISTINCT Id) FROM SysRoleMenu WHERE MenuId = 1329015010004;
- -- 回归:来料检验目录下菜单由 3 增至 4,且 OrderNo 无重复
- SELECT COUNT(*) = 4 FROM SysMenu WHERE Pid = 1322000000015 AND Type = 2;
- SELECT COUNT(DISTINCT OrderNo) = COUNT(*) FROM SysMenu WHERE Pid = 1322000000015 AND Type = 2;
- -- 回归:三张既有 IQC 业务页仍为可见菜单(未被本脚本误伤为隐藏)
- SELECT COUNT(*) = 3 FROM SysMenu WHERE Id IN (1329015010001, 1329015010002, 1329015010003) AND IsHide = 0 AND Status = 1;
|