Skip to content

Story: 검색/비검색 분리 판정 로직

메타

항목
Story IDE-03-S-01
EpicE-03 Surface Layer
상태ready-for-dev
우선순위P0
규모M
담당 개발자하록 (BE)

사용자 스토리

As a 초보 셀러,
I want 캠페인 내 검색/비검색 각각의 건강 상태를 알고 싶다,
So that 어느 영역이 문제인지 파악할 수 있다.


수락 기준 (Acceptance Criteria)

AC-01: 검색 광고 Status Badge 판정

항목내용
Given캠페인에 검색 광고 데이터가 있을 때
When판정 로직이 실행되면
Then검색 광고 Status Badge (🟢🟡🔴⚪)가 결정된다
🟢 건강: 검색 ROAS ≥ End ROAS × 1.1 AND 순이익 > 0
🟡 주의: 검색 ROAS < End ROAS × 1.1 AND 순이익 ≥ 0
🔴 위험: 검색 순이익 < 0
🟡 데이터 수집 중: 클릭 < 30 AND 다른 조건 미해당 (2026-01-28 변경)

AC-02: 비검색 광고 Status Badge 판정

항목내용
Given캠페인에 비검색 광고 데이터가 있을 때
When판정 로직이 실행되면
Then비검색 광고 Status Badge (🟢🟡🔴⚪)가 결정된다

AC-02-1: 리타게팅 광고 Status Badge 판정 ⭐ 신규 (2026-01-27)

항목내용
Given캠페인에 리타게팅 광고 데이터가 있을 때
When판정 로직이 실행되면
Then리타게팅 광고 Status Badge (🟢🟡🔴⚪)가 결정된다
🟢 건강: 리타게팅 ROAS ≥ End ROAS AND 순이익 > 0
🟡 주의: 리타게팅 ROAS < End ROAS AND 순이익 ≥ 0
🔴 위험: 리타게팅 순이익 < 0
🟡 데이터 수집 중: 클릭 < 30 AND 다른 조건 미해당 (2026-01-28 변경)

※ 리타게팅 특성: CTR 2.98%, CPC 39원 (낮음), 셀러 컨트롤 제한적
※ "참고" 수준 표시 - 검색/비검색 우선

AC-03: 조합 진단 메시지

항목내용
Given검색/비검색 각각의 Status가 결정되었을 때
When캠페인 전체가 🔴🟡일 때
Then원인 분석 메시지가 반환된다
검색 🔴 + 비검색 🟢 → "검색 광고가 발목을 잡고 있어요"
검색 🟢 + 비검색 🔴 → "비검색 광고가 발목을 잡고 있어요"

태스크 분해

Task 1: 검색 광고 판정 AC-01

  • [ ] 1.1: 검색 데이터 집계 쿼리 (keyword IS NOT NULL)
  • [ ] 1.2: Status Badge 판정 로직 구현

Task 2: 비검색 광고 판정 AC-02

  • [ ] 2.1: 비검색 데이터 집계 쿼리 (keyword IS NULL)
  • [ ] 2.2: Status Badge 판정 로직 구현

Task 2-1: 리타게팅 광고 판정 AC-02-1 ⭐ 신규

  • [ ] 2-1.1: 리타게팅 데이터 집계 쿼리 (exposureArea = '리타게팅(외부채널)')
  • [ ] 2-1.2: Status Badge 판정 로직 구현
  • [ ] 2-1.3: "참고" 수준 플래그 추가 (셀러 컨트롤 제한적)

Task 3: 조합 진단 AC-03

  • [ ] 3.1: 검색/비검색 Status 조합 분석
  • [ ] 3.2: 진단 메시지 템플릿 반환

Task 4: API 응답 확장

  • [ ] 4.1: 기존 Surface API에 검색/비검색 상태 추가
  • [ ] 4.2: 테스트

Dev Notes

의존성

  • E-02-S-02 검색/비검색 API와 로직 공유 가능

변경 이력

날짜변경 내용
2026-01-20스토리 생성
2026-01-27리타게팅 AC-02-1, Task 2-1 추가
2026-01-28데이터 수집 중 케이스 변경: ⚪ 데이터부족 → 🟡 데이터 수집 중 (검색/비검색/리타게팅 공통)

생성일: 2026-01-20
최종 수정: 2026-01-28

장사왕 Product Team