테마
Story: 진단 결과 추천 배너 구현
메타
| 항목 | 값 |
|---|---|
| Story ID | E-08-S-08 |
| Epic | E-08 GEO 마케팅 |
| 상태 | ready-for-dev |
| 우선순위 | P3 |
| 규모 | S |
| 담당 | FE |
| 의존성 | E-07-S-13 (추천 넛지 타이밍 정책) |
사용자 스토리
As a 유료 구독자,
I want 좋은 진단 결과를 받았을 때 공유 기회를 얻고 싶다,
So that 친구에게 장사왕을 자연스럽게 추천할 수 있다.
수락 기준 (Acceptance Criteria)
AC-01: 배너 노출 조건
| 항목 | 내용 |
|---|---|
| Given | 진단 결과에서 순이익 양수 캠페인을 처음 발견했을 때 |
| When | 진단 결과 페이지 하단에 |
| Then | 추천 배너가 표시된다 |
AC-02: 배너 UI
| 항목 | 내용 |
|---|---|
| Given | 추천 배너가 표시될 때 |
| When | 배너를 확인하면 |
| Then | 메시지, CTA, 닫기 버튼이 포함된다 |
AC-03: 공유 기능 연결
| 항목 | 내용 |
|---|---|
| Given | 배너의 CTA를 클릭하면 |
| When | 공유 액션이 실행될 때 |
| Then | 마이페이지 추천 섹션 또는 공유 모달이 열린다 |
태스크 분해
Task 1: 배너 노출 조건 API
- [ ] 1.1: 순이익 양수 캠페인 첫 발견 여부 확인
- 이전에 양수 캠페인을 본 적 없으면 true
- [ ] 1.2: 배너 노출 이력 저장 (7일 쿨다운)
Task 2: 배너 컴포넌트
- [ ] 2.1: 진단 결과 하단 배너 UI
- 아이콘, 메시지, CTA 버튼, X 버튼
- [ ] 2.2: 조건부 렌더링 (노출 조건 충족 시)
Task 3: 공유 연동
- [ ] 3.1: CTA 클릭 시 공유 모달 또는 마이페이지 이동
- [ ] 3.2: 닫기 시 7일간 재노출 방지
화면 설계
진단 결과 하단 배너
┌────────────────────────────────────────────────────────────┐
│ [진단 결과 영역...] │
│ │
│ ───────────────────────────────────────────── │
│ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ 🎁 [X] │ │
│ │ │ │
│ │ 이 인사이트를 셀러 친구에게도 알려주세요! │ │
│ │ │ │
│ │ 친구 추천하면 7,000원 크레딧을 드려요 │ │
│ │ │ │
│ │ [추천 코드 공유하기] │ │
│ └──────────────────────────────────────────────────────┘ │
│ │
└────────────────────────────────────────────────────────────┘배너 노출 로직
typescript
// 배너 노출 조건
const shouldShowReferralBanner = (
hasPositiveProfitCampaign: boolean,
isFirstPositiveProfit: boolean,
lastBannerDismissedAt: Date | null
): boolean => {
// 1. 순이익 양수 캠페인이 있어야 함
if (!hasPositiveProfitCampaign) return false;
// 2. 처음 발견한 경우여야 함
if (!isFirstPositiveProfit) return false;
// 3. 7일 이내에 닫은 적 없어야 함
if (lastBannerDismissedAt) {
const daysSinceDismissed = daysDiff(lastBannerDismissedAt, new Date());
if (daysSinceDismissed < 7) return false;
}
return true;
};이벤트 로깅
| 이벤트 | 파라미터 |
|---|---|
referral_banner_shown | user_id, location (diagnosis_result) |
referral_banner_clicked | user_id |
referral_banner_dismissed | user_id |
생성일: 2026-01-20
