-- ============================================================================
-- S0-FULL-DEMO-COVERAGE-CLOSURE-1 · STEP 1：合同评审周期菜单归位（三件套）
--
-- 背景：Web/src/views/aidop/s0/sales/ContractReviewCycleList.vue（681 行）与
--   /api/s0/sales/contract-review-cycles 等 3 个接口、S0ContractReviewCycle 等 2 张表
--   均已存在，唯独 SysMenu 缺行；前端 isRequestRoutes=true（路由由菜单驱动），
--   故该页在任何租户都不可达（BLOCKED_BY_MENU）。
--
-- 归位而非新造：产销建模子菜单占用 Id …001/002/003/005/006/007 与 OrderNo 1/2/3/5/6/7，
--   Id 1329002000004 与 OrderNo 4 恰好双双空缺，与历史「菜单 Id 被复用删除」的记录吻合。
--
-- 三件套（缺一不可，只插 SysMenu 会导致租户/角色不可达）：
--   ① SysMenu           菜单本身
--   ② SysTenantMenu     租户可见（UATTEST_CHL）
--   ③ SysRoleMenu       角色可授权（UAT_FUNCTION_USER）
--
-- 幂等：三处均以 NOT EXISTS 保护；重复执行 affected rows = 0。
-- 边界：不改 SysOrg、不动业务数据、无 DDL、无 DELETE。
--
-- ⚠️ WIP：不占正式版本号，AutoVersionUpdate 不会自动应用；提交时 rename 为
--    UpdateScripts/1.0.<next>.sql 并登记 csproj Copy 条目。
-- ============================================================================

-- ---------------------------------------------------------------------------
-- ① SysMenu：合同评审周期
--    字段口径对齐同级兄弟菜单 1329002000006 / 1329002000007
--    （Type=2 菜单 / Status=1 启用 / IsHide=0 / IsKeepAlive=1 / IsAffix=0 / IsIframe=0）
-- ---------------------------------------------------------------------------
INSERT INTO SysMenu (Id, Pid, Type, Title, Path, Component, OrderNo, Status, IsHide, IsKeepAlive, IsAffix, IsIframe)
SELECT 1329002000004, 1329002000000, 2, '合同评审周期',
       '/aidop/s0/sales/contract-review-cycle', '/aidop/s0/sales/ContractReviewCycleList',
       4, 1, 0, 1, 0, 0
FROM DUAL
WHERE NOT EXISTS (SELECT 1 FROM SysMenu m WHERE m.Id = 1329002000004)
  AND NOT EXISTS (SELECT 1 FROM SysMenu m WHERE m.Path = '/aidop/s0/sales/contract-review-cycle')
  AND EXISTS (SELECT 1 FROM SysMenu p WHERE p.Id = 1329002000000);

-- ---------------------------------------------------------------------------
-- ② SysTenantMenu：租户可见性（按 SysOrg.Code 解析租户，不硬编码 TenantId）
--    Id 取当前最大值 +1（该表无 auto_increment）
-- ---------------------------------------------------------------------------
SET @crc_menu_id := (SELECT Id FROM SysMenu WHERE Path = '/aidop/s0/sales/contract-review-cycle' LIMIT 1);
SET @crc_tenant  := (SELECT t.Id FROM SysTenant t JOIN SysOrg o ON o.Id = t.OrgId
                     WHERE o.Code = 'UATTEST_CHL' AND t.Status = 1 LIMIT 1);
SET @crc_tm_base := (SELECT IFNULL(MAX(Id), 0) FROM SysTenantMenu);

INSERT INTO SysTenantMenu (Id, TenantId, MenuId)
SELECT @crc_tm_base + 1, @crc_tenant, @crc_menu_id
FROM DUAL
WHERE @crc_menu_id IS NOT NULL AND @crc_tenant IS NOT NULL
  AND NOT EXISTS (SELECT 1 FROM SysTenantMenu x WHERE x.TenantId = @crc_tenant AND x.MenuId = @crc_menu_id);

-- ---------------------------------------------------------------------------
-- ③ SysRoleMenu：角色授权 UAT_FUNCTION_USER（UATAdminA 的菜单来源角色）
--    其余 SMART_OPS_* 角色在 SysRoleMenu 中本就 0 条菜单授权，本批不改其语义。
-- ---------------------------------------------------------------------------
SET @crc_role := (SELECT r.Id FROM SysRole r
                  WHERE r.TenantId = @crc_tenant AND r.Code = 'UAT_FUNCTION_USER' AND r.Status = 1 LIMIT 1);
SET @crc_rm_base := (SELECT IFNULL(MAX(Id), 0) FROM SysRoleMenu);

INSERT INTO SysRoleMenu (Id, RoleId, MenuId)
SELECT @crc_rm_base + 1, @crc_role, @crc_menu_id
FROM DUAL
WHERE @crc_menu_id IS NOT NULL AND @crc_role IS NOT NULL
  AND NOT EXISTS (SELECT 1 FROM SysRoleMenu x WHERE x.RoleId = @crc_role AND x.MenuId = @crc_menu_id);
