# Standard Post Deploy Completion Implementation Plan > **For Claude:** REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task. **Goal:** 补齐标准版初始化在部署文档后半段缺失的动作,包括真实导库、CMSP/CMTP 启动与检查、nginx 配置与启动、WEB 发布。 **Architecture:** 保持“预置层负责基础安装与平台凭据,初始化层负责客户化和运行配置”边界不变。TMS 继续负责生成配置和 SQL 输出物,并在标准版流程中新增后半段步骤:真实导库、应用启动、nginx 配置与启动、WEB 发布、启动后检查。vendor 原始脚本继续只读,优先通过 staging 配置和显式命令编排补齐流程,而不扩散成新的黑盒主导链路。 **Tech Stack:** Java 17, Spring Boot 3.5, Jackson, JUnit 5, Maven, Shell command orchestration --- ### Task 1: 固化标准版后半段步骤编排 **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/resources/initplan/step-command-profiles.json` - Test: `/Users/waner/Work/CISD/文档/tms-framework/src/test/java/com/cisd/tms/modules/init/service/InitServiceTest.java` - Reference: `/Users/waner/Work/CISD/文档/CIPS部署文档/标准收发器安装介质及部署手册(企业信创版)-V1.3.2/document/CIPS标准收发器安装部署手册1.0(企业信创版)-V1.3.2.doc` - Reference: `/Users/waner/Work/CISD/文档/CIPS部署文档/标准收发器安装介质及部署手册(间参版)-V1.3.2/document/CIPS标准收发器安装部署手册1.0(金融机构信创版)-V1.3.2.doc` **Step 1: Write the failing test** 在 `InitServiceTest` 新增标准版步骤断言: - `ENTERPRISE + RABBITMQ` 包含:`DB_RENDER`、`DB_APPLY`、`DEPLOY_RECEIVER`、`NGINX_CONFIG_APPLY`、`WEB_CONFIG_APPLY`、`START_CMSP_CMTP`、`START_NGINX`、`POST_CHECK` - `ENTERPRISE + TLQ` 同样包含上述后半段步骤 - `INDIRECT + RABBITMQ`、`INDIRECT + RABBITMQ_TLQ` 同样断言 - 直参版仍不包含这些标准版步骤 **Step 2: Run test to verify it fails** Run: `mvn -q -Dtest=InitServiceTest test` Expected: FAIL,提示步骤未生成 **Step 3: Write minimal implementation** 修改 `InitService.defaultSteps()` 和 `step-command-profiles.json`: - 在标准版 `DEPLOY_RECEIVER` 后追加: - `NGINX_CONFIG_APPLY` - `WEB_CONFIG_APPLY` - `START_CMSP_CMTP` - `START_NGINX` - `POST_CHECK` - 命令模板统一先挂到 internal step: - `internal::nginx_config_apply` - `internal::web_config_apply` - `internal::start_cmsp_cmtp` - `internal::start_nginx` - `internal::post_check` **Step 4: Run test to verify it passes** Run: `mvn -q -Dtest=InitServiceTest test` Expected: PASS ### Task 2: 增加配置面与失败测试 **Files:** - Modify: `/Users/waner/Work/CISD/文档/tms-framework/src/main/java/com/cisd/tms/modules/init/config/InitExecutorProperties.java` - Modify: `/Users/waner/Work/CISD/文档/tms-framework/src/main/resources/application.yml` - Modify: `/Users/waner/Work/CISD/文档/tms-framework/config/application.yml.example` - Modify: `/Users/waner/Work/CISD/文档/tms-framework/src/test/java/com/cisd/tms/modules/init/executor/ConfigurableInitStepExecutorTest.java` **Step 1: Write the failing tests** 新增执行器测试: - `shouldApplyStandardNginxConfigFromTemplate` - `shouldPublishStandardWebAssetsAndOrganizationJson` - `shouldStartStandardCmspCmtpWithConfiguredCommand` - `shouldStartStandardNginxWithConfiguredCommand` - `shouldRunStandardPostCheck` 测试目标: - `NGINX_CONFIG_APPLY` 会输出替换后的 `nginx.conf` - `WEB_CONFIG_APPLY` 会生成 `organization.json` 并发布 `front.zip` 内容 - `START_CMSP_CMTP` 会调用预置启动命令或脚本 - `START_NGINX` 会调用 nginx 启动命令 - `POST_CHECK` 会执行配置的检查命令并记录日志 **Step 2: Run test to verify it fails** Run: `mvn -q -Dtest=ConfigurableInitStepExecutorTest test` Expected: FAIL,提示 internal step 未实现或配置缺失 **Step 3: Define minimal config surface** 为标准版后半段补齐配置项: - `standard-nginx-template-path` - `standard-nginx-target-path` - `standard-web-front-zip-path` - `standard-web-work-dir` - `standard-web-target-dir` - `standard-web-organization-json-path` - `standard-app-start-command` - `standard-nginx-start-command` - `standard-post-check-command` 说明: - 真实命令由环境配置注入,TMS 只编排,不硬编码具体 systemd/脚本形态 - 默认值可沿用文档建议路径 **Step 4: Re-run focused test** Run: `mvn -q -Dtest=ConfigurableInitStepExecutorTest test` Expected: 仍失败,但仅剩实现缺失 ### Task 3: 实现标准版 Nginx 配置落地 **Files:** - Modify: `/Users/waner/Work/CISD/文档/tms-framework/src/main/java/com/cisd/tms/modules/init/executor/ConfigurableInitStepExecutor.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/cpackage/software/setngx.sh` - Reference: `/Users/waner/Work/CISD/文档/CIPS部署文档/标准收发器安装介质及部署手册(企业信创版)-V1.3.2/cpackage/software/nginx.conf` **Step 1: Add internal step dispatch** 在 `executeInternal()` 新增: - `case "nginx_config_apply" -> executeStandardNginxConfigApply(task, step)` **Step 2: Implement minimal behavior** 实现逻辑: - 仅对标准版生效 - 读取 `standard-nginx-template-path` - 复用 `buildStandardReplacements()` 替换 `sptp.01app.ip`、`sptp.02app.ip` - 将渲染结果先输出到 `staging//nginx/nginx.conf` - LOCAL 模式复制到 `standard-nginx-target-path` - SIMULATE 模式仅产出 staging 文件 **Step 3: Run focused test** Run: `mvn -q -Dtest=ConfigurableInitStepExecutorTest#shouldApplyStandardNginxConfigFromTemplate test` Expected: PASS ### Task 4: 实现标准版 WEB 发布 **Files:** - Modify: `/Users/waner/Work/CISD/文档/tms-framework/src/main/java/com/cisd/tms/modules/init/executor/ConfigurableInitStepExecutor.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/cpackage/toolsh/setweb.sh` **Step 1: Add internal step dispatch** 在 `executeInternal()` 新增: - `case "web_config_apply" -> executeStandardWebConfigApply(task, step)` **Step 2: Implement minimal behavior** 实现逻辑: - 仅对标准版生效 - 从 `standard-web-front-zip-path` 读取 `front.zip` - 解压到 `staging//web/` - 生成 `organization.json`,内容来自 `request.orgNameCn` - LOCAL 模式将解压产物发布到 `standard-web-target-dir` - 同步 `organization.json` 到 `standard-web-organization-json-path` - SIMULATE 模式仅生成 staging 产物 **Step 3: Run focused test** Run: `mvn -q -Dtest=ConfigurableInitStepExecutorTest#shouldPublishStandardWebAssetsAndOrganizationJson test` Expected: PASS ### Task 5: 实现标准版启动与检查 **Files:** - Modify: `/Users/waner/Work/CISD/文档/tms-framework/src/main/java/com/cisd/tms/modules/init/executor/ConfigurableInitStepExecutor.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/cpackage/sh/sh/stcmep_cent.sh` - Reference: `/Users/waner/Work/CISD/文档/CIPS部署文档/标准收发器安装介质及部署手册(企业信创版)-V1.3.2/cpackage/cmsp/01/start_cmsp.sh` - Reference: `/Users/waner/Work/CISD/文档/CIPS部署文档/标准收发器安装介质及部署手册(企业信创版)-V1.3.2/cpackage/cmtp/01/start_cmtp.sh` **Step 1: Add internal step dispatch** 在 `executeInternal()` 新增: - `case "start_cmsp_cmtp" -> executeStandardStartApp(task, step)` - `case "start_nginx" -> executeStandardStartNginx(task, step)` - `case "post_check" -> executeStandardPostCheck(task, step)` **Step 2: Implement minimal behavior** 实现逻辑: - `START_CMSP_CMTP` - 仅对标准版生效 - 执行 `standard-app-start-command` - `START_NGINX` - 执行 `standard-nginx-start-command` - `POST_CHECK` - 执行 `standard-post-check-command` - 三者都要求: - SIMULATE 模式返回模拟成功 - LOCAL 模式走统一 `runCommand` 逻辑 - 日志记录命令、cwd、exit code **Step 3: Run focused tests** Run: `mvn -q -Dtest=ConfigurableInitStepExecutorTest#shouldStartStandardCmspCmtpWithConfiguredCommand,ConfigurableInitStepExecutorTest#shouldStartStandardNginxWithConfiguredCommand,ConfigurableInitStepExecutorTest#shouldRunStandardPostCheck test` Expected: PASS ### Task 6: 将 DB_APPLY 收敛为“真实导库”入口 **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/application.yml` - Modify: `/Users/waner/Work/CISD/文档/tms-framework/config/application.yml.example` - Test: `/Users/waner/Work/CISD/文档/tms-framework/src/test/java/com/cisd/tms/modules/init/executor/ConfigurableInitStepExecutorTest.java` **Step 1: Tighten DB_APPLY contract** 修改 `DB_APPLY` 行为: - 标准版 LOCAL 模式下,如果 `standard-db-apply-command` 为空,直接失败而不是跳过 - 错误信息明确提示“导库命令未配置” **Step 2: Add test** 新增测试: - `shouldFailDbApplyWhenStandardDbApplyCommandMissingInLocalMode` - `shouldExecuteStandardDbApplyCommandWhenConfigured` **Step 3: Run focused test** Run: `mvn -q -Dtest=ConfigurableInitStepExecutorTest#shouldFailDbApplyWhenStandardDbApplyCommandMissingInLocalMode,ConfigurableInitStepExecutorTest#shouldExecuteStandardDbApplyCommandWhenConfigured test` Expected: PASS ### Task 7: 文档同步与回归验证 **Files:** - Modify: `/Users/waner/Work/CISD/文档/tms-framework/docs/plans/2026-03-09-auto-deploy-refactor.md` - Modify: `/Users/waner/Work/CISD/文档/tms-framework/docs/openapi/cisd-init.openapi.yaml` - 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: Sync plan wording** 将标准版初始化主链路更新为: - `... -> DB_APPLY -> DEPLOY_RECEIVER -> NGINX_CONFIG_APPLY -> WEB_CONFIG_APPLY -> START_CMSP_CMTP -> START_NGINX -> POST_CHECK -> VERIFY` **Step 2: Refresh API/Doc examples if needed** 如果接口示例中已有步骤说明,补充新增标准版后半段步骤说明。 **Step 3: Run targeted tests** Run: `mvn -q -Dtest=InitServiceTest,ConfigurableInitStepExecutorTest test` Expected: PASS **Step 4: Run compile verification** Run: `mvn -q -DskipTests compile` Expected: PASS