# CIPS Auto Deployment Refactor Implementation Plan > **For Claude:** REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task. **Goal:** 在保留“基础环境预置”的前提下,将 CISD/CIPS 初始化从“cpconfig.cfg 驱动 vendor shell”逐步升级为“TMS 后端接管客户化渲染、输出物管理和执行编排”的自动化部署流程。 **Architecture:** 运维继续负责操作系统、目录、基础软件、介质上传解压、数据库和中间件平台级账号密码等与客户无关的预置动作;TMS 负责根据前端参数生成部署上下文,输出渲染后的配置和 SQL,按版本/支持方式编排客户化初始化步骤,并产出可审计的日志、配置快照和结果摘要。vendor 原始脚本默认只读,优先采用 staging 临时渲染执行,而不是直接改写介质本体。 **Tech Stack:** Spring Boot 3, Shell staging execution, 模板渲染, TiDB SQL 初始化, RabbitMQ/TLQ, CMSP/CMTP, Nginx/Web 发布 --- ### Task 1: 固化“预置层 / 初始化层”边界 **Files:** - Modify: `/Users/waner/Work/CISD/文档/tms-framework/docs/plans/2026-03-09-auto-deploy-refactor.md` - Reference: `/Users/waner/Work/CISD/文档/tms-framework/src/main/java/com/cisd/tms/modules/init/service/InitService.java` - Reference: `/Users/waner/Work/CISD/文档/tms-framework/src/main/resources/initplan/step-command-profiles.json` **Step 1: 明确定义预置层** 预置层仅包含与客户参数无关的动作: - OS 用户、用户组、目录、权限创建 - JDK、RabbitMQ/TLQ/TiDB/Nginx 安装 - 防火墙和服务注册 - 安装介质上传、解压、静态资源预放置 - 数据库账号密码、中间件管理员账号密码等平台级凭据预置 - 许可证预置(如果出厂前已拿到) **Step 2: 明确定义初始化层** 初始化层仅包含客户化动作: - 机构号 / BIC / CIPS ID / LEI - 节点 IP / 数据库地址 - RabbitMQ 通道账号密码 - RabbitMQ 用户 / 队列 / VHost 初始化 - TLQ 配置替换 - SQL 渲染与导库编排 - CMSP / CMTP / filetrans 配置渲染 - Nginx upstream / organization.json / Web 发布 - 服务启动与验收 **Step 3: 删除“初始化阶段执行预置脚本”的需求** 以下脚本只保留为预置脚本,不纳入 TMS 初始化主流程: - `setpd.sh` - `opencport.sh` - `install_newpackage.sh` - `setrabqstart.sh` - `setxsd.sh` - `setngservice.sh` - `pongx.sh` ### Task 2: 固化部署上下文模型 **Files:** - Modify: `/Users/waner/Work/CISD/文档/tms-framework/docs/plans/2026-03-09-auto-deploy-refactor.md` - Reference: `/Users/waner/Work/CISD/文档/tms-framework/src/main/java/com/cisd/tms/modules/init/dto/InitPreviewRequest.java` - Reference: `/Users/waner/Work/CISD/文档/tms-framework/src/main/java/com/cisd/tms/modules/init/executor/ConfigurableInitStepExecutor.java` **Step 1: 区分“前端输入参数”和“后端部署上下文”** 前端输入参数只承载业务输入;后端部署上下文承载可直接渲染文件和执行脚本的派生值。 **Step 2: 部署上下文仅保留初始化阶段所需客户化字段** 部署上下文至少应包含: - `productType` - `supportMode` - `myCipsIdOrBic` - `mq01Ip` - `mq02Ip` - `app01Ip` - `app02Ip` - `dbIp` - `bicCode` - `cipsId` - `leiCode` - `organizationNameCn` - `organizationNameEn` - `signVendor` - `signIp` - `signPort` - `signDn` - `signPasswordEnc` **Step 3: 平台级凭据不进入初始化上下文** 以下内容由预置层提供,不作为初始化接口输入: - 数据库用户名 / 密码 - RabbitMQ 管理员账号 / 密码 - TiDB 管理员账号 / 密码 **Step 4: supportMode 显式按产品定义** - `ENTERPRISE`: `RABBITMQ` / `TLQ` - `INDIRECT`: `RABBITMQ` / `RABBITMQ_TLQ` - `DIRECT`: `RABBITMQ_TLQ` / `RABBITMQ_CFMQ` ### Task 3: 优先接管数据库初始化 **Status (2026-03-09):** 标准版已完成第一阶段落地,初始化编排已拆为 `DB_RENDER -> DB_APPLY`,并在 task staging 目录生成渲染后 SQL 包;后续仍需补强真实导库命令与结果校验。 **Files:** - Modify: `/Users/waner/Work/CISD/文档/tms-framework/src/main/java/com/cisd/tms/modules/init/executor/ConfigurableInitStepExecutor.java` - Modify: `/Users/waner/Work/CISD/文档/tms-framework/src/main/resources/initplan/step-command-profiles.json` - Reference: `/Users/waner/Work/CISD/文档/CIPS部署文档/标准收发器安装介质及部署手册(企业信创版)-V1.3.2/cpackage/toolsh/setsql.sh` - Reference: `/Users/waner/Work/CISD/文档/CIPS部署文档/标准收发器安装介质及部署手册(企业信创版)-V1.3.2/cpackage/sql_script/CMEP-DML.sql` - Reference: `/Users/waner/Work/CISD/文档/CIPS部署文档/标准收发器安装介质及部署手册(企业信创版)-V1.3.2/cpackage/sql_script/sql_script_tmp/CMTP-01-raq.sql` - Reference: `/Users/waner/Work/CISD/文档/CIPS部署文档/标准收发器安装介质及部署手册(企业信创版)-V1.3.2/cpackage/sql_script/sql_script_tmp/CMTP-01-tlq.sql` **Step 1: 让后端输出渲染后的 SQL 包** 输出至少包含: - `CMTP-01.sql` - `CMEP-DML.sql` - 其他导库所需脚本快照 **Step 2: 数据库导入凭据继续由预置层提供** 初始化阶段不再输入和修改数据库账号密码;TMS 只负责: - 渲染 SQL - 组织导入顺序 - 记录执行结果 **Step 3: DB_INIT 从“纯脚本黑盒”升级为“渲染 + 执行”双阶段** 拆成: - `DB_RENDER` - `DB_APPLY` **Step 4: 保留 vendor 导库脚本作为执行器,而不是模板引擎** 如果短期不能完全替代 `setsql.sh`,则至少做到: - 模板由后端渲染 - vendor 脚本只负责导入,不再负责替换占位符 ### Task 4: 接管应用配置输出物 **Files:** - Modify: `/Users/waner/Work/CISD/文档/tms-framework/src/main/java/com/cisd/tms/modules/init/executor/ConfigurableInitStepExecutor.java` - Reference: `/Users/waner/Work/CISD/文档/CIPS部署文档/标准收发器安装介质及部署手册(企业信创版)-V1.3.2/cpackage/toolsh/setsptp.sh` - Reference: `/Users/waner/Work/CISD/文档/CIPS部署文档/标准收发器安装介质及部署手册(企业信创版)-V1.3.2/cpackage/cmsp/01/application-prd-ci01.properties` - Reference: `/Users/waner/Work/CISD/文档/CIPS部署文档/标准收发器安装介质及部署手册(企业信创版)-V1.3.2/cpackage/cmtp/01/application-prd-ci01.properties` - Reference: `/Users/waner/Work/CISD/文档/CIPS部署文档/标准收发器安装介质及部署手册(企业信创版)-V1.3.2/cpackage/cmsp/01/filetrans.properties` **Step 1: 后端直接输出以下配置快照** - `application-prd*.properties` - `filetrans.properties` - 标准版 RabbitMQ 通道账号密码回写结果 **Step 2: 数据库连接凭据保持预置,不由初始化阶段改写** 应用配置接管范围仅覆盖客户化字段,不覆盖预置层数据库连接凭据。 **Step 3: 将 setsptp.sh 从“渲染 + 拷贝”降级为“拷贝器”** 短期目标: - 配置替换由后端完成 - `setsptp.sh` 仅做 JAR / 目录拷贝 **Step 4: 禁止敏感信息输出到步骤日志** 渲染日志中不得出现密码明文或密文。 ### Task 5: 接管 Nginx / Web 客户化 **Files:** - Modify: `/Users/waner/Work/CISD/文档/tms-framework/src/main/resources/initplan/step-command-profiles.json` - Modify: `/Users/waner/Work/CISD/文档/tms-framework/src/main/java/com/cisd/tms/modules/init/executor/ConfigurableInitStepExecutor.java` - Reference: `/Users/waner/Work/CISD/文档/CIPS部署文档/标准收发器安装介质及部署手册(企业信创版)-V1.3.2/cpackage/software/setngx.sh` - Reference: `/Users/waner/Work/CISD/文档/CIPS部署文档/标准收发器安装介质及部署手册(企业信创版)-V1.3.2/cpackage/toolsh/setweb.sh` - Reference: `/Users/waner/Work/CISD/文档/CIPS部署文档/标准收发器安装介质及部署手册(企业信创版)-V1.3.2/cpackage/software/nginx.conf` **Step 1: 新增 Nginx/Web 相关步骤** 至少新增: - `NGINX_CONFIG_APPLY` - `WEB_CONFIG_APPLY` **Step 2: 后端渲染输出物** - `nginx.conf` - `organization.json` - Web 发布目录快照或发布日志 **Step 3: 不再把 setweb.sh 作为首批高收益改造对象本体** 优先由后端接管组织名称和 nginx upstream 渲染,再决定是否保留 `setweb.sh` 作为拷贝器。 ### Task 6: 建立显式启动顺序 **Files:** - Modify: `/Users/waner/Work/CISD/文档/tms-framework/src/main/resources/initplan/step-command-profiles.json` - Modify: `/Users/waner/Work/CISD/文档/tms-framework/src/main/java/com/cisd/tms/modules/init/service/InitService.java` - Reference: `/Users/waner/Work/CISD/文档/CIPS部署文档/标准收发器安装介质及部署手册(企业信创版)-V1.3.2/cpackage/sh/sh/stcmep_cent.sh` **Step 1: 将“部署”和“启动”拆开** 当前 `DEPLOY_RECEIVER` 不能同时承载“拷贝应用”和“启动服务”两种职责。 **Step 2: 新增启动步骤** 建议新增: - `START_CMSP_CMTP` - `START_NGINX` - `POST_CHECK` **Step 3: 定义启动顺序** 推荐顺序: 1. 参数校验 2. 渲染配置和 SQL 3. 准备 license 4. 初始化 RabbitMQ / TLQ 5. 初始化数据库 6. 下发 CMSP / CMTP 配置 7. 下发 Nginx / Web 配置 8. 启动 CMSP / CMTP 9. 启动 Nginx 10. 验收检查 ### Task 7: 建立失败边界和输出物 **Files:** - Modify: `/Users/waner/Work/CISD/文档/tms-framework/src/main/java/com/cisd/tms/modules/init/service/InitService.java` - Modify: `/Users/waner/Work/CISD/文档/tms-framework/src/main/java/com/cisd/tms/modules/init/executor/ConfigurableInitStepExecutor.java` **Step 1: 明确失败即停边界** - MQ 初始化失败后停止后续步骤 - 数据库导入失败后不启动应用 - 应用配置失败后不覆盖旧版本 - Web 发布失败不影响已启动后台服务 **Step 2: 输出四类审计产物** 每次部署任务至少输出: - 渲染后的配置快照 - 渲染后的 SQL 包 - 步骤执行日志 - 最终部署结果摘要 ### Task 8: 第一批高收益实施顺序 **Files:** - Modify: `/Users/waner/Work/CISD/文档/tms-framework/src/main/java/com/cisd/tms/modules/init/executor/ConfigurableInitStepExecutor.java` - Modify: `/Users/waner/Work/CISD/文档/tms-framework/src/main/java/com/cisd/tms/modules/init/service/InitService.java` - Modify: `/Users/waner/Work/CISD/文档/tms-framework/src/main/resources/initplan/step-command-profiles.json` - Test: `/Users/waner/Work/CISD/文档/tms-framework/src/test/java/com/cisd/tms/modules/init/service/InitServiceTest.java` - Test: `/Users/waner/Work/CISD/文档/tms-framework/src/test/java/com/cisd/tms/modules/init/executor/ConfigurableInitStepExecutorTest.java` **Step 1: 第一优先级** - 标准版 SQL 渲染输出物 - DB_INIT 拆分为渲染与执行 - 数据库导入结果可审计化 **Step 2: 第二优先级** - CMSP / CMTP / filetrans 配置输出物 - RabbitMQ / TLQ 初始化后的验收 **Step 3: 第三优先级** - Nginx / Web 渲染与发布 - 显式启动顺序和启动后检查 ### Task 9: 验收标准 **Files:** - Test: `/Users/waner/Work/CISD/文档/tms-framework/src/test/java/com/cisd/tms/modules/init/service/InitServiceTest.java` - Test: `/Users/waner/Work/CISD/文档/tms-framework/src/test/java/com/cisd/tms/modules/init/executor/ConfigurableInitStepExecutorTest.java` - Reference: `/Users/waner/Work/CISD/文档/CIPS部署文档/标准收发器安装介质及部署手册(企业信创版)-V1.3.2/document/CIPS标准收发器安装部署手册1.0(企业信创版)-V1.3.2.pdf` **Step 1: 参数层验收** 确认后端输入能完整覆盖初始化阶段真正需要的客户化字段,特别是: - 支持方式 - 组织名称 - Nginx/Web 所需字段 - RabbitMQ 通道账号密码 **Step 2: 配置层验收** 确认输出物中不再残留以下占位符: - `AAAABBBBXXX` - `sptp.01app.ip` - `sptp.02app.ip` - `sptp.01db.ip` - `01tlq.ip` - `02tlq.ip` - `mybiccode` - `mycipsid` - `myleicode` **Step 3: 部署层验收** 确认: - MQ / TLQ 正常可连 - TiDB 库和 schema 正常创建 - CMSP / CMTP 正常启动 - Nginx 正常代理 - Web 首页可访问 - `organization.json` 为客户实际机构名称 ### Task 10: 非目标项 **Step 1: 明确本轮不做** 以下内容不作为本轮主线: - 大规模直接修改 vendor 原始脚本 - 修改介质 readme/document 作为交付主成果 - 将所有 cpconfig 依赖一次性彻底移除 - 将平台级凭据纳入初始化接口输入 **Step 2: 后续演进原则** 优先让 TMS 接管“产物和编排”,再逐步削弱 vendor shell 的模板职责。