수익 대시보드 (5채널 통합)
광고 2채널(AdMob/AdSense) + 결제 3채널(Stripe/RevenueCat/Polar)을 하나의 대시보드에서 통일된 골격으로 추적하세요.
Last updated: 2026-05-18
Opseer 수익 대시보드는 5개 채널의 매출을 한 곳에서 추적합니다. 광고 2채널과 결제 3채널은 본질이 달라 골격이 분리되지만, 라우팅·기간 프리셋·로딩 표현 등 공통 정책은 5채널 모두 동일하게 적용됩니다.
페이지 구조
- /dashboard/revenue/admob — AdMob 상세
- /dashboard/revenue/adsense — AdSense 상세
- /dashboard/revenue/stripe — Stripe 상세
- /dashboard/revenue/revenuecat — RevenueCat 상세
- /dashboard/revenue/polar — Polar 상세
사이드바의 Revenue 섹션에서 각 채널 페이지로 직접 이동합니다.
기간 프리셋 (5채널 공통)
6종 프리셋을 통일 제공:
- 오늘 — 오늘 1일치
- 어제 — 어제 1일치
- 7일 (default)
- 이번달 — 1일~오늘
- 저번달 (전체)
- 커스텀 — 시작일 자유, 폭 max 90일
"오늘/어제" 카드는 period 선택과 무관하게 항상 별도 표시됩니다. today/yesterday preset은 1 datapoint라 차트/Period Summary는 자동 숨김 (5채널 일관).
Custom range
시작일 자유(임의 과거) + 폭 max 90일. cache write 안 함 (단발 API 호출). 다른 preset 복귀 시 cache 데이터 자동 복원. 5채널 모두 동일 패턴.
캐시 정책
5채널 모두 revenue_daily_cache 테이블에 source별 90일 sliding window로 보관:
- last refresh = today → 캐시 SELECT(90일) + today/yesterday API 병렬 호출 → 도착 순 영역별 렌더
- last refresh < today → gap 일수만큼 backfill (오늘/어제는 realtime, 사이 일수는 API) → sliding window UPSERT
- 캐시 0 row → 첫 진입 flow: 페이지 layout 먼저 + "최초 데이터 수집 중" 안내 → 90일 backfill
- today/yesterday는 항상 realtime API 호출 (Google 사후 보정 윈도우 흡수)
RevenueCat charts API의 D-1 lag 메트릭은 오늘 datapoint 비어있으면 set 안 함. snapshot 메트릭(MRR/Active Subs/Active Trials/New Customers)은 today/yesterday realtime.
결제 3채널 통일 골격 (P14)
Stripe / RevenueCat / Polar는 다음 통일 영역을 갖습니다 (채널별 데이터 한계로 일부 미렌더 — 의도된 결정):
- Today/Yesterday 3×2 grid — Row1: Today MRR · Yesterday MRR · MRR snapshot / Row2: Today Revenue · Yesterday Revenue · Active Subs
- Subscription Movement Chart — diverging stacked bar (newSubs / churnedSubs). 3채널 공통
- Payment Movement Chart — orders + refunds. RC는 미렌더 (orders/refunds count 메트릭 부재)
- Product Breakdown — recurring vs one_time. RC는 미렌더
- MRR Trend Chart — area + trial overlay. RevenueCat는 미렌더 (daily MRR 시계열 미지원)
- MRR Movement Chart — 신규/확장/축소/이탈 MRR 분해. Stripe·Polar 적용
- Platform-specific 섹션 — Stripe 운영 메트릭 5-card / Polar Cumulative Revenue · Checkout Conversion / RC Top 5 Projects 등
Stripe는 MRR Trend 차트에 향후 90일 예측선과 신뢰구간 밴드를 함께 표시합니다 (historical 데이터가 충분히 쌓였을 때). 선형 추세 기반의 단순 추정치입니다.
알림 메시지 포맷 (5 metric 통일)
개인 알림에서 결제 3채널은 5 metric 통일 — MRR / Revenue / Orders / New Subs / Churned 동일 라벨·동일 순서. RC는 orders 부재로 일부 N/A 허용. 광고 2채널은 별도 emoji/순서/라벨 통일.
메시지엔 어제 1일치 메트릭만 포함 — 시계열·MRR Movement 같은 분석 메트릭 제외.
로딩 표현
- 첫 진입 (캐시 0): 페이지 layout 먼저 + 중앙 단일 스피너 + "AdMob 조회 중..." 텍스트
- 일반 진입 / period 변경 / Refresh: 카드별 micro-spinner (해당 카드만 흐릿, 옆 카드는 그대로)
- Layout shift 금지 — 영역별 progressive render OK, 컨테이너 height/위치는 처음부터 확정
- Mock skeleton 레이아웃 X (영역이 깜빡 보였다가 사라지는 패턴 X)
연동별 상세 가이드
각 채널별 연동 절차, OAuth/API key 발급, 토큰 rotation 정책 등은 다음 가이드 참고:
- AdMob — Google OAuth (계정 단위)
- AdSense — Google OAuth (계정 단위)
- Stripe — Restricted API Key (계정 단위, sk_ 키 거부)
- RevenueCat — OAuth 2.0 + PKCE (계정 단위, multi-project fan-out)
- Polar — OAuth 2.0 + PKCE (계정 단위, multi-organization 합산)