데이터

데이터 형식·단위·시간

플러그인 이벤트, Room 기록, 서버 표현을 구별합니다.

기준일
이 페이지에서

세 가지 표현

플러그인의 Event는 공통 조회 계약입니다. Room 엔티티와 서버 전송 문서는 별도 구조입니다. Event 하나를 모든 데이터의 완전한 내보내기 형식으로 취급하지 않습니다.

표현주요 필드주의점
Eventtype, startMs, endMs, valueNum, unit, sourcevalueNum은 Kotlin Any이며 숫자나 객체일 수 있음
센서 배치sensorType, startedAt, endedAt, sampleCount, payloadJson이벤트 요약과 측정 payload가 다름
건강 수치metric, startAt, valueNum/valueStr/valueJson, unit, sourcePackage값 표현과 단위를 함께 읽음
건강 세션type, startAt, endAt, metaJson, 소유자수면·운동처럼 기간이 있는 기록
설문 응답surveyId, bundleJson, dedupeKey, revision, syncState회차·문항 구조와 함께 해석
외부 지표지표 이름, 시간, 다형 값게임별 요약 형식 확인

센서 Event 예제

아래는 배치 요약을 JSON으로 표현한 설명용 예제입니다. 공개 HTTP API의 응답 예제가 아닙니다.

CODE
{
  "type": "accelerometer",
  "startMs": 1789603200000,
  "endMs": 1789603260000,
  "valueNum": 40,
  "unit": "samples",
  "source": "sensor"
}

여기서 40은 가속도 값이 아니라 샘플 수입니다. 실제 평균 가속도는 해당 배치 payload에 있습니다.

시간과 단위

기록의 epoch 시각은 일반적으로 밀리초입니다. 음성 durationMs, 통화 payload의 callDuration도 밀리초이며, Health Connect의 exercise_duration 적재값은 초입니다. 필드 이름이 비슷하다고 같은 단위로 합치지 않습니다.

건강 기록의 dayKey와 설문 회차는 로컬 날짜·시간대 규칙과 연결됩니다. zoneOffsetMin과 소스 시각, 세션 시작·종료를 함께 보관해 해석하세요. UTC epoch를 날짜 문자열로 표시할 때는 연구에서 사용할 시간대를 명시합니다.

Samsung 경로의 심박은 bpm, 혈압은 mmHg, 산소포화도는 %입니다. 서로 다른 제공자의 같은 이름 지표는 변환 로직과 단위 저장 여부를 대조한 뒤 결합합니다.

데이터 품질 해석

배치 존재·샘플 수·유효값·업로드 성공은 별개의 기준입니다. 카운트 0을 모든 경우에 '정상 관측값 0'으로 처리하지 않습니다. 센서 원격 문서에 payloadOmitted가 있으면 행이 전송되었어도 전체 payload가 없을 수 있습니다.

소유자 없는 레거시 데이터나 다른 참여자의 데이터를 현재 참여자 기록으로 재귀속하지 않습니다. 실제 데이터 추출은 각 저장·동기화 구현을 기준으로 수행해야 합니다.

문서 근거

현재 작업 트리 기준 · 소스 경로 · HEAD 8213e6b7

  • core/plugin-api/src/main/java/com/hdil/datacollection/plugin_api/Plugin.kt
  • core/db/src/main/java/com/hdil/datacollection/db/entity/sensor/SensorEntities.kt
  • core/db/src/main/java/com/hdil/datacollection/db/entity/health/HealthEntities.kt
  • core/db/src/main/java/com/hdil/datacollection/db/entity/survey/SurveyEntities.kt
  • core/db/src/main/java/com/hdil/datacollection/db/entity/external/ExternalMetricEntity.kt
  • plugins/healthconnect/src/main/java/com/hdil/datacollection/plugins/healthconnect/HealthConnectPlugin.kt
  • core/store/src/main/java/com/hdil/datacollection/store/sync/SensorFirestoreDataSource.kt
DTRAC Android연세대학교 · 이봉신 연구팀