122 lines
4.0 KiB
Markdown
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` 的任务步骤和命令模板。
|