Skip to content

[PRD] OTA 灰度/分组升级策略引擎 #11

@ronger-x

Description

@ronger-x

[PRD] OTA 灰度/分组升级策略引擎

子仓库实现 Issue

仓库 Issue 说明
rymcu/mortise-ota #3 灰度策略模型、决策引擎、控制 API
rymcu/admin-ota #2 灰度策略配置 UI、批次执行看板
rymcu/mortise-aiot #18 OTA 指令载荷与 AIoT 协同补强

问题陈述

当前 Mortise OTA 模块已经具备升级策略、升级批次、设备通知和实时进度监控能力,但升级过程仍然偏“单批次、粗粒度、一次性下发”。

从用户视角看,主要问题有:

  1. 灰度能力目前主要停留在 grayPercent 这样的简单比例字段,没有真正的分阶段灰度执行逻辑。
  2. 平台缺少按设备标签、类别或条件进行升级分组的能力,无法实现更精细的风险控制。
  3. 当升级失败率上升时,系统还缺少“按阶段自动暂停、人工恢复、一键回滚”的策略闭环。
  4. OTA 与 MQTT 的协同已有基础通道,但还没有围绕灰度策略形成更完整的指令载荷和调度语义。

这意味着 OTA 虽然已经“能执行、能观察”,但还没有达到“可控、可分批、可止损”的成熟状态。

解决方案

在现有 OTA 与 AIoT 能力之上,补齐一轮“灰度/分组升级策略引擎”:

  1. 升级策略支持多阶段灰度配置,例如 5% → 20% → 100%。
  2. 支持按设备标签、设备类别或条件组合进行目标分组。
  3. 批次执行引擎能按阶段推进、根据失败率自动暂停,并支持人工恢复与回滚。
  4. 在既有 MQTT 下发能力上补齐 OTA 协同所需的指令载荷与调度语义。
  5. 管理端提供灰度策略配置、阶段状态查看和人工控制入口。

本期目标不是做通用实验平台,而是把 OTA 风险控制能力提升到“可运营”的水平。

用户故事

  1. 作为运维管理员,我希望定义多阶段灰度策略,以便先小范围验证,再逐步放量。
  2. 作为运维管理员,我希望按设备标签、类别或条件组合进行分组升级,以便针对不同风险群体分别控制节奏。
  3. 作为运维管理员,我希望在创建批次时直接选择灰度策略,由系统自动推进阶段,而不是手工重复建批次。
  4. 作为运维管理员,我希望当失败率超过阈值时系统自动暂停下一阶段,以便及时止损。
  5. 作为运维管理员,我希望能手工恢复、终止或回滚灰度批次,以便应对异常。
  6. 作为运维管理员,我希望查看每个阶段的设备数、成功率和介入记录,以便复盘策略效果。
  7. 作为产品经理,我希望 MQTT 下发能力能更好地承接 OTA 策略调度,而不只是停留在简单通知。

实现决策

一、模块范围

  • mortise-ota-domain:扩展灰度/分组策略模型与批次阶段状态。
  • mortise-ota-application:实现灰度决策引擎、阶段推进、自动暂停与回滚逻辑。
  • mortise-ota-admin:提供批次控制与灰度执行详情接口。
  • admin-ota:扩展策略配置页与批次执行看板。
  • mortise-aiot:补充 OTA 指令载荷和 AIoT 协同适配。

二、灰度策略方向

本期将灰度能力从“一个比例字段”升级为“阶段化策略”:

  • 每个阶段具备目标比例、进入条件和健康检查门槛。
  • 阶段推进可由系统自动判断,也支持人工介入。
  • 分组策略作为灰度执行的过滤器,而不是额外新建并行批次模型。

三、分组能力边界

首期优先支持:

  • 标签分组
  • 设备类别分组
  • 基础条件组合

复杂的表达式编排、实验系统级流量控制和跨业务域标签联动不在本期范围内。

四、OTA 与 MQTT 协同

本期不重写 MQTT 网关,而是在现有 OTA 通知与 AIoT 指令下发能力之上补齐更清晰的协同语义:

  • 灰度阶段推进触发更明确的 OTA 指令下发
  • 设备侧可感知阶段化升级上下文
  • 指令载荷围绕 OTA 场景增强,而不是从零设计新链路

五、管理端策略

  • 继续沿用现有 OTA 页面,不新建独立入口
  • 策略配置、批次执行和阶段看板在现有页面体系内扩展

测试决策

  • 后端覆盖灰度策略解析、阶段推进、失败阈值判断、人工控制和回滚路径。
  • AIoT 覆盖 OTA 指令载荷和下发协同行为。
  • 前端覆盖灰度策略表单、阶段状态展示和控制操作提交流。
  • 至少保留一条端到端链路:选择灰度策略建批次 → 阶段推进 → MQTT 协同下发 → 监控面板看到阶段结果。

垂直切片拆分

切片 1:灰度策略与分组模型

覆盖的用户故事:1、2

验收标准

  • 升级策略支持多阶段灰度配置。
  • 支持基础分组定义与校验。
  • 策略可被批次创建时引用。

切片 2:灰度决策引擎与阶段推进

覆盖的用户故事:3、4

验收标准

  • 批次可按阶段自动或半自动推进。
  • 失败率达到阈值时可自动暂停。
  • 阶段状态可被查询与审计。

切片 3:批次控制 API 与执行详情

覆盖的用户故事:5、6

验收标准

  • 管理端可执行暂停、恢复、终止或回滚。
  • 可查询灰度阶段详情、统计和介入记录。

切片 4:AIoT 协同补强与管理端展示

覆盖的用户故事:6、7

验收标准

  • OTA 指令下发与灰度阶段语义对齐。
  • 管理端可看到阶段看板和分组统计。

范围外

  • 通用实验平台
  • 复杂多租户灰度治理
  • MQTT 网关大重构
  • 自动化场景与 OTA 深度联动

补充说明

这是跨仓库需求,提交后请保留本 PRD Issue 作为 Parent PRD,子仓库实现 Issue 统一引用本 Issue。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions