-
Notifications
You must be signed in to change notification settings - Fork 5
Open
Description
[PRD] OTA 批次进度实时推送与批次监控闭环
子仓库实现 Issue
| 仓库 | Issue | 说明 |
|---|---|---|
rymcu/mortise-ota |
#2 | 进度事件发布、SSE 端点、聚合进度查询 |
rymcu/admin-ota |
#1 | 批次页、任务 Slideover 的实时订阅与 UI 更新 |
问题陈述
当前 Mortise OTA 模块已经具备升级批次、升级任务、设备进度上报和后台批次管理能力,但运维侧仍然缺少实时观察升级过程的能力。
从用户视角看,主要问题有:
- 管理员打开批次页或任务监控侧边栏后,只能依赖静态查询或手动刷新,无法持续看到任务进度变化。
- 即使设备已经持续上报升级进度,后台也没有把这些变化实时推送给前端,导致“后端有数据、前端看不到过程”。
- 批次执行中的失败原因、最近步骤和聚合统计无法第一时间暴露,影响运维排障效率。
这使得 OTA 批次虽然“能执行”,但还没有形成“可实时观察、可快速排障”的运维闭环。
解决方案
基于现有 OTA 批次、任务和进度上报链路,补齐一轮“实时推送 + 监控闭环”能力:
- 后端在任务进度变化后发布统一的 OTA 进度事件。
- 提供批次维度和任务维度的实时推送端点,首期优先采用 SSE。
- 管理端在现有批次页和任务 Slideover 中接入实时订阅能力,不重写页面。
- 推送载荷中带上聚合进度、任务进度、最近步骤和失败原因,缩短排障路径。
本期目标不是重做 OTA 策略系统,而是先把“执行中看得见”补齐。
用户故事
- 作为 OTA 运维管理员,我希望打开批次详情后能实时看到每个升级任务的进度和状态,而不必手动刷新页面。
- 作为 OTA 运维管理员,我希望批次列表中的成功数、失败数、进行中数量和整体进度能实时更新,以便快速判断升级是否健康推进。
- 作为 OTA 运维管理员,我希望任务失败时能立刻看到最近步骤和失败原因,以便尽快排障。
- 作为前端开发者,我希望有统一的实时订阅封装,负责连接、断线重连和页面卸载处理,以便降低页面复杂度。
- 作为后端开发者,我希望设备进度上报后只需发布统一事件,再由推送层消费,以便保持业务层和传输层解耦。
- 作为产品经理,我希望先补齐实时监控闭环,再在后续 PRD 中叠加灰度/分组和 MQTT 协同能力。
实现决策
一、模块范围
mortise-ota-domain:沿用现有批次、任务、进度日志模型。mortise-ota-application:新增进度事件发布与聚合推送服务。mortise-ota-admin:新增或扩展面向管理端的实时推送端点。admin-ota:扩展现有批次页和任务监控侧边栏。
二、推送协议选择
本期首选 SSE,原因如下:
- 与当前“服务端单向推送进度”场景更匹配。
- 前端接入成本较低,易于在现有页面中落地。
- 相比 WebSocket,首期不需要额外引入双向会话语义和更复杂的连接治理。
WebSocket 保留为后续增强选项,但不作为本期必交付项。
三、事件与推送边界
- 设备通过现有 OTA API 上报进度后,应用层发布统一进度事件。
- 推送层消费进度事件,生成批次级和任务级的实时消息。
- 前端只消费标准化推送载荷,不直接依赖数据库轮询或页面级刷新策略。
四、前端改造策略
- 保持现有
batches页面和任务 Slideover,不新增独立入口。 - 在当前 UI 基础上补充实时进度、最新步骤、失败原因和连接状态提示。
- 页面关闭或切换时自动释放订阅资源。
五、范围控制
本期聚焦“实时可见性”,不把策略配置、灰度编排、MQTT 指令协同混入同一轮交付。
测试决策
- 后端覆盖进度上报后事件发布、SSE 推送和聚合统计更新。
- 前端覆盖实时订阅建立、断线重连、页面卸载和 UI 状态同步。
- 至少保留一条端到端链路:设备上报进度 → 后端发布事件 → 前端实时看到更新。
- 失败路径需覆盖:任务失败、连接中断、空批次和已结束批次。
垂直切片拆分
切片 1:OTA 进度事件与 SSE 端点
覆盖的用户故事:1、2、5
验收标准:
- 设备进度上报后,后端发布统一进度事件。
- 提供批次维度的 SSE 端点。
- SSE 输出包含批次聚合统计和任务变化摘要。
切片 2:任务 Slideover 实时订阅
覆盖的用户故事:1、3、4
验收标准:
- 打开任务 Slideover 后自动建立实时订阅。
- 任务进度、步骤和失败原因可实时更新。
- 页面关闭后自动断开连接。
切片 3:批次列表聚合进度实时更新
覆盖的用户故事:2、4
验收标准:
- 批次列表中的整体进度和统计实时变化。
- 不需要整页刷新即可看到最新状态。
切片 4:失败可观测性补强
覆盖的用户故事:3
验收标准:
- 推送消息带上最近步骤、错误码或失败消息。
- 前端清晰区分进行中、成功、失败和终止状态。
范围外
- 升级策略的灰度/分组细化
- MQTT 直接下发升级指令
- OTA 与自动化联动
- 通用实时推送平台化改造
- 新建独立 OTA 监控入口
补充说明
这是跨仓库需求,提交后请保留本 PRD Issue 作为 Parent PRD,子仓库实现 Issue 统一引用本 Issue。
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels