본문으로 건너뛰기
버전: 개발 버전 (최신)

Sleep 관련 오류 코드

Sleep 도메인 또는 관련 API(예: /sleep/logs/day-index, /sleep/goals/target-wake-time)에서 발생할 수 있는 오류 코드입니다.

오류 응답 형식

{
"code": 10001,
"message": "MISSING_REQUIRED_FIELDS",
"detail": "필수 입력 항목이 누락되었습니다",
"metadata": {
"fields": ["sleepQuality", "lot", "aet"],
"context": "dns=false"
}
}
필드타입설명
codenumber애플리케이션 오류 코드
messagestring개발자용 오류 코드 이름 (대문자 및 언더스코어)
detailstring사용자에게 표시할 수 있는 친화적인 오류 메시지
errorsarray필드별 유효성 검증 오류가 있는 경우 추가 정보 제공 (선택 사항)
metadataobject오류 관련 추가 메타데이터 (선택 사항)
노트

errorsmetadata 필드는 선택 사항이며, 오류 상황에 따라 포함되지 않을 수 있습니다.

오류 코드 체계

Sleep 관련 오류는 주로 10000번대 코드를 사용합니다.

범위용도
10000-10019서버 및 일반 Sleep 오류
10020-10029사용자 입력 및 형식 관련 오류
10030-10039권한 및 보안 관련 오류
10040-10049리소스 조회 실패 오류
10050-10059통계 및 분석 관련 오류
10060-10079예약됨
10080-10089예약됨
10090-10099리소스 충돌 및 중복 관련 오류

서버 및 일반 Sleep 오류 (10000-10019)

HTTP 상태 코드코드메시지설명
50010000SERVER_ERROR서버 내부 오류가 발생했습니다
40010001MISSING_REQUIRED_FIELDS필수 입력 항목이 누락되었습니다
40010002INVALID_PARAMETERS잘못된 파라미터입니다
40010003INVALID_FORMAT입력 형식이 유효하지 않습니다
40010004INVALID_TIMEZONE유효하지 않은 시간대 ID입니다
40010005INVALID_SLEEP_QUALITY수면의 질 값이 유효하지 않습니다 (1~5 범위)
40010006INVALID_TIME_RANGE유효하지 않은 시간 범위입니다
40010007INVALID_FACTOR_ID유효하지 않은 영향 요인 ID입니다
40010008TOO_MANY_CUSTOM_FACTORS사용자 정의 요인이 너무 많습니다 (최대 10개)
40010009SLEEP_TIME_VALIDATION_FAILED수면 시간 검증에 실패했습니다
40010010DATE_VALIDATION_FAILED날짜 검증에 실패했습니다 (당일 일차만 생성/수정 가능)
40310011TREATMENT_SUSPENDED치료 활동 일시 정지 상태에서는 수면 기록을 생성할 수 없습니다
40010012INVALID_DAY_INDEX유효하지 않은 일차 값입니다
40010013INVALID_RTIB유효하지 않은 rTIB 값입니다
40010014INVALID_TST계산된 총 수면 시간(TST)과 제공된 값이 일치하지 않습니다
40010015UNEXPECTED_SLEEP_DATADNS=true인 경우 수면 관련 데이터를 입력할 수 없습니다
40010016TARGET_WAKE_TIME_CHANGE_NOT_ALLOWED목표 기상 시각 변경이 허용되지 않습니다 (rTIB 처방일에만 가능)
40010017INVALID_CUSTOM_FACTORS"없음" 선택 시 해당 카테고리의 사용자 지정 요인을 입력할 수 없습니다

사용자 입력 및 형식 관련 오류 (10020-10029)

HTTP 상태 코드코드메시지설명
40010020CUSTOM_FACTOR_TOO_LONG사용자 정의 요인이 너무 깁니다 (최대 100자)

권한 및 보안 관련 오류 (10030-10039)

HTTP 상태 코드코드메시지설명
40310030INSUFFICIENT_PERMISSIONS권한이 충분하지 않습니다

리소스 조회 실패 오류 (10040-10049)

HTTP 상태 코드코드메시지설명
40410040SLEEP_LOG_NOT_FOUND수면 기록을 찾을 수 없습니다
40410041SLEEP_GOAL_NOT_FOUND수면 목표를 찾을 수 없습니다
40410042RTIB_RECOMMENDATION_NOT_FOUNDrTIB 처방을 찾을 수 없습니다
40410043SLEEP_GOAL_ADHERENCE_NOT_FOUND수면 목표 달성 기록을 찾을 수 없습니다
40410044USER_NOT_FOUND사용자를 찾을 수 없습니다
40410045TEMPORARY_SLEEP_LOG_NOT_FOUND임시 수면 기록을 찾을 수 없습니다

통계 및 분석 관련 오류 (10050-10059)

HTTP 상태 코드코드메시지설명
50010050STATISTICS_CALCULATION_FAILED통계 계산에 실패했습니다
40010051INSUFFICIENT_DATA_FOR_STATISTICS통계를 계산하기 위한 데이터가 충분하지 않습니다

리소스 충돌 및 중복 관련 오류 (10090-10099)

HTTP 상태 코드코드메시지설명
40910090SLEEP_LOG_ALREADY_EXISTS해당 날짜에 이미 수면 기록이 존재합니다
40910091SLEEP_GOAL_ALREADY_EXISTS해당 날짜에 이미 수면 목표가 존재합니다
42910092RATE_LIMIT_EXCEEDED요청 횟수가 제한을 초과했습니다
50010099UNKNOWN_SLEEP_ERROR알 수 없는 수면 도메인 오류가 발생했습니다

오류 처리 가이드

수면 기록 생성/수정 오류 처리

  • 필수 필드 누락(10001): DNS 상태에 따른 필수 필드 목록을 사용자에게 안내합니다.

    {
    "code": 10001,
    "message": "MISSING_REQUIRED_FIELDS",
    "detail": "잠을 잤을 경우 필수 입력 항목이 누락되었습니다.",
    "metadata": {
    "fields": ["sleepQuality", "lot", "aet"],
    "context": "dns=false"
    }
    }
  • 시간 검증 실패(10009): 구체적인 시간 제약사항을 사용자에게 안내합니다.

    {
    "code": 10009,
    "message": "SLEEP_TIME_VALIDATION_FAILED",
    "detail": "LOT는 18:00 이후여야 하고, 시간 값은 5분 단위여야 하며, AET는 LOT보다 이후여야 합니다.",
    "metadata": {
    "lot": "2024-05-10T16:30:00.000Z",
    "aet": "2024-05-11T06:00:00.000Z"
    }
    }
  • TST 불일치(10014): 계산된 값과 제공된 값의 차이를 명시합니다.

    {
    "code": 10014,
    "message": "INVALID_TST",
    "detail": "계산된 총 수면 시간(TST)과 제공된 값이 일치하지 않습니다.",
    "metadata": {
    "calculated": 450,
    "provided": 480
    }
    }

DNS(Did Not Sleep) 관련 오류 처리

UNEXPECTED_SLEEP_DATA (10015) 오류 발생 시:

{
"code": 10015,
"message": "UNEXPECTED_SLEEP_DATA",
"detail": "DNS=true인 경우 수면 관련 데이터(lot, aet, solMinutes, wasoMinutes, tstMinutes)를 입력할 수 없습니다.",
"metadata": {
"unexpectedFields": ["lot", "aet", "sleepQuality"]
}
}

클라이언트는 DNS=true 상태에서는 수면 관련 필드를 입력받지 않도록 UI를 조정해야 합니다.

치료 활동 제약 관련 오류 처리

  • 치료 일시 정지(10011): 사용자에게 치료가 일시 정지된 상태임을 알리고, 정지 해제 방법을 안내합니다.
  • 날짜 제약 위반(10010): 당일 일차에만 수면 기록 생성/수정이 가능함을 안내합니다.

리소스 충돌 오류 처리

SLEEP_LOG_ALREADY_EXISTS (10090) 오류 발생 시:

{
"code": 10090,
"message": "SLEEP_LOG_ALREADY_EXISTS",
"detail": "해당 날짜에 이미 수면 기록이 존재합니다.",
"metadata": {
"dayIndex": 7,
"existingId": "sl_12345"
}
}

클라이언트는 기존 기록을 수정하거나 덮어쓸지 사용자에게 선택하도록 안내할 수 있습니다.

속도 제한 처리

RATE_LIMIT_EXCEEDED (10092) 오류 발생 시:

{
"code": 10092,
"message": "RATE_LIMIT_EXCEEDED",
"detail": "요청 횟수가 제한을 초과했습니다",
"metadata": {
"remainingLockoutSeconds": 300,
"maxAttemptsAllowed": 10
}
}

클라이언트는 metadata.remainingLockoutSeconds 값을 확인하여 사용자에게 남은 대기 시간을 표시하고, 적절한 재시도 로직을 구현해야 합니다.

사용자 입력 형식 검증

수면의 질 범위 오류(10005):

  • 1~5 범위 외의 값 입력 시 발생
  • UI에서 유효한 범위를 명확히 표시해야 함

영향 요인 관련 오류:

  • INVALID_FACTOR_ID (10007): 존재하지 않는 영향 요인 ID 참조
  • TOO_MANY_CUSTOM_FACTORS (10008): 사용자 정의 요인 10개 초과
  • CUSTOM_FACTOR_TOO_LONG (10020): 사용자 정의 요인 100자 초과

rTIB 관련 오류 처리

  • TARGET_WAKE_TIME_CHANGE_NOT_ALLOWED (10016): rTIB 처방일이 아닌 날에 목표 기상 시각 변경 시도
  • RTIB_RECOMMENDATION_NOT_FOUND (10042): 해당 일차의 rTIB 처방이 없는 경우

통계 및 분석 오류 처리

INSUFFICIENT_DATA_FOR_STATISTICS (10051) 오류 발생 시:

  • 사용자에게 충분한 수면 기록이 축적될 때까지 기다리도록 안내
  • 필요한 최소 데이터 개수(예: 4개 이상의 유효한 기록)를 명시

특별 고려사항

시간 관련 검증

Sleep 도메인에서는 다음과 같은 시간 관련 제약사항이 있습니다:

  1. 5분 단위 입력: 모든 시간 입력은 5분 단위로만 허용
  2. LOT 시간 제약: 18:00 이후여야 함
  3. AET > LOT: 일어난 시각은 잠자리에 든 시각보다 이후여야 함
  4. 당일 일차 제약: 현재 진행 중인 일차에만 생성/수정 가능

데이터 일관성

  • TST(총 수면 시간) 계산값과 사용자 입력값의 일치성 검증
  • DNS 상태에 따른 필수/금지 필드 검증
  • 치료 주기와 일차 정보의 일관성 유지

변경 이력

버전날짜작성자변경 내용
0.1.02025-05-23dalia@weltcorp.com최초 작성