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. 발행 전 체크 결과(권한/한도/시간)는 제출 전에 먼저 보여준다.
  2. 발행 차단 시 실패 사유 1개를 우선 노출하고 복구 경로를 바로 제공한다.
  3. 입력 화면과 검토 화면을 분리해 실수 입력을 줄인다.
  4. 발행 결과 화면은 상태, 노출 시작 정보, 다음 행동 CTA를 명확히 제공한다.
  5. 동일 요청 재전송 시 중복 생성이 아니라 동일 결과를 보여준다.

4. Preconditions

  1. 파트너 로그인 상태다.
  2. 매장 등록/위치 인증이 완료되어 발행 가능 조건을 충족했거나, 미충족 시 사유 확인이 가능하다.
  3. 구독 상태 정보와 플랜/Add-on 한도 정보를 조회할 수 있다.
  4. 네트워크 연결이 정상이다.

5. Main Scenario (첫 발행 성공 경로)

  1. 파트너가 슬롯 발행 화면으로 진입한다.
  2. 시스템이 발행 전 점검 결과를 먼저 표시한다. (can_issue, 동시 노출 제한, 재발행 간격, 월 한도)
  3. 파트너가 슬롯 기본 정보를 입력한다. (시간, 수량, 결제 방식, 검증 방식)
  4. 파트너가 검토 화면에서 입력값과 예상 노출 상태를 확인한다.
  5. 파트너가 발행하기를 누르면 서버가 불변조건과 한도 규칙을 최종 검증한다.
  6. 검증을 통과하면 슬롯이 issued로 생성되고 발행 완료 화면을 표시한다.
  7. 완료 화면은 다음 행동 CTA(발행 목록 보기, 슬롯 상세 보기, 추가 발행)를 제공한다.

6. UX Flow Spec (화면 단위)

PhaseScreen/Surface사용자 질문UI가 답해야 할 내용Primary CTASecondary 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

  1. ADR-220: 발행 권한 판정(can_issue) 결과의 사용자 안내 흐름을 구체화한다.
  2. ADR-090: 한도 점검 우선순위와 실패 안내 UX를 시나리오로 고정한다.
  3. ADR-110: 불변조건 위반 시 부분 반영 금지 원칙의 사용자 체감 흐름을 명시한다.
  4. ADR-130: 발행 실패 코드의 사용자 메시지 매핑 포인트를 명시한다.
  5. ADR-260: 입력/검토/결과 화면의 표현 밀도와 CTA 우선순위를 보강한다.
  6. ADR-270: 플랜별 제한 파라미터와 구독 상태 메시지 분기 기준을 시나리오에 반영한다.

11. Acceptance Criteria

  • 발행 전 권한/한도 점검 결과가 제출 전에 노출된다.
  • 발행 차단 시 우선 실패 사유 1개와 복구 행동이 함께 제시된다.
  • partner_active + subscription_active + can_issue=true에서만 발행이 성공한다.
  • 한도 위반 시 우선순위에 맞는 코드가 반환되고 화면 메시지가 일치한다.
  • 발행 실패 케이스에서 슬롯이 부분 생성되지 않는다.
  • 중복 제출 시 동일 결과 화면이 재노출된다.
  • 관련 ADR/SPEC/RUNBOOK과 충돌하지 않는다.