cisd/docs/plans/2026-03-06-cisd-standard-init-support-mode-plan.md
2026-03-11 14:23:11 +08:00

122 lines
4.0 KiB
Markdown

# CISD Standard Init Support Mode Implementation Plan
> **For Claude:** REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task.
**Goal:** 修正标准版 CISD 初始化中 `ENTERPRISE``INDIRECT` 的支持方式建模、步骤编排和执行条件。
**Architecture:** 保留 `mqType` 字段名,但将其解释为按产品区分的支持方式枚举;服务层负责校验和步骤编排,执行器负责按产品与模式判定脚本是否实际执行或跳过。
**Tech Stack:** Java 17, Spring Boot 3, JUnit 5, OpenAPI YAML/JSON
---
### Task 1: 固化设计与枚举语义
**Files:**
- Create: `docs/plans/2026-03-06-cisd-standard-init-support-mode-design.md`
- Create: `docs/plans/2026-03-06-cisd-standard-init-support-mode-plan.md`
**Step 1: 保存设计文档**
保存版本差异、步骤编排和脚本映射。
**Step 2: 保存实施计划**
记录测试先行的修改顺序。
### Task 2: 先补服务层失败测试
**Files:**
- Modify: `src/test/java/com/cisd/tms/modules/init/service/InitServiceTest.java`
**Step 1: 写 ENTERPRISE TLQ 的预检和步骤测试**
断言 `TLQ_CONF_APPLY` 存在,`MQ_USER_APPLY/MQ_QUEUE_APPLY/APP_MQ_CREDENTIALS_APPLY` 不存在。
**Step 2: 写 INDIRECT RABBITMQ_TLQ 的预检和步骤测试**
断言 `TLQ_CONF_APPLY`、`MQ_USER_APPLY`、`MQ_QUEUE_APPLY`、`APP_MQ_CREDENTIALS_APPLY` 同时存在。
**Step 3: 写非法组合测试**
覆盖 `INDIRECT + TLQ`、`ENTERPRISE + RABBITMQ_TLQ` 被拒绝。
**Step 4: 运行定向测试,确认红灯**
Run: `mvn -q -Dtest=InitServiceTest test`
Expected: 至少新增用例失败。
### Task 3: 实现服务层校验和编排
**Files:**
- Modify: `src/main/java/com/cisd/tms/modules/init/service/InitService.java`
- Modify: `src/main/resources/initplan/step-command-profiles.json`
**Step 1: 调整标准版允许枚举**
`productType` 区分 `ENTERPRISE``INDIRECT`
**Step 2: 调整标准版 license 校验**
`ENTERPRISE + TLQ``INDIRECT + RABBITMQ_TLQ` 都要求 `tlqLicenseFileId`
**Step 3: 新增 `TLQ_CONF_APPLY` 编排**
更新 `defaultSteps` 和命令模板。
**Step 4: 运行服务层测试,确认绿灯**
Run: `mvn -q -Dtest=InitServiceTest test`
Expected: PASS
### Task 4: 先补执行器失败测试
**Files:**
- Modify: `src/test/java/com/cisd/tms/modules/init/executor/ConfigurableInitStepExecutorTest.java`
**Step 1: 写 ENTERPRISE TLQ 下 RabbitMQ 应用配置应跳过的测试**
**Step 2: 写 INDIRECT RABBITMQ_TLQ 下 RabbitMQ 用户步骤应执行的测试**
**Step 3: 写 `TLQ_CONF_APPLY` 命令解析或任务步骤断言测试**
**Step 4: 运行定向测试,确认红灯**
Run: `mvn -q -Dtest=ConfigurableInitStepExecutorTest test`
Expected: 至少新增用例失败。
### Task 5: 实现执行器条件修正
**Files:**
- Modify: `src/main/java/com/cisd/tms/modules/init/executor/ConfigurableInitStepExecutor.java`
- Modify: `src/main/java/com/cisd/tms/modules/init/config/InitCommandProfileService.java`(如需补充注释/兼容逻辑)
**Step 1: 抽取标准版 RabbitMQ 是否启用的判断**
- `ENTERPRISE`: 仅 `RABBITMQ`
- `INDIRECT`: `RABBITMQ``RABBITMQ_TLQ`
**Step 2: 修正 `MQ_USER_APPLY` / `MQ_QUEUE_APPLY` 条件**
**Step 3: 修正 `APP_MQ_CREDENTIALS_APPLY` 条件**
**Step 4: 运行执行器测试,确认绿灯**
Run: `mvn -q -Dtest=ConfigurableInitStepExecutorTest test`
Expected: PASS
### Task 6: 同步 OpenAPI 文档
**Files:**
- Modify: `docs/openapi/cisd-init.openapi.yaml`
- Modify: `docs/openapi/cisd-init.openapi.json`
**Step 1: 更新 `mqType` 描述**
明确不同产品的合法取值。
**Step 2: 更新请求示例和步骤含义说明**
体现 `TLQ_CONF_APPLY``INDIRECT` 的双通道模式。
### Task 7: 完整验证
**Files:**
- Verify only
**Step 1: 运行模块定向测试**
Run: `mvn -q -Dtest=InitServiceTest,ConfigurableInitStepExecutorTest test`
Expected: PASS
**Step 2: 运行编译验证**
Run: `mvn -q -DskipTests compile`
Expected: PASS
**Step 3: 人工检查关键路径**
检查 `ENTERPRISE + TLQ`、`INDIRECT + RABBITMQ_TLQ` 的任务步骤和命令模板。