AOVIS 样机联调前数据准备清单
适用对象:硬件 / 固件 / App / 后端 / 测试同事
适用阶段:设备样机首次联调、用户绑定联调、KVS / IoT / 数据套餐联调前准备
当前版本基于:aovis-direct-store已上线的 sample integration readiness 方案
注意:本文档描述的是当前系统可联调的 provisional 数据契约,不是最终量产工厂方案
1. 目标
在设备样机开始联调前,统一明确:
- 哪些数据必须由硬件/工厂提供
- 哪些数据必须由后端预置到数据库
- 哪些数据必须由 App/测试同事准备
- 哪些能力现在可以测
- 哪些能力仍然依赖 AWS / EIOTCLUB / 正式 provisioning 合同
2. 当前系统最小联调闭环
当前系统已经支持以下最小闭环:
- 测试用户登录并获得 App Token
- 后端预置一条待绑定 Device 记录
- 样机提交
aovis_device_id + activation_code (+ iccid) - 后端校验:
- 用户已登录
- 设备存在
activation_code哈希匹配iccid与预置Device.iccid一致(如提交)
- 绑定成功后:
- 创建
DeviceOwnership - 更新
Device.ownerUserId - 写入
AuditLog - 返回绑定成功结果
- 创建
3. 联调前必须准备的数据
3.1 用户侧必须准备
| 项目 | 是否必需 | 提供方 | 说明 |
|---|---|---|---|
| 测试用户账号 | 必需 | App / 测试 | 一个真实可登录的测试账号(Google / Apple / Magic Link 均可) |
| App Token | 必需 | App / 测试 | 登录成功后拿到的 aovis_app_... token,用于调用绑定和设备接口 |
| 测试账号邮箱 | 建议 | App / 测试 | 便于排查和后台定位用户 |
| 测试设备名称 | 可选 | App / 测试 | 如 iPhone 15 Pro / Pixel 8,用于 token 发放记录 |
3.2 样机侧必须准备
| 项目 | 是否必需 | 提供方 | 说明 |
|---|---|---|---|
aovis_device_id | 必需 | 硬件 / 固件 | 当前系统里的设备绑定主标识 |
activation_code | 必需 | 硬件 / 工厂 / 固件 | 当前样机阶段 provisional 激活码 |
iccid | 强烈建议 | 硬件 / 工厂 | 设备内嵌 SIM/eSIM 的 ICCID;如要测 SIM 一致性则必需 |
firmware_version | 建议 | 固件 | 联调记录和问题排查使用 |
serial_number | 建议 | 硬件 / 工厂 | 便于和工厂批次、外壳标签对应 |
model | 建议 | 硬件 / 工厂 | 如 NEXA Prime 4K |
3.3 后端数据库必须预置
至少需要一条 Device 记录,字段建议如下:
| 字段 | 是否必需 | 说明 |
|---|---|---|
aoviseDeviceId | 必需 | 必须与样机提交的 aovis_device_id 一致 |
activationCodeHash | 必需 | 样机 activation_code 的 SHA-256 哈希 |
iccid | 强烈建议 | 如果样机会上报 ICCID,则这里必须预置同一个值 |
ownerUserId | 建议为空 | 样机首次绑定前应为空 |
bindingStatus | 建议 pending | 表示待绑定 |
firmwareVersion | 可选 | 可先空,绑定时回写 |
status | 建议 ACTIVE | 便于后续权限校验 |
4. 当前绑定接口实际要求
当前接口:
POST /api/devices/activate
Authorization: Bearer <app_token>
Content-Type: application/json
请求体:
{
"aovis_device_id": "AOVIS_SAMPLE_001",
"activation_code": "SAMPLE-ACT-001",
"iccid": "8988308650104486856",
"firmware_version": "1.0.3"
}
当前校验规则
必需规则
- 必须带
Authorization: Bearer <app_token> aovis_device_id必须存在activation_code必须存在- 后端必须能找到对应
Device activation_code的 SHA-256 必须等于Device.activationCodeHash
ICCID 规则
- 如果请求里带了
iccid- 后端
Device.iccid必须已预置 - 且两者必须完全一致
- 后端
- 如果不一致,会返回:
iccid_mismatch
- 如果后端没预置但请求带了,会返回:
iccid_not_preprovisioned
绑定冲突规则
- 如果设备已被其他用户绑定,会返回:
device_already_bound
5. 当前联调前推荐的样机资料模板
建议每台样机提前整理成一行记录,交给后端导入或手工预置。
| sample_name | aovis_device_id | activation_code | activationCodeHash | iccid | firmware_version | serial_number | model | 测试账号邮箱 | 备注 |
|---|---|---|---|---|---|---|---|---|---|
| Sample-001 | AOVIS_SAMPLE_001 | SAMPLE-ACT-001 | <sha256> | 8988308650104486856 | 1.0.3 | SN-001 | NEXA Prime 4K | [email protected] | 首台样机 |
示例说明
activationCodeHash由后端根据明文activation_code生成- 明文
activation_code不建议长期散落在群里,应通过受控表单或安全文档流转 aovis_device_id必须是设备端实际上报给后端的值,不要临时猜
6. 联调前推荐分工
6.1 硬件 / 工厂 / 固件提供
至少提供:
aovis_device_idactivation_codeiccidserial_numberfirmware_version
如果后面要做 AWS KVS / IoT 正式联调,建议同时准备:
thingName(如已有)- 设备证书 / provisioning 方案说明
- KVS stream / channel 命名约定
6.2 后端准备
- 预置
Device记录 - 生成并写入
activationCodeHash - 预置
Device.iccid - 确认用户账号可登录
- 如需测试高级能力,补齐:
awsIotThingNamekvsStreamNamekvsChannelArn- 对应
Entitlement
6.3 App / 测试准备
- 准备测试账号
- 获取
app_token - 用真实样机数据调用
/api/devices/activate - 记录:
- 请求参数
- 返回码
- 绑定是否成功
- 后续
/account/devices是否能看到设备
7. 如果要继续测 KVS / WebRTC / 云回放,还要额外准备什么
当前仅“绑定成功”还不够。
如果还要测以下接口:
/api/devices/[id]/stream/api/devices/[id]/clip/api/devices/[id]/webrtc/api/devices/[id]/shadow/api/devices/[id]/command/api/ai/summary
则还要额外准备:
7.1 Device 的 AWS 映射字段
| 字段 | 说明 |
|---|---|
awsIotThingName | 设备在 AWS IoT 中的 Thing 名称 |
kvsStreamName | KVS 回放流名 |
kvsChannelArn | KVS WebRTC Channel ARN |
如果这些字段没准备,当前系统会返回:
device_not_provisioned
7.2 Entitlement(按能力)
| 能力 | 当前要求 |
|---|---|
live_view | 目前主要要求设备已 provisioned |
cloud_playback | 需要对应 entitlement |
event_clip | 需要 cloud_playback entitlement |
ai_summary | 需要 ai_summary entitlement |
所以如果你要测:
- 回放
- 片段下载
- AI 摘要
还要给测试账号补相应 Entitlement。
8. 如果要继续测 EIOTCLUB / 数据套餐,还要额外准备什么
8.1 建议额外准备
| 项目 | 提供方 | 说明 |
|---|---|---|
SimCard.iccid 记录 | 后端 | 本地数据库已有该卡 |
| EIOTCLUB 可查卡状态 | 供应商 / 后端 | 确认卡真实存在于供应商侧 |
| 测试用数据套餐 | 运营 / 后端 | 可用于 purchase / activation 测试 |
| Stripe 测试用户/订单 | 测试 / 后端 | 如需测数据套餐支付链路 |
8.2 当前注意事项
- 当前系统已经能处理 data-plan webhook / refund / audit
- 但供应商实际套餐、卡状态、回调能否联动,还依赖真实 EIOTCLUB 配置
9. 最小联调清单(可以直接执行)
9.1 最小 4 件套
如果你现在只想开始“设备与用户绑定”联调,最少准备:
- 一个能登录的测试账号
- 一个可用的
app_token - 一个真实的
aovis_device_id - 一个与后端 hash 匹配的
activation_code
9.2 推荐 5 件套
再加上:
- 一个与后台
Device.iccid一致的iccid
这样就能一起测:
- 登录
- 绑定
- ICCID 一致性校验
- DeviceOwnership 创建
- 审计日志写入
10. 当前不能误解成已完成的事项
以下内容还不能当成正式量产能力:
activation_code只是 provisional 样机方案- 还没有正式工厂 provisioning 合同
- 还没有正式的量产二维码 / claim token 流程
- AWS Cognito / IoT / KVS 还不是完整生产打通状态
- EIOTCLUB 全链路联动仍依赖真实供应商配置
11. 给团队的简短结论
当前样机联调前,至少要准备:
- 一个能登录并拿到
app_token的测试用户 - 一条已预置的
Device - 样机真实的
aovis_device_id - 对应明文
activation_code - 后端写好的
activationCodeHash - 样机真实
iccid与后端Device.iccid一致
满足这些条件后,就可以开始进行第一阶段设备绑定联调。