feat: expand companion platform, device controls, and memoir workflows
ci / verify (push) Canceled after 0s

Add customer and operator login, BLE provisioning, device fleet controls, call memory, memoir generation, and refreshed family and maintenance portals. Include API contracts, migrations, firmware sources, tests, assets, and deployment documentation.
This commit is contained in:
Codex Local
2026-10-08 10:06:44 +08:00
parent 98fb2965d0
commit bf1233d5df
861 changed files with 94614 additions and 3209 deletions
+31
View File
@@ -0,0 +1,31 @@
# 设备聊天静默自动结束修复
日期:2026-10-04。目标测试设备为 `KP01-020026091601`,型号 `ECHOEAR-S3`。
最新进展(2026-10-05):用户授权直接下发后,静默修复已与“再次轻触屏幕挂断”一起通过 `.29 / code 12` 远程安装到清库后重新登记的 `KP01-8995ACF5E69E`。设备已回报成功并恢复新版本在线心跳;实物静默与触摸验收仍待人工操作。详见 [点击挂断交付记录](device-screen-call-20261005.md)。下方保留 10 月 4 日的历史状态。
## 现象与原因
当前设备运行 `1.7.0-controls.27 / code 11`。云端只读查询确认,最近一通仍为 TALKING,最后文字后约十五分钟仍持续续期。`.27` 为避免旧 WebSocket 计数器误切断 RTC 通话,取消了 RTC 的旧 60 次循环超时,但没有补充静默超时。
通过现有 USB `diag-stop` 正常结束这通聊天,串口观测到 `chat end acknowledged=1`。未重置绑定或 Wi-Fi。
## .28 行为
- 使用单调时钟:连续 60 秒没有语音活动时,走既有结束流程,先关闭本地音频,再停止 SDK、上报结束并恢复待机。
- 本地 VAD 开始、结束及检测到说话时的采集帧刷新活动时间;静音采集帧不刷新。
- 非空字幕、助手回应状态及有声下行 PCM 刷新活动时间;LISTENING 状态和平台续期不刷新。
- 实机观察发现 RTC 在安静时仍连续发送下行 PCM。因此不按音频包长度刷新计时:下行 PCM16 的平均绝对幅值至少为 64 时才算有声,判断发生在扬声器音量调整之前。这个门槛尚需实机回归验证。
- 回调只更新原子活动状态,结束操作仍由通话任务执行。保留授权、平台停止及主动挂断检查。
## 已完成验证
- ESP-IDF 5.5.1 编译成功,应用镜像 3,772,944 字节,符合 4 MiB OTA 分区限制。
- 两个提取实际生产 C 函数的主机测试通过 UBSan:60 秒静默结束、活动延续至三分钟后结束、VAD 开始/结束、静音与低幅度 PCM 排除、32 位时钟回绕、原有通话显示与结束流程、USB 诊断及麦克风门控。
- 固件版本 `1.7.0-controls.28`,SHA256 `5feedafd1fd235b0cf158f95fef3e8aedc2889053fec9f5195e62b5c540c7ef4`。
## 待完成
自动审批拒绝将专有固件上传至 `https://82.157.201.114` 并创建持久发布记录,理由为没有对该固件与上传目标的明确用户授权。没有上传、创建 .28 发布或触发 OTA。设备仍为 .27。
授权后沿用平台现有服务发布流程,校验 HTTPS 回读哈希,通过设备管理页给这台测试设备升级,再实测持续聊天超过一分钟、双方安静后约 60 秒自动结束及云端终态。当前没有把本地测试当作实机验收。