반복 미이행 제재 규칙 통합

반복 미이행 제재 규칙 통합

ADR-100 반복 미이행 제재 규칙 통합

1. Metadata

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

2. Domain Decision

  1. 잦은 expired/cancelled에 대해 신용점수 기반 제재를 적용한다.
  2. 제재 임계값과 기간은 정책 파라미터로 관리한다.
  3. 제재 상태는 예약 전 안내한다.
  4. 제재 판정은 사용자 단위 누적 이벤트로 계산한다.
  5. 제재 해제는 기간 경과 또는 운영 승인으로 처리한다.
  6. 기본 관측 윈도우는 최근 7일(WINDOW_DAYS=7)로 시작한다.
  7. 기본 집계 이벤트는 서버 확정 expired를 우선 사용하고, cancelled는 정책 플래그로 포함 여부를 제어한다.
  8. 제재 레벨과 효과(유효시간 단축/일시 차단)는 정책 버전으로 관리한다.

3. Product Decision

  1. 사용자 신용점수 기반 제재 정책을 적용한다.
  2. 제재 단계와 기간을 정책으로 고정한다.
  3. 이의제기 경로를 사용자에게 제공한다.
  4. 제재 적용/해제 사유를 사용자에게 명시한다.

4. UX Decision

  1. 제재 사유/기간/해제조건을 사용자에게 명확히 안내한다.
  2. 이의제기 경로를 고정 위치에 제공한다.
  3. 제재 단계별 제한 기능을 일관되게 표시한다.
  4. 제재 적용 직후 알림과 인앱 안내를 동시에 제공한다.

5. Tech Decision

  1. 제재 점수 계산과 적용을 서버 배치로 처리한다.
  2. 실시간 차단 여부는 최신 점수 스냅샷으로 판정한다.
  3. 제재 이력은 변경 사유와 함께 저장한다.
  4. 제재 계산 실패 시 기본은 보수적 차단보다 재계산 보류를 우선한다.

6. Ops Decision

  1. 제재 이의접수/심사/결과통지 절차를 정의한다.
  2. 심사 근거 데이터와 보관 기간을 명시한다.
  3. 오판 제재 해제 SLA를 정의한다.
  4. 제재 해제 시 재발 방지 안내를 함께 제공한다.

7. Implementation Contract (Optional)

7.1 API Contract

  • 사용자 액션 전 점검 응답은 penalty_level, penalty_reason, unblock_at_utc를 포함한다.
  • 제재 중 요청은 PENALTY_ACTIVE로 거부한다.

7.2 Data Contract

  • 제재 계산은 user_id + window_days + policy_version 키로 관리한다.
  • 제재 이력은 applied_at, released_at, reason_code를 필수 저장한다.

7.3 Error/Observability Contract

  • 임계값 도달/해제 이벤트를 별도 감사 이벤트로 기록한다.
  • 오판 제재 복구 시간(SLA)을 운영 지표로 추적한다.

7.4 Test/Acceptance Contract

  • 임계값 직전/직후 요청에서 제재 적용 여부가 정확히 반영되어야 한다.
  • 제재 해제 후 동일 액션이 정상 허용되어야 한다.

8. Validation

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