3.3 KiB
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|TLQINDIRECT:RABBITMQ|RABBITMQ_TLQDIRECT: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.shSET_TLQ->cpackage/toolsh/setftq.shTLQ_CONF_APPLY->cpackage/toolsh/settlq.shDB_INIT->cpackage/toolsh/setsql.shDEPLOY_RECEIVER->cpackage/toolsh/setsptp.shMQ_USER_APPLY-> 标准版setuprabq.shstaging 执行MQ_QUEUE_APPLY-> 标准版addrabq_R_01.sh/addrabq_R_02.shstaging 执行
执行条件
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下执行。