cisd/docs/plans/2026-03-10-standard-post-deploy-completion-plan.md
2026-03-11 14:23:11 +08:00

11 KiB
Raw Blame History

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_RENDERDB_APPLYDEPLOY_RECEIVERNGINX_CONFIG_APPLYWEB_CONFIG_APPLYSTART_CMSP_CMTPSTART_NGINXPOST_CHECK
  • ENTERPRISE + TLQ 同样包含上述后半段步骤
  • INDIRECT + RABBITMQINDIRECT + 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.ipsptp.02app.ip
  • 将渲染结果先输出到 staging/<taskId>/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/<taskId>/web/
  • 生成 organization.json,内容来自 request.orgNameCn
  • LOCAL 模式将解压产物发布到 standard-web-target-dir
  • 同步 organization.jsonstandard-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