# 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` 下执行。