Files
VesiscanClinicalAndroid/app
dw.jang 010e9acfbd Labdb fix: payload sanitize for PostgreSQL JSONB compatibility
서버 로그에서 두 원인 확인:
  [error] POST /devices/register invalid byte sequence for encoding UTF8: 0x00
  [error] POST /upload/json    unsupported Unicode escape sequence

PostgreSQL JSONB는 NULL escape를 거부 (HTTP 500). BLE rid: 응답에서
US-ASCII 디코딩 후 .trim()은 whitespace만 제거하고 NULL/제어문자는
남기므로, firmware/hw/serial 문자열에 padding NULL이 묻은 채 payload로 직렬화됨.

두 군데 방어:
  1. BleManager.rid: 파싱에서 0x00~0x1F,0x7F를 공백으로 치환 후 trim
  2. LabdbClient.sanitizeForJsonb 추가 — register/uploadJson 직전에
     payload를 재귀적으로 순회하며 모든 string에서 C0 control + DEL 제거
     (탭/개행/캐리지리턴은 보존)

원인 조사: 서버 SSH로 /var/log/labdb.log 직접 확인 +
server.js의 /upload/json 핸들러 코드 검토 결과 서버는 받은 sensor/channels
JSON을 그대로 JSONB 컬럼에 INSERT.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-01 17:30:19 +09:00
..