상태 전이 권한 규칙 통합
ADR-050 상태 전이 권한 규칙 통합
1. Metadata
- ADR ID: ADR-050
- Status: draft
- Date: 2026-03-09
- Owner: YSY
2. Domain Decision
- 상태 전이는 역할별 허용 목록으로 통제한다.
- 사용자/파트너/시스템 전이 권한을 분리한다.
- 권한 밖 전이는 서버에서 거부한다.
역할별 기본 권한:
- 사용자:
hold생성 요청,reserved취소 요청 - 시스템:
hold -> redeemed|expired|cancelled,reserved -> expired - 파트너: 검증 완료 트리거(
reserved -> redeemed) 및 운영 확인 이벤트 - 관리자/운영: 예외 복구용 강제 전이(감사 로그 필수)
3. Product Decision
- 해당 없음
4. UX Decision
- 권한 관련 UX의 단일 SoT는
SPEC-000의 UX Rule Catalog를 따른다. - CTA 노출 조건/권한 거부 안내/복구 행동 규칙은
UX-R-002/003/010을 참조한다. - 재요청 동일 결과 재노출 기준은
UX-R-012를 참조한다.
5. Tech Decision
- 권한 검증은 RLS와 RPC 경계로 이중 보호한다.
- 클라이언트 권한 체크는 UX 보조로만 사용한다.
- 권한 실패는 표준 코드로 반환한다.
6. Ops Decision
- 권한 변경/실패 이벤트를 정기 감사한다.
- 권한 오설정 탐지 시 즉시 조치한다.
- 감사 결과를 주기 리포트로 관리한다.
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-000의UX-R-002/003/010/012준수 여부로 판정한다.
8. Validation
- Domain/Product/UX/Tech/Ops 결정이 충돌하지 않는다.
- 구현 기준은 SPEC과 정합성을 유지한다.
- 운영 절차는 RUNBOOK으로 연결된다.