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

3.3 KiB
Raw Blame History

CISD 标准版初始化支持方式设计

背景

当前 TMS 将标准版初始化统一抽象为 mqType=RABBITMQ|TLQ。这与实际部署介质不完全一致:

  • ENTERPRISE 支持 RABBITMQTLQ 两种互斥模式。
  • INDIRECT 支持 仅 RabbitMQRabbitMQ + TLQ 两种模式。
  • INDIRECTRabbitMQ + 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_PREPARETLQRABBITMQ_TLQ 模式下均需准备 TLQ license。

测试重点

  • ENTERPRISE + TLQ 预检通过且步骤中包含 TLQ_CONF_APPLY,不包含 RabbitMQ 相关步骤。
  • INDIRECT + RABBITMQ_TLQ 预检通过且步骤中同时包含 TLQ_CONF_APPLY 与 RabbitMQ 相关步骤。
  • INDIRECT + TLQ 作为非法值被拒绝。
  • ENTERPRISE + RABBITMQ_TLQ 作为非法值被拒绝。
  • APP_MQ_CREDENTIALS_APPLYENTERPRISE + TLQ 下跳过,在 INDIRECT + RABBITMQ_TLQ 下执行。