真机测试 Checklist — 打通硬件数据流

本文档指导从零开始用 AMOLED 手表 + 手机微信小程序,验证数据从 BLE 硬件端到端流入六元 MySQL 的完整链路。


数据流概览

AMOLED 手表 ──BLE──→ 手机微信小程序 ──HTTPS──→ dc.ncrc.org.cn/api2 ──→ 六元 MySQL (deviceId=4)
   待测               待测                     已验证                已验证

真机测试数据写入 deviceId=4,demo 数据(deviceId=1/2/3)保留完整。


准备工作

环境就绪检查

检查命令 期望
六元 API 可达 curl -s https://dc.ncrc.org.cn/api2/api/status "status":"running"
register API 已上线 curl -s https://dc.ncrc.org.cn/api2/ | python3 -m json.tool | grep device/register 命中 POST /api/device/register
3 台 demo 设备在 curl -s https://dc.ncrc.org.cn/api2/api/data | python3 -c "import json,sys; print(json.load(sys.stdin)['count'])" 3
S101 已注册 curl -s 'https://dc.ncrc.org.cn/api2/api/device/by-sign?sign=S101_FA:BA:94:8A:70:75' "id":4
手表已充电开机 看手表屏幕 显示时间
手表未被其他 App 连 从其他设备断开蓝牙

需要的东西


Phase A:Windows 侧导入项目

验收: 模拟器显示首页,控制台无红色错误。


Phase B:真机预览

验收: 手机上能看到小程序首页,有功能菜单列表。


Phase C:BLE 连接 + 密钥认证(关键卡点)

若卡在「连接中」:

  1. 在微信开发者工具点「远程调试」→「vConsole」查看日志
  2. 看是否有 veepooBlePasswordCheckManager 的调用日志
  3. 重启手表蓝牙(关机再开)
  4. 确认没有其他手机或 App 正在连这只手表
  5. 关闭小程序重新扫码打开

验收: 首页显示设备已连接,无持续 loading。


Phase D:第一类数据验证 — 心率(最快)

WSL 端准备: 在 WSL 终端启动实时监控:

cd /home/qq/WeChat_Mini_Program_Ble_SDK
bash scripts/watch-production-data.sh

监控界面会实时显示 deviceId=4 的状态(初始应为「尚无数据」)。


验收三条:

达成这三条 = 第一个硬件数据类型打通成功。


Phase E:扩展测试其他数据类型

每种数据独立测试,失败一个不影响其他。每跑完一个在监控面板确认数据到达。


Phase F:鲁棒性验证(4.27 体验版交付前必跑)

在 D/E 数据类型打通后做。任何一条不过都不应交付。

Phase G:体验版/正式版区分(仅体验版交付时跑)


故障排查

小程序报 "request:fail url not in domain list"

蓝牙扫不到设备

连接成功但没数据

vConsole 看到 HTTP 失败

数据已写入但监控面板没反应


数据归宿说明


打通后的下一步

  1. 动态 deviceId 映射:已实现 —— services/dataStorage.ts:resolveDeviceId() 在 BLE 连接后调 POST /api/device/register 取 deviceId
  2. 断网重传:已实现 —— enqueuePending + flushPending,触发点:onShow / 网络恢复
  3. 合法域名上架:小程序正式发布前,把 dc.ncrc.org.cn 加到微信公众平台后台的合法 request 域名(详见 docs/4.25plan.md Step 10.1)
  4. 数据校验:血压/心率等值的合理性检查(如血压 < 60/40 或 > 250/180 拒绝入库)
  5. 受试者编号 ↔︎ deviceId 绑定:当前 patientId 硬编码为 1;正式上线前由六元/医生端建立映射

参考文件