首页 / 业务功能与流程 / OTA 平台与远程诊断
OTA 平台与远程诊断
固件、发布、任务、设备进度、灰度回滚、指标与按需诊断日志的实现边界。
平台对象与职责
| 对象 | 职责 | 关键字段/约束 |
|---|---|---|
| 固件包 | 型号/硬件兼容性、版本、大小、哈希、签名、存储位置 | 不可变工件;禁止覆盖同一版本文件;下载 URL 必须短时有效。 |
| 发布策略 | 目标范围、分批比例、升级窗口、暂停/回滚阈值 | 先定义受控设备集和停止条件,不能直接对全量设备下发。 |
| 升级任务 | 把发布策略拆成每设备升级单元并追踪状态 | 单设备同一时刻最多一个活动任务;请求、下发、回执均以幂等 ID 关联。 |
| 设备升级记录 | 下载、校验、烧录、重启、版本校验及失败原因 | 区分平台受理、设备下载、设备应用和设备重连成功。 |
| 诊断请求/日志包 | 按需采集设备诊断信息并支撑维护排障 | 与 OTA 任务分离;受权限、范围、短时授权和自动删除约束。 |
升级与回滚闭环
- 上传已签名固件,生成内容哈希、兼容矩阵和不可变版本元数据;安全扫描和人工审批通过后才可发布。
- 创建发布策略,选择产品/型号/区域/设备组和分批比例;提前定义失败率、离线率、耗时等暂停阈值。
- 为目标设备创建升级任务,冻结固件版本与目标参数;通过可靠消息或 MQTT 下发短时下载信息与校验值。
- 设备下载、校验、烧录、重启并回报进度;平台只以设备 ACK 和上线后实际版本确认终态。
- 每一批达到健康门槛后才扩大范围;异常则暂停新批次,保留任务、日志、固件和版本证据。
- 回滚使用已验证的兼容版本和同样的灰度流程;若设备无法远程恢复,创建可追踪的人工服务/返修闭环。
推荐状态:CREATED → SCHEDULED → DISPATCHED → DOWNLOADING → VERIFYING → APPLYING → REBOOTING → SUCCEEDED;失败分为 DELIVERY_FAILED、DOWNLOAD_FAILED、VERIFY_FAILED、APPLY_FAILED、POSTCHECK_FAILED,而不是一个笼统的“失败”。
远程诊断边界
- 诊断必须由有权限的用户/运维人员显式发起,设备接收受控命令后才打包本地环形日志;禁止全量设备持续上传日志。
- 大日志包使用对象存储预签名 URL 直传,不穿透业务 API;URL、对象前缀和区域要绑定设备/请求/有效期。
- 日志检索只展示脱敏摘要;下载需再次授权和审计。密码、Token、Wi-Fi 凭证、原始媒体内容与完整位置敏感数据不得进入普通诊断包。
- 诊断对象独立生命周期管理,完成排障后自动删除;诊断失败不能阻断设备的正常心跳、定位或 OTA 恢复。
观测、灰度与验收
| 维度 | 至少观测 | 验收证据 |
|---|---|---|
| 发布健康 | 受理率、下发率、下载率、校验率、成功率、分型号/区域失败码、平均升级时长 | 分批报告、阈值触发记录和未扩大范围的证据 |
| 设备恢复 | 升级后心跳恢复、版本回报、在线率、资源异常和业务功能抽检 | 真机升级/断网恢复/掉电场景记录 |
| 安全 | 签名校验失败、非法版本请求、过期下载 URL、权限拒绝、审计覆盖率 | 篡改包、重放命令、越权下载和回滚攻击测试 |
| 诊断 | 拉取请求数、包大小、上传失败、查看/下载审计、自动删除执行率 | 预签名直传、脱敏扫描、TTL 删除和权限回归测试 |
来源:ota/ota_platform_design.md、ota/ota_platform_technical_spec.md、specs/设备与云平台系统接口*.md。基础升级链路见OTA 升级流程。