bc2c7bcc6b
内容: - docker-compose.yml:14 个基础/业务服务 + 3 个可选 profile(with-mock 挡板、with-bot、with-nginx) - .env.example:集中管理镜像仓库、口令、端口;必填项缺失时 compose 直接报错退出 - config.example/:10 份配置模板,全部为占位值与注释说明 - schema/:12 个初始化脚本,按文件名顺序由 MySQL initdb 自动执行 脱敏处理: - 生产/内网 IP、镜像仓库地址、公司名、真实域名全部清除 - 演示账号保留 18 个(出库与划拨依赖账号与部门树的关联), 昵称/邮箱/手机号/登录IP/头像改为占位或编造值 - 数据库账号与 admin 口令改为初始化时按 .env 注入计算 - 通道模板与 Mock 通道的上游密钥置空 - Mock 通道地址指向 compose 内 onelink-mock 服务 部署时用 --profile with-mock 启动运营商接口挡板,即可在无真实运营商环境时跑通全链路。
78 lines
4.0 KiB
SQL
78 lines
4.0 KiB
SQL
-- ============================================
|
||
-- 演示环境:模板参数与生产旧版本的下发标记(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`;
|