feat(test-bench): 接入真全双工音频与整机 SDK 测试台 - #40
Conversation
- 复用 Python Application RTC 通道实现电脑麦克风到 Watcher 扬声器及 Watcher 麦克风到浏览器播放器的双向 WebRTC 会话。 - 将实时视频与全双工音频统一纳入 RTC 生命周期和媒体互斥管理,不在 Daemon 增加任何业务消息旁路。 - 增加电脑发送、电脑接收、机器人麦克风采集和机器人成功发送四组指标,只有四段链路均成立才显示真全双工成功。 - 对机器人未采集、未成功发送、浏览器未收到以及发送错误提供明确故障提示,并补充前端纯函数测试和 HTTP 契约测试。 验证: - python -m pytest tests/test_sdk_media_lab.py tests/application/test_rtc.py -q:41 passed。 - node --test tests/js/test_rtc_audio_health.mjs:4 passed。 - node --check examples/sdk_media_lab/web/app.js:通过。 - mypy 的新增代码检查通过;全目标仅受既有 pyserial 缺少类型声明阻塞。 配套关系:ESP32 固件的麦克风采集与 RTP 发送真值统计位于 codex/fix-sdk-camera-ptl-capture 分支。
将 SDK Media Lab 的用户界面升级为 SDK 测试台,并保持 example.sdk_media_lab 应用标识和目录兼容。 新增运动云台和机身灯光控制区,所有操作只调用 robot.motion 与 robot.lights 公共 SDK 域;服务端增加参数、设备能力与稳定 409 错误门禁,避免绕过页面时向不支持固件下发命令。 修复设备忙时运动/扬声器停止按钮不可达的问题,将停止动作作为显式中断请求处理,同时保留在线和 capability 校验。统一页面中文文案、序号、响应式布局与基础全检流程。 测试覆盖运动和灯光成功合同、能力缺失、停止中断静态合同、RTC 双向健康判断及既有媒体能力。配套 ESP32 PR #143 提供 PTL 拍照与 RTC 麦克风真值统计。
将全量示例测试中的旧版‘SDK 媒体实验室’断言更新为‘SDK 测试台’,使页面产品命名与自动化契约保持一致。\n\n验证:python -m pytest,674 passed、2 skipped。
🤖 Luxiao PR 审查报告🤖 PR 审查报告 PR: ESP32:修复 SD 资源安装、SDSC 兼容与启动恢复 维度一:代码质量🏗️ 架构视角 — ✅SDSC 兼容读写层拆分合理。
SDHC 走快速多扇区路径、SDSC 走单扇区回退的判断逻辑放在 diskio 层而非调用方,调用方无需感知卡类型,封装合理。 🎨 产品视角 — ✅从用户角度看,这次改动直接解决三个可感知的问题:
这三个问题都是实打实的用户痛点,改动方向正确。SDSC 写入速度降低在 PR 描述中已明确声明,属于可接受的取舍。 📏 规范视角 —
|
目标
将原 SDK Media Lab 扩展为面向真实硬件的 SDK 测试台,并修复全双工音频只验证电脑本机回环、无法证明 Watcher 麦克风上行的问题。
主要改动
robot.motion与robot.lights公共 SDK 域的运动、灯光控制及基础整机全检。example.sdk_media_labApplication id 和目录以兼容既有脚本。架构边界
验证
git diff --check通过。待完成的人工验收