-- ============================================ -- 演示环境:模板参数与生产旧版本的下发标记(2026-10-27) -- -- 版本依据:生产环境 当前运行 admin 镜像 db11766c..., -- 二进制 CommitID=cad19df988a0;演示环境镜像及程序 SHA256 与生产一致。 -- 不以浮动 tag、master HEAD 或历史发布记录代替实际运行版本。 -- -- cad19df 的 passRoleByDept(agent_dept.go:496): -- 仅“当前机构 == 模板机构”走平台模板;其他机构仍查本级唯一 -- status=0 / is_pass=1 角色,即使已经配置平台模板也是如此。 -- 因此只配置 agent.role.template.role_id 不能解决代理建下级报错。 -- -- 本文件: -- 1. 修正现有 role 2 的模板属性,并写入唯一的演示模板参数。 -- 2. 若测试库已有 dept 172 → role 82,则为该现有角色设置 is_pass=1。 -- 不创建角色、机构或账号,不改菜单和 sys_dept.dept_role。 -- 全新库没有 role 82 时跳过;它是测试期间创建的一级代理角色。 -- -- 限制:cad19df 的 createEnterpriseRole 仍将新角色 IsPass 写为 0。 -- 新建机构继续创建下级前,仍需配置本机构唯一的下发角色; -- 此 SQL 不是多级下发代码修复,不代表新建三级及以后均已通过验收。 -- 不自动补建业务方故意删除的 dept 2/4/5/6/7 角色。 -- -- sys_config 无 (tenant_id, config_key) 唯一索引,故先删后插,避免重复。 -- 种子 SQL 仍处于实测阶段,业务基准向预演看齐;运行代码遵从生产版本。 -- 执行顺序:01-08 之后;可重复执行。 -- ============================================ SET NAMES utf8mb4; USE `db_iotlcm`; START TRANSACTION; -- 模板校验同时要求:启用、非超管、is_pass=1、data_scope=4、机构有效, -- created_dept 为 0/NULL 或等于 dept_id,且菜单不能使用全部/自定义范围。 UPDATE `sys_role` SET `created_dept` = `dept_id`, `status` = '0', `is_pass` = 1, `data_scope` = '4' WHERE `tenant_id` = '000000' AND `role_id` = 2 AND `dept_id` = 1 AND `deleted_at` IS NULL; DELETE FROM `sys_config` WHERE `tenant_id` = '000000' AND `config_key` = 'agent.role.template.role_id'; INSERT INTO `sys_config` (`tenant_id`,`config_name`,`config_key`,`config_value`,`config_type`,`created_dept`,`created_by`,`remark`) VALUES ('000000','代理角色下发-平台模板角色ID','agent.role.template.role_id','2','Y',1,1, '演示模板:dept 1 的现有 role 2;生产 cad19df 中代理机构仍需本级唯一 is_pass=1 角色'); -- 只处理已存在、已绑定的演示一级代理角色;不恢复或新建已删除的角色。 UPDATE `sys_role` r JOIN `sys_dept` d ON d.`tenant_id` = r.`tenant_id` AND d.`dept_id` = r.`dept_id` AND d.`dept_role` = r.`role_id` SET r.`is_pass` = 1 WHERE r.`tenant_id` = '000000' AND r.`role_id` = 82 AND r.`dept_id` = 172 AND r.`deleted_at` IS NULL AND r.`status` = '0' AND d.`deleted_at` IS NULL AND d.`status` = '0' AND 0 = ( SELECT other_roles.n FROM ( SELECT COUNT(*) AS n FROM `sys_role` WHERE `tenant_id` = '000000' AND `dept_id` = 172 AND `role_id` <> 82 AND `is_pass` = 1 AND `deleted_at` IS NULL ) other_roles ); COMMIT; -- 自检输出仅反映配置条件,不能代替页面创建下级的端到端验收。 SELECT COUNT(*) AS template_parameter_rows FROM `sys_config` WHERE `tenant_id` = '000000' AND `config_key` = 'agent.role.template.role_id'; SELECT `role_id`, `dept_id`, `status`, `is_pass`, `data_scope`, `created_dept` FROM `sys_role` WHERE `tenant_id` = '000000' AND `role_id` IN (2,82) AND `deleted_at` IS NULL; SELECT d.`dept_id`, d.`dept_role`, COUNT(r.`role_id`) AS enabled_distribution_roles FROM `sys_dept` d LEFT JOIN `sys_role` r ON r.`tenant_id` = d.`tenant_id` AND r.`dept_id` = d.`dept_id` AND r.`status` = '0' AND r.`is_pass` = 1 AND r.`deleted_at` IS NULL WHERE d.`tenant_id` = '000000' AND d.`dept_id` = 172 AND d.`deleted_at` IS NULL GROUP BY d.`dept_id`, d.`dept_role`;