상태 전이 권한 규칙 통합

상태 전이 권한 규칙 통합

ADR-050 상태 전이 권한 규칙 통합

1. Metadata

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

2. Domain Decision

  1. 상태 전이는 역할별 허용 목록으로 통제한다.
  2. 사용자/파트너/시스템 전이 권한을 분리한다.
  3. 권한 밖 전이는 서버에서 거부한다.

역할별 기본 권한:

  1. 사용자: hold 생성 요청, reserved 취소 요청
  2. 시스템: hold -> redeemed|expired|cancelled, reserved -> expired
  3. 파트너: 검증 완료 트리거(reserved -> redeemed) 및 운영 확인 이벤트
  4. 관리자/운영: 예외 복구용 강제 전이(감사 로그 필수)

3. Product Decision

  • 해당 없음

4. UX Decision

  1. 권한 관련 UX의 단일 SoT는 SPEC-000의 UX Rule Catalog를 따른다.
  2. CTA 노출 조건/권한 거부 안내/복구 행동 규칙은 UX-R-002/003/010을 참조한다.
  3. 재요청 동일 결과 재노출 기준은 UX-R-012를 참조한다.

5. Tech Decision

  1. 권한 검증은 RLS와 RPC 경계로 이중 보호한다.
  2. 클라이언트 권한 체크는 UX 보조로만 사용한다.
  3. 권한 실패는 표준 코드로 반환한다.

6. Ops Decision

  1. 권한 변경/실패 이벤트를 정기 감사한다.
  2. 권한 오설정 탐지 시 즉시 조치한다.
  3. 감사 결과를 주기 리포트로 관리한다.

7. Implementation Contract (Optional)

7.1 API Contract

  • 상태 전이 API는 actor_role과 대상 리소스 기준으로 권한을 판정한다.
  • 권한 부족은 AUTH_TRANSITION_DENIED 코드로 반환한다.

7.2 Data Contract

  • 역할별 전이 허용 매트릭스는 서버 정책 테이블로 관리한다.
  • 예외 강제 전이는 관리자 권한 + 사유 기록을 필수로 한다.

7.3 Error/Observability Contract

  • 권한 실패 이벤트는 actor, target, required_role을 포함해 감사로그에 기록한다.
  • 권한 정책 변경 시 정책 버전과 배포 시각을 함께 기록한다.

7.4 Test/Acceptance Contract

  • 역할 매트릭스 외 전이는 전부 차단되어야 한다.
  • 클라이언트 우회 요청도 서버에서 동일하게 거부되어야 한다.
  • 권한 없는 사용자/역할에는 상태 전이 CTA가 노출되지 않아야 한다.
  • UX 수용 기준 검증은 SPEC-000UX-R-002/003/010/012 준수 여부로 판정한다.

8. Validation

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