Skip to content

Story: 영역별 순이익 분석

메타

항목
Story IDE-04-S-06
EpicE-04 Phase 2 순이익 번역
상태ready-for-dev
우선순위P1
규모M
담당 개발자수민 (FE), 하록 (BE)

사용자 스토리

As a 캠페인 전체 ROAS는 괜찮은데 어디서 새는지 모르는 셀러,
I want 검색/비검색/리타게팅 영역별 순이익을 보고 싶다,
So that 문제 영역을 찾아서 집중 개선할 수 있다.


수락 기준 (Acceptance Criteria)

AC-01: 영역별 순이익 표시

항목내용
Given캠페인에 영역별 데이터가 있을 때
When캠페인 카드를 펼치고 "영역별 분석"을 볼 때
Then검색/비검색/리타게팅 각각의 "100원당 X원" 순이익이 표시된다
┌─────────────────────────────────────────────────────────────┐
│ ▼ 영역별 분석                                               │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 🔍 검색      100원당 +25원 🟢  광고비 비중 50%           │ │
│ │ 📺 비검색    100원당 -15원 🔴  광고비 비중 35%           │ │
│ │ 🎯 리타게팅   100원당 +10원 🟡  광고비 비중 15%  (참고)   │ │
│ └─────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘

AC-02: 영역별 광고비 비중

항목내용
Given영역별 분석이 표시될 때
When각 영역의 광고비 비중을 표시할 때
Then전체 광고비 대비 해당 영역의 비중(%)이 표시된다

AC-03: 영역별 Status Badge

항목내용
Given영역별 순이익이 표시될 때
When값에 따라
Then🟢/🟡/🔴 컬러 배지가 표시된다
🟢 건강: 100원당 +30원 이상
🟡 본전: 100원당 0~30원
🔴 손해: 100원당 음수

AC-04: 영역별 조언 메시지

항목내용
Given손해 영역이 있을 때
When영역별 분석 하단에
Then해당 영역 우선 개선 조언이 표시된다
🔍 검색 영역 조언:
A-S1. 검색 손해 + 자동 → "검색에서 손해예요. 목표 ROAS를 높여보세요."
A-S2. 검색 손해 + 수동 → "검색에서 손해예요. 검색 입찰가를 낮춰보세요."
A-S3. 검색 건강 → "검색에서 잘 벌고 있어요!"

📺 비검색 영역 조언:
A-N1. 비검색 손해 → "비검색에서 손해예요. 비검색 입찰가를 낮춰보세요."
A-N2. 비검색 본전 → "비검색은 본전이에요. 입찰가를 조금 낮춰보세요."
A-N3. 비검색 건강 → "비검색에서 잘 벌고 있어요!"

🎯 리타게팅 영역 조언:
A-R1. 리타게팅 손해 → "리타게팅 효율이 낮아요. 상품 페이지 전환율을 확인해보세요." (참고)
A-R2. 리타게팅 정상 → "리타게팅은 괜찮아요. (CPC가 낮아서 효율 좋은 편)" (참고)

※ 리타게팅은 셀러 컨트롤 제한적 → "참고" 수준 조언

AC-05: 영역별 우선순위

항목내용
Given여러 영역이 손해일 때
When조언 메시지를 표시할 때
Then손해 금액이 가장 큰 영역을 먼저 표시한다
우선순위 = 해당 영역의 "손해 금액" 기준
├─ 손해 금액이 가장 큰 영역 먼저 표시
├─ 리타게팅은 셀러 컨트롤 어려움 → 항상 마지막
└─ 검색 vs 비검색은 광고비 비중 고려

AC-06: 리타게팅 "참고" 라벨

항목내용
Given리타게팅 영역이 표시될 때
When조언과 함께
Then"참고" 라벨이 표시되고, 툴팁으로 설명 제공
🎯 리타게팅 (참고)
└─ 툴팁: "리타게팅은 쿠팡이 자동 운영해요. 셀러가 직접 조정할 수 없어서 참고만 하세요."

태스크 분해

Task 1: BE - 영역별 순이익 API AC-01, AC-02

  • [ ] 1.1: 영역별 데이터 조회 쿼리 (CoupangAdExposureDaily.exposureArea)
  • [ ] 1.2: 영역별 순이익 계산 로직
    • 영역 순이익 = 영역 전환매출 - (영역 전환 상품원가) - 영역 광고비
    • 영역 100원당 = (영역 순이익 / 영역 광고비) × 100
  • [ ] 1.3: 영역별 광고비 비중 계산
  • [ ] 1.4: API 응답에 영역별 필드 추가

Task 2: BE - 영역별 조언 로직 AC-04, AC-05

  • [ ] 2.1: 영역별 조언 케이스 판정 (A-S1~3, A-N1~3, A-R1~2)
  • [ ] 2.2: 영역별 우선순위 계산 (손해 금액 기준)
  • [ ] 2.3: 조언 메시지 템플릿 반환

Task 3: FE - 영역별 분석 UI AC-01, AC-02, AC-03

  • [ ] 3.1: 영역별 분석 펼치기 섹션
  • [ ] 3.2: 영역별 100원당 순이익 + 광고비 비중 표시
  • [ ] 3.3: Status Badge 컬러 코딩

Task 4: FE - 영역별 조언 UI AC-04, AC-05, AC-06

  • [ ] 4.1: 영역별 조언 메시지 표시
  • [ ] 4.2: 손해 영역 우선 표시 로직
  • [ ] 4.3: 리타게팅 "참고" 라벨 + 툴팁

Task 5: GA4 이벤트

  • [ ] 5.1: view_area_analysis 이벤트 구현
  • [ ] 5.2: click_area_advice 이벤트 구현

데이터 소스

CoupangAdExposureDaily 테이블
├─ exposureArea: 노출 영역 (검색 영역, 비검색 영역, 리타게팅(외부 채널))
├─ exposureCount: 영역별 노출 수
├─ clickCount: 영역별 클릭 수
├─ adCost: 영역별 광고비
└─ (전환 데이터는 별도 조인 필요)

영역별 분포 (DB 분석 2026-01-27, 최근 30일):
• 검색 영역: 48.2% (CTR 3.15%, CPC 861원, ROAS 338%)
• 비검색 영역: 33.2% (CTR 0.11%, CPC 295원, ROAS 388%)
• 리타게팅(외부 채널): 18.6% (CTR 2.98%, CPC 39원, ROAS 313%)

이벤트 로깅

이벤트명트리거파라미터
view_area_analysis영역별 분석 노출{campaign_id, search_profit, nonsearch_profit, retarget_profit}
click_area_advice영역별 조언 클릭{campaign_id, area: 'search'/'nonsearch'/'retargeting', advice_case}

API 응답 예시

json
{
  "campaignId": "123",
  "profitPer100": 5,
  "areaAnalysis": {
    "search": {
      "profitPer100": 25,
      "status": "healthy",
      "adCostRatio": 0.50,
      "adCost": 150000,
      "advice": {
        "case": "A-S3",
        "message": "검색에서 잘 벌고 있어요!"
      }
    },
    "nonsearch": {
      "profitPer100": -15,
      "status": "loss",
      "adCostRatio": 0.35,
      "adCost": 105000,
      "advice": {
        "case": "A-N1",
        "message": "비검색에서 손해예요. 비검색 입찰가를 낮춰보세요.",
        "actionUrl": "https://ads.coupang.com/..."
      }
    },
    "retargeting": {
      "profitPer100": 10,
      "status": "breakeven",
      "adCostRatio": 0.15,
      "adCost": 45000,
      "isReference": true,
      "advice": {
        "case": "A-R2",
        "message": "리타게팅은 괜찮아요. (CPC가 낮아서 효율 좋은 편)"
      }
    }
  },
  "priorityArea": "nonsearch",
  "priorityAdvice": "비검색에서 가장 많은 손해가 나고 있어요. 비검색 입찰가를 먼저 낮춰보세요."
}

의존성

  • E-04-S-01: 순이익 번역 (기본 계산 로직)
  • E-03-S-01: 검색/비검색/리타게팅 분리 판정 로직 (Status Badge 공유)

생성일: 2026-01-27

장사왕 Product Team