테마
Story: 어드민 결제 관리 UI
메타
| 항목 | 값 |
|---|---|
| Story ID | E-06-S-12 |
| Epic | E-06 PG사 이관 |
| 상태 | ready-for-dev |
| 우선순위 | P2 |
| 규모 | M |
| 담당 개발자 | 수민 (FE) |
사용자 스토리
As a 운영팀,
I want 어드민에서 결제 현황을 관리하고 싶다,
So that 결제 실패 대응 및 환불 처리를 효율적으로 할 수 있다.
수락 기준 (Acceptance Criteria)
AC-01: 결제 현황 대시보드
| 항목 | 내용 |
|---|---|
| Given | 어드민 결제 관리 페이지에서 |
| When | 페이지를 로드하면 |
| Then | MRR, 유료 회원수, 이탈수가 요약 표시된다 |
AC-02: 결제 상태별 필터
| 항목 | 내용 |
|---|---|
| Given | 결제 현황 페이지에서 |
| When | 상태별 탭을 클릭하면 |
| Then | 전체/결제예정/결제실패/해지예정별로 필터링된다 |
AC-03: 수동 처리 기능
| 항목 | 내용 |
|---|---|
| Given | 결제 실패 항목에서 |
| When | 수동 재시도 버튼을 클릭하면 |
| Then | 결제 재시도가 실행되고 결과가 표시된다 |
AC-04: MRR 계산 표시
| 항목 | 내용 |
|---|---|
| Given | MRR 현황을 볼 때 |
| When | 쿠폰/크레딧 할인이 적용된 경우 |
| Then | Gross MRR, 할인액, 실수익이 분리 표시된다 |
태스크 분해
Task 1: 대시보드 UI AC-01
- [ ] 1.1: MRR 카드 컴포넌트 (Gross MRR, 할인액, 실수익)
- [ ] 1.2: 유료 회원수 카드
- [ ] 1.3: 이탈수 카드
Task 2: 결제 목록 AC-02
- [ ] 2.1: 상태별 탭 (전체/결제예정/결제실패/해지예정)
- [ ] 2.2: 결제 목록 테이블
- [ ] 2.3: 결제 상태 컬러 코딩 (🟢🟡🔴)
Task 3: 상세 정보 및 액션 AC-03
- [ ] 3.1: 결제 실패 상세 (실패 사유, 재시도 횟수)
- [ ] 3.2: [수동 재시도] 버튼 + API 연동
- [ ] 3.3: [연락하기] 버튼 (채널톡 연동)
- [ ] 3.4: 환불 처리 기능
Task 4: MRR 계산 AC-04
- [ ] 4.1: Gross MRR 계산 (원가 × 구독자수)
- [ ] 4.2: 쿠폰 할인액 합계
- [ ] 4.3: 크레딧 사용액 합계
- [ ] 4.4: 실수익 = Gross MRR - 할인 - 크레딧
UI 명세
결제 현황 대시보드
┌───────────────────────────────────────────────────────────────┐
│ 💰 결제 현황 [이번 달 ▼] │
├───────────────────────────────────────────────────────────────┤
│ │
│ MRR: ₩11,000,000 (Gross) │
│ ├─ 쿠폰 할인: -₩500,000 (4.5%) │
│ ├─ 크레딧 사용: -₩300,000 (2.7%) │
│ └─ 실 수익: ₩10,200,000 │
│ │
│ 유료: 100명 이탈: 3명 │
│ │
│ ───────────────────────────────────────────────────────── │
│ │
│ [전체] [결제 예정] [결제 실패] [해지 예정] │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 🔴 김셀러 결제 실패 (D+3) ₩110,000 │ │
│ │ 실패 사유: 잔액 부족 │ │
│ │ [수동 재시도] [연락하기] │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ 🟡 박셀러 해지 예정 (D-5) ₩110,000 │ │
│ │ 해지 사유: - │ │
│ │ [연락하기] [해지 취소] │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└───────────────────────────────────────────────────────────────┘API 연동
결제 현황 조회
GET /admin/payments/summary
Response: { grossMrr, couponDiscount, creditUsed, netRevenue, activeCount, churnCount }결제 목록 조회
GET /admin/payments?status=failed&page=1
Response: { payments: [...], total, page }수동 재시도
POST /admin/payments/{paymentId}/retry
Response: { success, error }이벤트 로깅
| 이벤트명 | 트리거 | 파라미터 |
|---|---|---|
admin_view_payment_dashboard | 대시보드 진입 | {mrr, active_count} |
admin_retry_payment | 수동 재시도 | {payment_id, result} |
Dev Notes
권한
- 어드민 권한 필요 (role: admin)
의존성
- E-06-S-01: 토스페이먼츠 결제 API 연동
- E-06-S-05: 결제 실패 재시도 로직
변경 이력
| 날짜 | 변경 내용 |
|---|---|
| 2026-01-26 | 스토리 생성 |
생성일: 2026-01-26
최종 수정: 2026-01-26
