71 lines
3.3 KiB
Markdown
71 lines
3.3 KiB
Markdown
# 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` 下执行。
|