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

71 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# CISD 标准版初始化支持方式设计
## 背景
当前 TMS 将标准版初始化统一抽象为 `mqType=RABBITMQ|TLQ`。这与实际部署介质不完全一致:
- `ENTERPRISE` 支持 `RABBITMQ``TLQ` 两种互斥模式。
- `INDIRECT` 支持 `仅 RabbitMQ``RabbitMQ + TLQ` 两种模式。
- `INDIRECT``RabbitMQ + TLQ` 并不是纯 `TLQ`,仍需执行 RabbitMQ 用户、队列和应用配置。
## 目标
在不破坏现有接口字段名的前提下,修正标准版初始化参数校验、步骤编排和执行条件,使其与部署介质和脚本行为一致。
## 约束
- 保留前端请求字段 `mq.mqType`,避免接口字段名变更带来的联调成本。
- 仅修改 `modules/init` 范围内代码和 `docs/openapi/cisd-init` 文档。
- 不调整出厂前预装边界;本次仍只覆盖初始化阶段。
## 方案选择
### 方案 A重命名字段为 `supportMode`
优点:语义最准确。
缺点:破坏现有接口,前后端和历史任务数据都要联动修改。
### 方案 B保留 `mqType` 字段名,按产品解释枚举值
优点:改动最小,能直接修正行为。
缺点:字段名与实际语义存在轻微偏差,需要通过文档解释。
### 方案 C继续保留当前模型仅靠执行器特殊判断
优点:表面改动更少。
缺点校验、预检、步骤预览、OpenAPI 全部失真,后续维护成本更高。
## 采用方案
采用方案 B。
## 调整后的 `mqType` 语义
- `ENTERPRISE`: `RABBITMQ` | `TLQ`
- `INDIRECT`: `RABBITMQ` | `RABBITMQ_TLQ`
- `DIRECT`: `RABBITMQ_TLQ` | `RABBITMQ_CFMQ`
## 标准版步骤编排
### ENTERPRISE + RABBITMQ
`RENDER_CONFIG -> FILE_PREPARE -> SET_RABBITMQ -> MQ_USER_APPLY -> MQ_QUEUE_APPLY -> DB_INIT -> DEPLOY_RECEIVER -> APP_MQ_CREDENTIALS_APPLY -> VERIFY`
### ENTERPRISE + TLQ
`RENDER_CONFIG -> FILE_PREPARE -> SET_TLQ -> TLQ_CONF_APPLY -> DB_INIT -> DEPLOY_RECEIVER -> VERIFY`
### INDIRECT + RABBITMQ
`RENDER_CONFIG -> FILE_PREPARE -> SET_RABBITMQ -> MQ_USER_APPLY -> MQ_QUEUE_APPLY -> DB_INIT -> DEPLOY_RECEIVER -> APP_MQ_CREDENTIALS_APPLY -> VERIFY`
### INDIRECT + RABBITMQ_TLQ
`RENDER_CONFIG -> FILE_PREPARE -> SET_TLQ -> TLQ_CONF_APPLY -> MQ_USER_APPLY -> MQ_QUEUE_APPLY -> DB_INIT -> DEPLOY_RECEIVER -> APP_MQ_CREDENTIALS_APPLY -> VERIFY`
## 脚本映射
- `SET_RABBITMQ` -> `cpackage/toolsh/setfraq.sh`
- `SET_TLQ` -> `cpackage/toolsh/setftq.sh`
- `TLQ_CONF_APPLY` -> `cpackage/toolsh/settlq.sh`
- `DB_INIT` -> `cpackage/toolsh/setsql.sh`
- `DEPLOY_RECEIVER` -> `cpackage/toolsh/setsptp.sh`
- `MQ_USER_APPLY` -> 标准版 `setuprabq.sh` staging 执行
- `MQ_QUEUE_APPLY` -> 标准版 `addrabq_R_01.sh` / `addrabq_R_02.sh` staging 执行
## 执行条件
- `ENTERPRISE + TLQ` 跳过 RabbitMQ 用户、队列和应用账号写回。
- `INDIRECT + RABBITMQ_TLQ` 保留 RabbitMQ 用户、队列和应用账号写回。
- `FILE_PREPARE``TLQ``RABBITMQ_TLQ` 模式下均需准备 TLQ license。
## 测试重点
- `ENTERPRISE + TLQ` 预检通过且步骤中包含 `TLQ_CONF_APPLY`,不包含 RabbitMQ 相关步骤。
- `INDIRECT + RABBITMQ_TLQ` 预检通过且步骤中同时包含 `TLQ_CONF_APPLY` 与 RabbitMQ 相关步骤。
- `INDIRECT + TLQ` 作为非法值被拒绝。
- `ENTERPRISE + RABBITMQ_TLQ` 作为非法值被拒绝。
- `APP_MQ_CREDENTIALS_APPLY``ENTERPRISE + TLQ` 下跳过,在 `INDIRECT + RABBITMQ_TLQ` 下执行。