Skip to content

Story: 어드민 결제 관리 UI

메타

항목
Story IDE-06-S-12
EpicE-06 PG사 이관
상태ready-for-dev
우선순위P2
규모M
담당 개발자수민 (FE)

사용자 스토리

As a 운영팀,
I want 어드민에서 결제 현황을 관리하고 싶다,
So that 결제 실패 대응 및 환불 처리를 효율적으로 할 수 있다.


수락 기준 (Acceptance Criteria)

AC-01: 결제 현황 대시보드

항목내용
Given어드민 결제 관리 페이지에서
When페이지를 로드하면
ThenMRR, 유료 회원수, 이탈수가 요약 표시된다

AC-02: 결제 상태별 필터

항목내용
Given결제 현황 페이지에서
When상태별 탭을 클릭하면
Then전체/결제예정/결제실패/해지예정별로 필터링된다

AC-03: 수동 처리 기능

항목내용
Given결제 실패 항목에서
When수동 재시도 버튼을 클릭하면
Then결제 재시도가 실행되고 결과가 표시된다

AC-04: MRR 계산 표시

항목내용
GivenMRR 현황을 볼 때
When쿠폰/크레딧 할인이 적용된 경우
ThenGross 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

장사왕 Product Team