11 KiB
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_CHECKENTERPRISE + 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_APPLYWEB_CONFIG_APPLYSTART_CMSP_CMTPSTART_NGINXPOST_CHECK
- 命令模板统一先挂到 internal step:
internal::nginx_config_applyinternal::web_config_applyinternal::start_cmsp_cmtpinternal::start_nginxinternal::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
新增执行器测试:
shouldApplyStandardNginxConfigFromTemplateshouldPublishStandardWebAssetsAndOrganizationJsonshouldStartStandardCmspCmtpWithConfiguredCommandshouldStartStandardNginxWithConfiguredCommandshouldRunStandardPostCheck
测试目标:
NGINX_CONFIG_APPLY会输出替换后的nginx.confWEB_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-pathstandard-nginx-target-pathstandard-web-front-zip-pathstandard-web-work-dirstandard-web-target-dirstandard-web-organization-json-pathstandard-app-start-commandstandard-nginx-start-commandstandard-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/<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.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
新增测试:
shouldFailDbApplyWhenStandardDbApplyCommandMissingInLocalModeshouldExecuteStandardDbApplyCommandWhenConfigured
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