SCENARIO-PARTNER-020_첫 슬롯 발행 흐름
SCENARIO-PARTNER-020_첫 슬롯 발행 흐름
SCENARIO-PARTNER-020 첫 슬롯 발행 흐름
1. Metadata
- Status: draft
- Date: 2026-03-09
- Owner: YSY
- Related ADRs: ADR-020, ADR-090, ADR-110, ADR-130, ADR-220, ADR-230, ADR-260, ADR-270
2. Goal
파트너가 첫 슬롯을 발행할 때 권한/한도/시간 조건을 미리 이해하고, 발행 성공 또는 실패 사유를 즉시 파악해 다음 행동으로 자연스럽게 이어지도록 표준 흐름을 정의한다.
3. UX-First Principles
- 발행 전 체크 결과(권한/한도/시간)는 제출 전에 먼저 보여준다.
- 발행 차단 시 실패 사유 1개를 우선 노출하고 복구 경로를 바로 제공한다.
- 입력 화면과 검토 화면을 분리해 실수 입력을 줄인다.
- 발행 결과 화면은 상태, 노출 시작 정보, 다음 행동 CTA를 명확히 제공한다.
- 동일 요청 재전송 시 중복 생성이 아니라 동일 결과를 보여준다.
4. Preconditions
- 파트너 로그인 상태다.
- 매장 등록/위치 인증이 완료되어 발행 가능 조건을 충족했거나, 미충족 시 사유 확인이 가능하다.
- 구독 상태 정보와 플랜/Add-on 한도 정보를 조회할 수 있다.
- 네트워크 연결이 정상이다.
5. Main Scenario (첫 발행 성공 경로)
- 파트너가
슬롯 발행 화면으로 진입한다. - 시스템이 발행 전 점검 결과를 먼저 표시한다. (
can_issue, 동시 노출 제한, 재발행 간격, 월 한도) - 파트너가 슬롯 기본 정보를 입력한다. (시간, 수량, 결제 방식, 검증 방식)
- 파트너가 검토 화면에서 입력값과 예상 노출 상태를 확인한다.
- 파트너가
발행하기를 누르면 서버가 불변조건과 한도 규칙을 최종 검증한다. - 검증을 통과하면 슬롯이
issued로 생성되고 발행 완료 화면을 표시한다. - 완료 화면은 다음 행동 CTA(발행 목록 보기, 슬롯 상세 보기, 추가 발행)를 제공한다.
6. UX Flow Spec (화면 단위)
| Phase | Screen/Surface | 사용자 질문 | UI가 답해야 할 내용 | Primary CTA | Secondary CTA | 종료 조건 |
|---|
| P1 | 발행 진입 화면 | “지금 발행 가능한가?” | can_issue, 제한 사유, 한도 요약 | 발행 시작 | 구독/설정 보기 | 입력 화면 진입 |
| P2 | 슬롯 입력 화면 | “무엇을 입력해야 하나?” | 필수 항목, 형식 규칙, 즉시 검증 피드백 | 다음 단계 | 임시 저장 | |
| P3 | 발행 전 점검 패널 | “걸리는 제한이 있나?” | 동시 노출/재발행 간격/월 한도 점검 결과 | 검토로 이동 | 수정하기 | 검토 화면 진입 |
| P4 | 검토 화면 | “이대로 발행해도 되나?” | 최종 입력 요약, 실패 가능성 힌트 | 발행하기 | 뒤로 가기 | 발행 요청 전송 |
| P5 | 발행 결과 화면 | “정상 발행됐나?” | 상태(issued) 또는 실패 코드, 다음 행동 | 목록 보기 | 상세 보기/수정 | 플로우 종료 |
7. Branches (권한/한도/검증 분기)
| Case | 조건 | 결과 | 사용자 안내 핵심 | 다음 행동 |
|---|
| B1 | 권한/한도/검증 통과 | issued 생성 | “슬롯이 발행되었어요” | 목록 보기/추가 발행 |
| B2 | 발행 권한 미충족 | 생성 없음 | “현재 상태에서는 발행할 수 없어요” | 상태 복구/구독 활성 |
| B3 | 동시 노출 제한 초과 | 생성 없음 | “활성 슬롯 수가 플랜 한도를 넘었어요” | 기존 슬롯 정리 |
| B4 | 재발행 간격 위반 | 생성 없음 | “재발행 가능 시간이 아직 지나지 않았어요” | 대기 후 재시도 |
| B5 | 월 한도 초과 | 생성 없음 | “이번 달 발행 한도를 모두 사용했어요” | 다음 달 발행/플랜 변경 |
| B6 | 불변조건 위반(시간/수량) | 생성 없음 | “입력값을 확인해 주세요” | 입력 수정 |
8. Recovery UX (예외/복구)
A1. 필수 입력 누락/형식 오류
- 안내: 누락 필드와 오류 이유를 인라인으로 표시한다.
- 행동: 첫 오류 항목으로 이동해 즉시 수정하도록 유도한다.
A2. 발행 전 점검과 제출 시점 결과 불일치
- 안내: “방금 한도 상태가 변경되었어요” 메시지를 제공한다.
- 행동: 최신 점검 결과로 새로고침 후 재시도 경로를 제시한다.
A3. 중복 탭/재전송
- 안내: 이미 처리된 요청임을 안내한다.
- 행동: 동일 발행 결과 화면을 재노출한다.
A4. 시간 경계 혼동
- 안내: 기준 시각(서버)과 표시 시각(로컬/서울 기준)을 함께 설명한다.
- 행동: 발행 가능 시각 도달 후 재시도 안내를 제공한다.
A5. 권한 회수 직후 발행 시도
- 안내: 권한 회수 사유와 현재 파트너/구독 상태를 명시한다.
- 행동: 구독 복구 또는 상태 복구 경로로 이동시킨다.
9. Domain Mapping (참조용 상태/코드)
| 이벤트 | 상태/결과 | 대표 코드 |
|---|
| 발행 전 점검 통과 | 발행 가능 | - |
| 발행 성공 | slots.status=issued | - |
| 권한 미충족 | 생성 없음 | PARTNER_CAPABILITY_DENIED |
| 동시 노출 제한 위반 | 생성 없음 | CONCURRENT_LIMIT_EXCEEDED |
| 재발행 간격 위반 | 생성 없음 | REISSUE_INTERVAL_VIOLATION |
| 월 한도 초과 | 생성 없음 | PLAN_LIMIT_EXCEEDED |
| 불변조건 위반 | 생성 없음 | INVARIANT_VIOLATION |
정책 메모:
- 발행 권한은
partner_state + subscription_state + can_issue 조합으로 판정한다. - 한도 판정 우선순위는
동시 노출 -> 재발행 간격 -> 월 한도다. - 월 한도 계산 기준 월 경계는
Asia/Seoul을 따른다. - 발행 실패 시 부분 반영 없이 요청 전체를 중단한다.
10. ADR Impact
- ADR-220: 발행 권한 판정(
can_issue) 결과의 사용자 안내 흐름을 구체화한다. - ADR-090: 한도 점검 우선순위와 실패 안내 UX를 시나리오로 고정한다.
- ADR-110: 불변조건 위반 시 부분 반영 금지 원칙의 사용자 체감 흐름을 명시한다.
- ADR-130: 발행 실패 코드의 사용자 메시지 매핑 포인트를 명시한다.
- ADR-260: 입력/검토/결과 화면의 표현 밀도와 CTA 우선순위를 보강한다.
- ADR-270: 플랜별 제한 파라미터와 구독 상태 메시지 분기 기준을 시나리오에 반영한다.
11. Acceptance Criteria