跳到主要内容

Multi-Device Dry-Run: 0002 Binding Record

Date: 2026-05-16
User: [email protected] (cmne10rir000h8mwi8gvxvwqs)
Purpose: Production dry-run for Account multi-device management testing

0002 Device Primary Data

FieldValueSource
aovis_device_idaovis-n4k-000002ODM firmware naming spec v0.1
serial_numberN4K-000002ODM firmware naming spec v0.1
activation_codeWWHETGUX4AXNODM firmware naming spec v0.1
modelNEXA Prime 4KODM firmware naming spec v0.1

ICCID Selection

ICCID: 8910300000050270478

Selected from 10 EIOTCLUB test ICCIDs provided by platform. Next sequential number after 0001 (8910300000050270479). Not previously present in local SimCard table, userId=null at bind time. Consumed same batch as 0001.

AWS Resources

ResourceNameStatusCreated
IoT Thingaovis-dev-aovis-n4k-000002ACTIVE2026-05-16
IoT CertificateAttached to Thing + policy AovisCameraThingPolicyV1ACTIVE2026-05-16
KVS Streamaovis-stream-aovis-n4k-000002ACTIVE, retention=720h2026-05-16
WebRTC Channelaovis-webrtc-aovis-n4k-000002ACTIVE2026-05-16

IAM Permission Fix

2026-05-16: Added kinesisvideo:DescribeSignalingChannel to managed policy aovis-backend-service-policy. New default version: v3. Existing statements otherwise unchanged from v2.

DB State After Binding

RecordKey Value
Device.idcmp7yt1qk0001qmgn9mcndpiy
Device.bindingStatusactive
Device.ownerUserIdcmne10rir000h8mwi8gvxvwqs
DeviceOwnership.roleOWNER
DeviceOwnership.boundAt2026-05-16 06:28:14 UTC
AuditLog actiondevice_activated (1 entry)
SimCard.userIdlinked to guorui via activate flow

Entitlement (trial only)

FieldValue
sourceChanneldevice_activation_trial
subscription statusTRIALING
externalSubscriptionIddevice-trial:cmp7yt1qk0001qmgn9mcndpiy
entitlement typecloud_playback
quota1 (24-hour rolling history)
statusACTIVE
expiresAt2026-06-15 06:28:14 UTC

0001 paid Standard cloud subscription (cloud_playback quota=7, ai_summary, smart_search) remains strictly on 0001 Device.id cmp3hyo970000qm97c1foeybk. 0002 has no paid entitlements.

API Smoke Test Results

EndpointStatusNotes
GET /api/devices/aovis-n4k-000002/webrtc200Returns WSS/HTTPS endpoints + 2 ICE servers
GET /api/devices/aovis-n4k-000002/shadow502No real device shadow (expected)
POST /api/devices/aovis-n4k-000002/clip400clip_too_long (no unauthorized/device_not_owned)

Known Gaps

  1. IoT certificate private key: Generated during provisioning but not persisted locally. If a physical 0002 device needs to connect to AWS IoT, a new cert must be generated or the private key must be extracted from the provisioning session logs.
  2. UI confirmation: DeviceOwnership records verified in DB. UI render confirmed via server-side Prisma queries (getDeviceBindings()). Full browser-based HTML verification was not done because NextAuth sessions are scoped to the aovis.app domain; localhost curl cannot create a valid auth session.
  3. No real device: /shadow, /clip, /stream return expected error responses because no physical 0002 device is pushing data to KVS.