# COM6 恢复出厂实现进度 状态:后端和网页已发布 `0.99.9-rc.device-reset1`,小程序入口已实现但尚未确认正式发布。COM6 已烧录 `1.7.0-controls.5` 并通过更新后的软件语音通路回归。尚未对 COM6 执行清空,实机重置、重新配网及重新绑定验收仍待完成。 ## 已实现的流程 1. 原账号通过现有解绑流程释放设备。新设备仍绑定家庭或账号时,恢复出厂接口返回 `DEVICE_RESET_AUTHORIZATION_REQUIRED`。 2. 在设备附近进入蓝牙配网模式,客户端读取 `get_info.factory_reset_supported`。两端页面复用 Wi-Fi 输入,确认擦除范围后发送 `factory_reset` 命令,不发送绑定令牌。已绑定设备需要先从原账号解绑,旧固件不显示入口。 3. 设备显示擦除提示,用户在 60 秒内轻触确认。请求在确认前只处于 `received`,没有向云端发起重置。确认事件和 Wi-Fi 参数写入现有 BLE pending 记录,格式版本 3。 4. 设备联网后,以既有 DEVREQ1 工厂身份签名读取 `/api/v1/device/factory-reset/state`。该路由只向未绑定设备返回当前重置计数器,不是解绑授权。 5. 设备生成并持久化固定重置正文,再调用 `/api/v1/device/factory-reset`。重试保持正文和 reset_id,HTTP nonce 可更新。后端复用 devicereset 事务和幂等记录,绑定代次变化或新归属会使旧请求失效。 6. 事务检查通话和两类固件任务,清空云端期望与实际配置,吊销旧用户会话及绑定上下文,并保留出厂身份和 License。此次修复了原服务仍保留 desired_config 和漏查 fleet_ota 的问题。 7. 固件验证重置编号、计数器、CLAIMABLE 状态和完整清理动作清单,再把“云端已批准”保存到 Flash,最后清除本地用户设置与 Wi-Fi。 8. 若清理中断,下次启动在初始化语音、触摸线程和 BLE 前完成剩余清理;未获得云端批准时不会擦除。完成后重启至蓝牙添加流程。 ## 本地清理范围 - 清除 `voice`、`ble_setup`、`wifi` 命名空间。 - 清除 `platform` 中的语音服务凭据和 pending_conv;保留平台设备身份。 - 清除 `control` 中的音量、名称、待机状态、旧命令回执和诊断探针。 - 保留 `ble_factory` 工厂身份分区、control 的 OTA/installed 元数据、应用分区和资源分区。 - 保留 `factory_reset` 恢复日志;批准标记写入并读回验证后才允许清理,清理全部成功才写完成标记。 - Wi-Fi 驱动在现有正常启动与 BLE 路径均使用 RAM 存储;仅从上述 Wi-Fi 命名空间恢复连接。 ## 已验证 - devicereset 与 onboarding 全包隔离数据库测试通过,最新日志 `.tmp-factory-reset/integration/`。 - 新增真实 DEVREQ1 路由测试:清除旧配置、丢失响应后重放而不重复重置、禁止修改重放正文、家庭/账号绑定拒绝、匿名拒绝、pending/accepted OTA 拒绝、四种活动通话状态拒绝、结束后允许、重新绑定后旧回执不能清除新归属。 - 原恢复出厂 HTTP handler 测试通过。 - `device-reset-host.cjs` 执行真实 C 实现,在 ASan/UBSan 下通过:云端拒绝不擦除、正文重试一致、错误回执拒绝、请求保存失败、批准保存失败、Wi-Fi 清理前中断、完成标记提交失败以及损坏恢复记录。 - 更新真实 BLE endpoint 的主机测试,验证新命令等待实体确认、不能与配网任务互换、禁止携带绑定令牌、配网窗口结束拒绝。 - 最终 ESP-IDF 构建通过:`1.7.0-controls.5`,3,753,168 字节,SHA256 `6a898dc76fb2f916d212f6b7a8137f2445929700046405c5a693d718fa645647`。日志 `.tmp-factory-reset/firmware-build6.log`。确认 ota_0 仍为有效活动槽后,仅烧录 0x10000 应用槽,设备 MAC 与烧录哈希校验通过;证据 `flash-controls5.json`。 - BLE 回执新增 `operation`,区分 `factory_reset` 与 `configure`;两端仅接受匹配的重置回执,蓝牙断开、其他操作成功或仅云端未绑定均不能显示重置成功。 - 线上发布检查:API/Web 版本、首页及 JS/CSS 哈希一致;运行配置和其他服务容器保持原值;新重置接口匿名请求均被拒绝。 - 网页本地模拟验收覆盖明确擦除提示、等待实体确认、成功后重新添加指引、断连不误报成功及旧固件隐藏入口;此项不替代设备实测。 - 03:05 UTC COM6 上报 `controls.5`、MQTT 已连接,绑定数 1,音量实际/期望均 60,配置版本实际/期望均 12,未完成命令 0。 - 更新后固定语句回归 `voice-20260922T030755Z.log`:持续下行 PCM、实际播放写入、解码及写入错误 0,主动结束成功回执。没有保存语音文本;仍需现场听感及真实麦克风收音确认。 ## 待完成 需要家属账号授权解绑及设备现场轻触确认,完成实物重置、重新配网、重新绑定和语音恢复。已经请求用户确认是否同意清除真实设备设置及现场配合;未收到答复不能当作授权。小程序正式发布和两端登录后的实机端到端验收仍待完成。主机故障注入与数据库测试不作为 COM6 清空成功记录。