End Session 시 measurement.json을 https://labdb.medithings.net/api/v1/upload/json
에 자동 업로드. dataType="000" (VesiScan 6채널). cycle 1개 = record 1개.
testId는 폴더명 그대로 사용 (40자 초과 시 prefix+hash로 축약).
Files:
- LabdbCredentials: apiKey/deviceId를 EncryptedSharedPreferences에 안전 저장
- LabdbClient: register/checkStatus/uploadJson + 5가지 에러 분기
(PendingApproval / Reregister / RateLimit / ApiError / Network)
- LabdbUploader: measurement.json → payload 변환 + fire-and-forget 업로드
성공 시 labdb_upload.json, 실패 시 labdb_upload_error.json 마커 작성
ClinicalSessionStore.endMeasurement: cycle>0 + active 상태일 때만 자동 트리거.
ClinicalHomeView: labdb 상태 카드(Register/Refresh) + 직전 측정 업로드 상태
표시 + 수동 Upload 재시도 버튼.
오프라인 큐는 아직 없음 (Phase C는 후속).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>