시간 타임존 경계 규칙 통합

시간 타임존 경계 규칙 통합

ADR-080 시간 타임존 경계 규칙 통합

1. Metadata

  • ADR ID: ADR-080
  • Status: draft
  • Date: 2026-03-09
  • Owner: YSY

2. Domain Decision

  1. 서버 UTC 시간을 상태 만료 기준으로 사용한다.
  2. 클라이언트 표시는 로컬 타임존으로 변환한다.
  3. 운영시간 경계는 발행자 정책과 서버 시간으로 계산한다.

3. Product Decision

  • 해당 없음

4. UX Decision

  1. 시간 표기 UX의 단일 SoT는 SPEC-000의 UX Rule Catalog를 따른다.
  2. 만료 시각 로컬 표기/UTC 판정 설명/임박 강조 규칙은 UX-R-011을 참조한다.

5. Tech Decision

  1. 만료 계산은 UTC 기준 배치/쿼리로 처리한다.
  2. 표시 시간 변환은 클라이언트 레이어에서 수행한다.
  3. 스케줄러 지연 시 보정 실행을 허용한다.
  4. 서버의 단일 시간 기준은 now()(UTC)로 통일한다.

6. Ops Decision

  1. 시간 경계 장애 탐지 룰을 운영한다.
  2. 만료 오작동 시 보정 배치 절차를 사용한다.
  3. 타임존 이슈 공지 템플릿을 준비한다.
  4. 장애 복구 시 UTC 기준 재계산 결과를 최종 근거로 사용한다.

7. Implementation Contract (Optional)

7.1 API Contract

  • 시간 관련 응답은 server_time_utc, expires_at_utc를 포함한다.
  • 클라이언트는 서버 시간을 기준으로 남은 시간을 계산한다.

7.2 Data Contract

  • 만료/한도/제재 계산 필드는 UTC로 저장한다.
  • 로컬 타임존은 표시 전용 파생값으로만 사용한다.

7.3 Error/Observability Contract

  • 시간 계산 실패는 TIME_CALCULATION_ERROR 코드로 반환한다.
  • 스케줄러 지연/보정 실행 여부를 운영 이벤트로 기록한다.

7.4 Test/Acceptance Contract

  • DST/타임존 경계일에도 만료 판정이 UTC 기준으로 일관되어야 한다.
  • 동일 예약의 웹/앱 만료 시각 표기가 서버 기준과 일치해야 한다.
  • UX 수용 기준 검증은 SPEC-000UX-R-011 준수 여부로 판정한다.

8. Validation

  • Domain/Product/UX/Tech/Ops 결정이 충돌하지 않는다.
  • 구현 기준은 SPEC과 정합성을 유지한다.
  • 운영 절차는 RUNBOOK으로 연결된다.