테마
Epic Spec: E-10 업무노트 (Work Note)
메타
| 항목 | 값 |
|---|---|
| Epic ID | E-10 |
| Sprint | S52 |
| 상태 | approved |
| PO 승인일 | 2026-01-23 |
| 담당 | 하록 (BE), 수민 (FE) |
1. WHY: 왜 이 기능이 필요한가?
문제 정의
쿠팡은 광고 API를 일절 제공하지 않는다. 장사왕은 쿠팡 광고센터 화면을 스크랩하여 ETL하는 방식으로 데이터를 수집한다. 이 방식으로는 광고 성과 데이터는 수집할 수 있지만, 셀러가 설정을 언제, 어떻게 변경했는지는 알 수 없다.
[현재 상황]
Surface Layer: "입찰가 낮추세요" 조언 제공
↓
셀러: (쿠팡 광고센터에서 입찰가 조정)
↓
우리: ??? (셀러가 뭘 했는지 모름)
↓
스크랩으로는 "결과"만 보임, "변경 행위" 자체는 수집 불가
↓
결과: 조언이 효과 있었는지 검증 불가핵심 페인포인트
[장사왕 측면]
1. Surface Layer 핵심 가설 "판단 → 행동 변화" 검증 불가
2. 조언의 효과를 측정할 수 없음
3. 서비스 개선을 위한 피드백 루프 부재
4. 스크랩 데이터만으로는 "셀러 행동"을 추론할 수 없음
[셀러 측면]
1. "저번에 뭐 바꿨더라?" 기억 휘발
2. 광고 운영 히스토리 관리 안 됨
3. 팀 운영 시 인수인계 어려움근거 데이터
| 지표 | 수치 | 출처 | 비고 |
|---|---|---|---|
| 쿠팡 광고 API | 없음 | - | 스크랩 ETL로 대체 |
| 스크랩 수집 가능 데이터 | 성과 데이터만 | 내부 ETL | 설정 변경 이력 수집 불가 |
| "뭘 바꿨더라?" VOC | 다수 | 채널톡 | 셀러 페인포인트 |
| Surface Layer 조언 클릭률 | TBD | GA4 (S51/52) | 측정 중 |
| 조언 후 실제 행동률 | 0% | 측정 불가 | 핵심 문제 |
업무노트가 해결하는 것
[업무노트 도입 후]
Surface Layer: "입찰가 낮추세요" 조언 제공
↓
셀러: [적용했어요 ✓] 버튼 클릭 (또는 직접 메모)
↓
업무노트: "2026-01-21 캠페인A 입찰가 200→150 변경" 기록
↓
1주일 후: "적용 전 ROAS 280% → 적용 후 ROAS 420% (+50%)" 효과 표시
↓
셀러: "오, 효과 있네!" / 우리: "조언이 효과 있었구나" 검증 완료기대 효과
- 검증 인프라 확보: Surface Layer 조언의 실제 효과 측정 가능
- 셀러 가치: 광고 운영 히스토리 관리, 인수인계 용이
- 서비스 개선: 어떤 조언이 효과적인지 데이터 기반 개선
- 차별화: 경쟁사에 없는 "광고 분석 + 업무 관리" 번들 가치
핵심 가치: 성장 확신 (v2.0 추가)
"기록 도구"가 아니라 "성장 파트너"
┌─────────────────────────────────────────────────────────────────┐
│ 성장의 정의 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ B. 실력 향상 C. 자신감 │
│ (원인 이해) (확신) │
│ │ │ │
│ └────────┬────────┘ │
│ │ │
│ ▼ │
│ A. 지표 개선 │
│ (결과) │
│ │
│ "왜 이렇게 됐는지 알고, 다음에도 할 수 있다는 확신, │
│ 그리고 실제로 숫자가 따라오는 것" = 성장 │
└─────────────────────────────────────────────────────────────────┘패턴 발견이 핵심:
- 한 번의 성공 → "운인가?"
- 두 번의 성공 → "우연인가?"
- 세 번의 성공 → "나에게 맞는 방법이구나"
반복이 확신을 만들고, 확신이 성장을 만든다.
S53 E-04 AI 진단과 연결:
- 업무노트 = 패턴 수집 인프라
- S53 E-04 = 패턴 활용한 개인화 진단
2. WHAT: 상세 요구사항
핵심 기능
| # | 기능 | 설명 | 필수 여부 |
|---|---|---|---|
| 1 | 업무노트 CRUD | 캠페인/키워드별 메모 작성/수정/삭제 | 필수 |
| 2 | Surface Layer 연동 | "적용했어요" 버튼으로 조언 실행 기록 | 필수 |
| 3 | 타임라인 뷰 | 날짜별 업무 기록 확인 | 필수 |
| 4 | 효과 추적 | 적용 전/후 지표 비교 (ROAS, 순이익 등) | 필수 (L3) |
| 5 | 캠페인/키워드 태깅 | 노트와 광고 대상 연결 | 필수 |
| 6 | 중간 체크 (D+3) | 효과 추적 중 트렌드 미리보기 (v2.0) | P1-a |
| 7 | 패턴 발견 | 3회 이상 동일 결과 → 패턴으로 인식 (v2.0) | P1-a |
| 8 | 패턴 표시 | 발견된 패턴을 타임라인/카드에 표시 (v2.0) | P1-a |
비즈니스 로직
로직 1: 업무노트 데이터 구조
[업무노트 (WorkNote) 스키마]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
{
id: string (UUID),
userId: string (FK → User),
createdAt: datetime,
updatedAt: datetime,
// 연결 대상
targetType: enum ('campaign' | 'keyword' | 'general'),
targetId: string | null, // campaignId 또는 keywordId
targetName: string, // 캠페인명 또는 키워드명 (스냅샷)
// 노트 내용
noteType: enum ('manual' | 'advice_applied'),
content: string, // 직접 작성 메모
// Surface Layer 연동 (advice_applied인 경우)
adviceId: string | null, // 어떤 조언이었는지
adviceType: string | null, // 'roas_adjust' | 'bidding_down' | ...
beforeValue: string | null, // "입찰가 200원" | "목표 ROAS 300%"
afterValue: string | null, // "입찰가 150원" | "목표 ROAS 400%"
// 효과 추적
effectTracking: {
enabled: boolean,
trackingStartDate: date,
trackingEndDate: date, // 기본 7일 후
beforeMetrics: { // 적용 전 7일 평균
roas: number,
profitPer100: number,
adCost: number,
conversionAmount: number
},
midMetrics: { // D+3 중간 체크 (v2.0)
measuredAt: date,
roas: number,
profitPer100: number,
trend: 'up' | 'flat' | 'down' // 트렌드 판정
},
afterMetrics: { // 적용 후 7일 평균 (추적 종료 후)
roas: number,
profitPer100: number,
adCost: number,
conversionAmount: number
},
effectSummary: string | null, // "ROAS +50% 개선" (자동 생성)
effectResult: 'positive' | 'neutral' | 'negative' | null // 효과 판정 (v2.0)
}
}
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━로직 1-1: adviceType 표준 정의 (v2.0 추가)
E-03 Surface Layer 조언 케이스와 매핑되는 표준 adviceType 정의
[adviceType 표준]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
패턴 분류 및 S53 E-04 연계를 위한 표준 adviceType enum 정의
[검색 광고 관련]
| adviceType | 설명 | E-03 케이스 |
|------------|------|-------------|
| search_roas_up | 목표 ROAS 상향 (자동광고) | S-03-a |
| search_bid_down | 검색 키워드 입찰가 하향 (수동광고) | S-03-b |
| keyword_exclude | 키워드 제외 | S-01, S-02 연계 |
| keyword_optimize | 키워드 최적화 | S-01, S-02 연계 |
[비검색 광고 관련]
| adviceType | 설명 | E-03 케이스 |
|------------|------|-------------|
| non_search_bid_down | 비검색 입찰가 하향 | N-04-a |
| non_search_improve | 비검색 효율 개선 | N-04-b |
[리타게팅 광고 관련]
| adviceType | 설명 | E-03 케이스 |
|------------|------|-------------|
| retargeting_check | 리타게팅 점검 | R-01, R-02 |
[공통]
| adviceType | 설명 | E-03 케이스 |
|------------|------|-------------|
| budget_adjust | 예산 조정 | - |
| campaign_pause | 캠페인 일시중지 | - |
| general_optimize | 일반 최적화 | - |
[표준 적용 규칙]
1. "적용했어요" 클릭 시 해당 조언의 adviceType을 업무노트에 저장
2. 패턴 발견 시 adviceType 단위로 집계
3. S53 E-04 SellerAIContext로 전달 시 adviceType 배열로 전달
[예시]
- Surface Layer: "비검색 입찰가를 낮추세요" (N-04-a)
- 셀러: [적용했어요] 클릭
- 업무노트: adviceType = 'non_search_bid_down' 저장
- 패턴 발견: 'non_search_bid_down' 3회 적용, 80% positive
- S53 E-04: preferredActions = ['non_search_bid_down']
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━로직 2: "적용했어요" 버튼 플로우
[Surface Layer 조언 → 적용 기록]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1. Surface Layer에서 조언 카드 표시
┌─────────────────────────────────────────────────────────────┐
│ 💡 비검색 광고비가 높아요 │
│ │
│ 현재 비검색 입찰가: 200원 │
│ 권장 비검색 입찰가: 100~120원 │
│ │
│ [쿠팡 광고센터에서 조정하기 →] │
│ │
│ ─────────────────────────────────────────────────────────── │
│ [✓ 적용했어요] [나중에] [이 조언 숨기기] │
└─────────────────────────────────────────────────────────────┘
2. [✓ 적용했어요] 클릭 시 입력 모달
┌─────────────────────────────────────────────────────────────┐
│ 📝 적용 내용 기록 │
│ │
│ 캠페인: 봄 신상품 │
│ 조언: 비검색 입찰가 낮추기 │
│ │
│ 어떻게 변경하셨나요? │
│ │
│ 변경 전: [200원 ] │
│ 변경 후: [120원 ] │
│ │
│ 메모 (선택): │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 일단 120원으로 낮춰봄. 효과 보고 100원까지 내릴 예정 │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ☑ 7일 후 효과 확인 알림 받기 │
│ │
│ [취소] [기록하기] │
└─────────────────────────────────────────────────────────────┘
3. 기록 완료 후
- 업무노트에 저장 (noteType: 'advice_applied')
- 효과 추적 시작 (beforeMetrics 스냅샷)
- 타임라인에 표시
- 7일 후 효과 확인 알림 (선택 시)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━로직 3: 직접 메모 작성
[수동 메모 작성]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Surface Layer 조언과 무관하게 셀러가 직접 기록하고 싶을 때
입력 경로:
1. 타임라인 뷰 > [+ 메모 추가] 버튼
2. 캠페인 카드 > [메모 추가] 버튼
┌─────────────────────────────────────────────────────────────────┐
│ 📝 업무 메모 작성 │
│ │
│ 연결 대상: │
│ ○ 전체 (일반 메모) │
│ ● 캠페인 선택 [봄 신상품 ▼] │
│ ○ 키워드 선택 [선택하기... ▼] │
│ │
│ 메모 내용: │
│ ┌───────────────────────────────────────────────────────────┐ │
│ │ 경쟁사 A가 같은 키워드로 입찰가 올림. │ │
│ │ 당분간 이 키워드 입찰가 유지하고 다른 키워드 테스트 예정 │ │
│ └───────────────────────────────────────────────────────────┘ │
│ │
│ 효과 추적: │
│ ☑ 7일 후 효과 확인 (선택 시 전/후 지표 비교) │
│ │
│ [취소] [저장] │
└─────────────────────────────────────────────────────────────────┘
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━로직 4: 타임라인 뷰
[타임라인 뷰 - 날짜별 업무 기록]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┌─────────────────────────────────────────────────────────────────┐
│ 📋 업무노트 [+ 메모 추가] │
├─────────────────────────────────────────────────────────────────┤
│ │
│ [전체] [캠페인별 ▼] [효과 추적 중] │
│ │
│ ─────────────────────────────────────────────────────────────── │
│ │
│ 📅 2026-01-21 (오늘) │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ 🏷 봄 신상품 캠페인 10:30 AM │ │
│ │ │ │
│ │ ✓ 조언 적용: 비검색 입찰가 낮추기 │ │
│ │ 200원 → 120원 │ │
│ │ │ │
│ │ 📝 "일단 120원으로 낮춰봄. 효과 보고 100원까지 내릴 예정" │ │
│ │ │ │
│ │ ⏳ 효과 추적 중 (D+0, 7일 후 결과) │ │
│ │ [수정] │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │
│ ─────────────────────────────────────────────────────────────── │
│ │
│ 📅 2026-01-14 (1주일 전) │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ 🏷 여름 쿨매트 캠페인 2:15 PM │ │
│ │ │ │
│ │ ✓ 조언 적용: 목표 ROAS 조정 │ │
│ │ 300% → 400% │ │
│ │ │ │
│ │ ✨ 효과 확인됨: │ │
│ │ ┌─────────────────────────────────────────────────────────┐ │ │
│ │ │ 적용 전 (7일) 적용 후 (7일) 변화 │ │ │
│ │ │ ROAS 280% 385% +37% ↑ │ │ │
│ │ │ 100원당 5원 18원 +13원 ↑ │ │ │
│ │ │ 광고비 ₩150,000 ₩120,000 -20% ↓ │ │ │
│ │ └─────────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ 💡 조언이 효과적이었어요! ROAS +37% 개선 │ │
│ │ [수정] │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │
│ 📅 2026-01-10 (11일 전) │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ 📝 일반 메모 9:00 AM │ │
│ │ │ │
│ │ "이번 주 광고 예산 50만원 → 70만원 증액 예정 │ │
│ │ 봄 시즌 대비" │ │
│ │ [수정] │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━로직 5: 효과 추적 계산
[효과 추적 로직]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1. 적용 기록 시점
- 적용 전 7일 평균 지표 스냅샷 (beforeMetrics)
- 추적 시작일, 종료일(+7일) 설정
2. 추적 기간 중
- 타임라인에 "⏳ 효과 추적 중 (D+N)" 표시
- 아직 효과 판정 없음
3. 추적 종료 (7일 후)
- 적용 후 7일 평균 지표 계산 (afterMetrics)
- 효과 비교 자동 생성
[효과 판정 기준]
| 구분 | 조건 | 표시 |
|------|------|------|
| 효과 있음 | ROAS +10% 이상 OR 순이익 +10% 이상 | ✨ 조언이 효과적이었어요! |
| 변화 없음 | -10% ~ +10% | 📊 큰 변화 없어요 |
| 효과 없음 | ROAS -10% 이상 OR 순이익 -10% 이상 | 💡 다른 방법을 시도해보세요 |
[효과 요약 자동 생성]
"ROAS +37% 개선, 100원당 순이익 +13원"
"광고비 20% 절감하면서 효율 유지"
"아직 효과가 나타나지 않았어요. 조금 더 지켜보세요"
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━로직 6: 캠페인 카드 연동
[캠페인 카드에서 업무노트 접근]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┌───────────────────────────────────────────────────────────────┐
│ 🟡 봄 신상품 캠페인 ROAS 320% │
│ 광고비 ₩500,000 | 매출 ₩1,600,000 | 순이익 ₩50,000 │
│ │
│ 📝 최근 메모: "비검색 입찰가 120원으로 낮춤" (1일 전) │
│ │
│ [메모 추가] [펼쳐보기 ▼] │
└───────────────────────────────────────────────────────────────┘
[펼친 상태]
┌───────────────────────────────────────────────────────────────┐
│ 🟡 봄 신상품 캠페인 ROAS 320% │
│ ... │
├───────────────────────────────────────────────────────────────┤
│ │
│ 📋 이 캠페인 업무노트 (최근 3개) │
│ │
│ • 01-21: 비검색 입찰가 200→120원 (⏳ 효과 추적 중) │
│ • 01-14: 목표 ROAS 300→400% (✨ ROAS +37%) │
│ • 01-07: 키워드 5개 제외 │
│ │
│ [전체 보기 →] │
└───────────────────────────────────────────────────────────────┘
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━로직 7: 중간 체크 (D+3) - v2.0 추가
[중간 체크 로직]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
목적: 7일 기다리지 않고 D+3 시점에 트렌드 미리보기 제공
→ "기록 직후 보상" = 셀러에게 즉시 가치 제공
[트렌드 판정 기준]
| 구분 | 조건 | 표시 |
|------|------|------|
| 상승 추세 | ROAS +5% 이상 | 🔼 "좋은 흐름이에요!" |
| 유지 | -5% ~ +5% | ➡️ "아직 지켜보는 중" |
| 하락 추세 | -5% 이상 | 🔽 "조금 더 지켜볼게요" |
[UI 표시 예시]
┌─────────────────────────────────────────────────────────────────┐
│ 🏷 봄 신상품 캠페인 │
│ │
│ ✓ 조언 적용: 비검색 입찰가 낮추기 │
│ 200원 → 120원 │
│ │
│ ⏳ 효과 추적 중 (D+3/7) │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ 🔼 좋은 흐름이에요! │ │
│ │ ROAS 280% → 310% (+10.7%) │ │
│ │ 4일 후 최종 결과를 알려드릴게요 │ │
│ └─────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
[데이터 구조 확장]
effectTracking: {
...기존 필드,
midMetrics: { // D+3 시점 지표
measuredAt: date,
roas: number,
profitPer100: number,
trend: 'up' | 'flat' | 'down'
}
}
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━로직 8: 패턴 발견 - v2.0 추가
[패턴 발견 로직]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
패턴 정의: 동일 조언 유형에 대해 3회 이상 동일 결과가 나온 경우
[패턴 발견 조건]
- 동일 adviceType 3회 이상 적용
- 70% 이상 동일 결과 (positive 또는 negative)
[패턴 유형]
| 패턴 | 조건 | 의미 |
|------|------|------|
| **선호 방법** | 3회+ 적용, 70%+ positive | "이 방법 잘 맞아요!" |
| **비선호 방법** | 3회+ 적용, 70%+ negative | "이 방법은 피하세요" |
| **미확정** | 결과 혼재 | 패턴 미인식 |
[예시]
셀러가 "비검색 입찰가 낮추기" 조언을 5회 적용:
- 1회: positive (+15% ROAS)
- 2회: positive (+20% ROAS)
- 3회: neutral
- 4회: positive (+12% ROAS)
- 5회: positive (+18% ROAS)
→ positive 4회/5회 = 80%
→ **"비검색 입찰가 낮추기"가 선호 방법으로 등록**
[SellerPatterns 데이터 구조]
{
userId: string,
patterns: {
preferredActions: [
{
adviceType: 'bidding_down',
displayName: '비검색 입찰가 낮추기',
trialCount: 5,
positiveRate: 0.8,
avgRoasChange: 16.3,
lastApplied: date,
discoveredAt: date
}
],
avoidedActions: [
{
adviceType: 'keyword_add',
displayName: '키워드 추가',
trialCount: 4,
negativeRate: 0.75,
avgRoasChange: -8.5,
lastApplied: date,
discoveredAt: date
}
]
},
// S53 E-04 연계용 (SellerAIContext 호환)
forAIContext: {
applyRate: number, // 조언 적용률
positiveOutcomeRate: number, // 긍정 결과 비율
preferredActions: string[], // ['bidding_down', 'roas_up']
avoidedActions: string[] // ['keyword_add']
}
}
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━로직 9: 패턴 표시 - v2.0 추가
[패턴 표시 UI]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[타임라인 뷰 - 패턴 배지]
┌─────────────────────────────────────────────────────────────────┐
│ 📋 업무노트 │
│ │
│ ────────────────────────────────────────────────────────────── │
│ │
│ 💡 나에게 맞는 방법을 찾았어요! │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ ✅ 비검색 입찰가 낮추기 (5회 적용, 80% 성공) │ │
│ │ ✅ 목표 ROAS 올리기 (4회 적용, 75% 성공) │ │
│ │ │ │
│ │ ⚠️ 키워드 추가 (4회 적용, 75% 실패) │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │
│ ────────────────────────────────────────────────────────────── │
└─────────────────────────────────────────────────────────────────┘
[효과 추적 완료 카드 - 패턴 발견 알림]
┌─────────────────────────────────────────────────────────────────┐
│ 🏷 봄 신상품 캠페인 2026-01-21 │
│ │
│ ✓ 조언 적용: 비검색 입찰가 낮추기 │
│ │
│ ✨ 효과 확인됨: ROAS +18% │
│ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ 🎉 패턴 발견! │ │
│ │ "비검색 입찰가 낮추기"가 5회 중 4회 효과 있었어요. │ │
│ │ 이 방법이 당신에게 잘 맞아요! │ │
│ └─────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
[캠페인 카드 - 패턴 힌트]
┌───────────────────────────────────────────────────────────────┐
│ 🟡 봄 신상품 캠페인 ROAS 320% │
│ │
│ 💡 Surface Layer 조언: 비검색 입찰가 낮추기 │
│ │
│ ┌───────────────────────────────────────────────────────────┐ │
│ │ ✅ 이 방법 5회 적용, 80% 성공률 - 당신에게 맞는 방법! │ │
│ └───────────────────────────────────────────────────────────┘ │
│ │
│ [✓ 적용했어요] [나중에] │
└───────────────────────────────────────────────────────────────┘
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━User Story (상세)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
US-01: Surface Layer 조언 적용 기록하기
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
As a Surface Layer 조언을 받은 셀러
I want to 조언대로 실행한 내용을 기록하고 싶다
So that 나중에 무엇을 바꿨는지 확인하고 효과를 추적할 수 있다
[수락 기준]
Given Surface Layer 조언 카드가 표시된 상태에서
When [✓ 적용했어요] 버튼을 클릭하면
Then 변경 전/후 값과 메모를 입력할 수 있는 모달이 표시된다
And 저장하면 업무노트에 기록되고 효과 추적이 시작된다
And 타임라인에 해당 기록이 표시된다
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
US-02: 타임라인에서 업무 히스토리 확인하기
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
As a 광고를 운영하는 셀러
I want to 날짜별로 무엇을 변경했는지 히스토리를 보고 싶다
So that "저번에 뭐 바꿨더라?" 기억을 되살릴 수 있다
[수락 기준]
Given 업무노트 메뉴에 진입하면
When 타임라인 뷰가 표시될 때
Then 날짜별로 작성한 메모가 최신순으로 표시된다
And 조언 적용 기록은 변경 전/후 값이 함께 표시된다
And 캠페인별 필터로 특정 캠페인 기록만 볼 수 있다
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
US-03: 조언 적용 후 효과 확인하기
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
As a 조언을 적용한 셀러
I want to 적용 전/후 지표 변화를 비교해서 보고 싶다
So that 내가 한 조정이 효과 있었는지 알 수 있다
[수락 기준]
Given 효과 추적이 완료된 기록(7일 경과)이 있을 때
When 해당 기록을 타임라인에서 볼 때
Then 적용 전/후 ROAS, 순이익, 광고비 비교 테이블이 표시된다
And 효과 판정 요약 ("✨ 조언이 효과적이었어요!")이 표시된다
And 변화율(%)이 표시된다
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
US-04: 직접 메모 작성하기
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
As a 조언 외에도 기록하고 싶은 게 있는 셀러
I want to 직접 메모를 작성하고 캠페인/키워드에 연결하고 싶다
So that 광고 운영 관련 모든 내용을 한 곳에서 관리할 수 있다
[수락 기준]
Given 타임라인 뷰 또는 캠페인 카드에서
When [+ 메모 추가] 버튼을 클릭하면
Then 메모 내용과 연결 대상(캠페인/키워드/일반)을 입력할 수 있다
And 저장하면 타임라인에 표시된다
And 효과 추적 여부를 선택할 수 있다
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
US-05: 캠페인 카드에서 관련 메모 확인하기
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
As a 특정 캠페인을 분석하는 셀러
I want to 해당 캠페인 관련 메모를 바로 보고 싶다
So that 이 캠페인에 무슨 조정을 했는지 맥락을 파악할 수 있다
[수락 기준]
Given 캠페인 카드가 표시된 상태에서
When 메모가 있는 캠페인인 경우
Then 최근 메모 1개가 카드에 미리보기로 표시된다
And 카드를 펼치면 최근 3개 메모 목록이 표시된다
And [전체 보기] 클릭 시 해당 캠페인 필터된 타임라인으로 이동한다
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
US-06: 효과 확인 알림 받기
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
As a 조언을 적용하고 효과를 기다리는 셀러
I want to 7일 후 효과를 확인하라는 알림을 받고 싶다
So that 까먹지 않고 결과를 확인할 수 있다
[수락 기준]
Given 효과 추적 알림을 선택한 경우
When 7일이 경과하면
Then 인앱 알림 또는 푸시 알림이 발송된다
And 알림 클릭 시 해당 업무노트로 이동한다
And 효과 비교 결과가 표시된다
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
US-07: 중간 체크로 트렌드 미리보기 (v2.0)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
As a 조언을 적용하고 결과가 궁금한 셀러
I want to 7일 기다리지 않고 중간에 트렌드를 확인하고 싶다
So that 기록 직후에도 가치를 느끼고 안심할 수 있다
[수락 기준]
Given 효과 추적 중인 노트가 D+3이 되면
When 타임라인에서 해당 노트를 볼 때
Then "🔼 좋은 흐름이에요!" 또는 "➡️ 아직 지켜보는 중" 등 트렌드가 표시된다
And ROAS 변화율이 함께 표시된다
And 최종 결과까지 남은 기간이 표시된다
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
US-08: 나에게 맞는 방법 패턴 확인하기 (v2.0)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
As a 여러 조언을 적용해본 셀러
I want to 어떤 방법이 나에게 잘 맞는지 패턴을 확인하고 싶다
So that 실력이 늘었다는 확신을 얻고 다음 결정에 참고할 수 있다
[수락 기준]
Given 동일 조언 유형을 3회 이상 적용하고 70% 이상 동일 결과가 나온 경우
When 패턴이 발견되면
Then 효과 추적 완료 카드에 "🎉 패턴 발견!" 배지가 표시된다
And 타임라인 상단에 "나에게 맞는 방법" 요약이 표시된다
And 캠페인 카드에서 해당 조언에 "이 방법 N회 적용, N% 성공률" 힌트가 표시된다사용자 시나리오
시나리오 1: 조언 적용 후 효과 확인
페르소나: 김셀러 (초보, 자동광고, 장사왕 2주차)
1. Surface Layer에서 "목표 ROAS를 300%→400%로 올리세요" 조언 확인
2. 쿠팡 광고센터에서 실제로 변경
3. 장사왕으로 돌아와서 [✓ 적용했어요] 클릭
4. 변경 전: 300%, 변경 후: 400% 입력, 저장
5. "효과 추적 시작됨, 7일 후 결과 확인" 메시지
... 7일 후 ...
6. 알림: "봄 신상품 캠페인 효과가 확인됐어요!"
7. 타임라인에서 확인:
- 적용 전 ROAS: 280%
- 적용 후 ROAS: 385%
- "✨ 조언이 효과적이었어요! ROAS +37%"
8. 김셀러: "오, 장사왕 조언 믿을 만하네!"
결과: 조언에 대한 신뢰도 상승, 서비스 가치 인식
---
시나리오 2: 팀 인수인계
페르소나: 박셀러 (중급, 수동광고, 직원에게 인수인계)
1. 박셀러가 지난 3개월간 광고 운영하며 업무노트 작성
2. 신입 직원 합류
3. 신입: "이 캠페인 어떻게 운영해왔어요?"
4. 박셀러: "업무노트 보면 다 있어요"
5. 신입이 타임라인에서 확인:
- 1월: 비검색 입찰가 조정 (효과 있었음)
- 2월: 키워드 10개 추가 (효과 없었음 → 제외)
- 3월: 목표 ROAS 조정 (효과 있었음)
6. 신입: "아, 이 캠페인은 비검색 조정이 효과 좋았구나"
결과: 히스토리 기반 인수인계, 학습 곡선 단축3. HOW: 플로우 & 화면
정보 구조
[업무노트 IA]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
광고 분석 (메인 메뉴)
├── Surface Layer (캠페인 진단)
│ └── 캠페인 카드
│ ├── [✓ 적용했어요] 버튼 ← 업무노트 연동
│ ├── 최근 메모 미리보기
│ └── [메모 추가] 버튼
│
├── Deep Layer (상세 분석)
│ └── (기존 유지)
│
└── 📋 업무노트 ← 신규 메뉴
├── 타임라인 뷰 (기본)
│ ├── 날짜별 그룹핑
│ ├── 필터: 전체 / 캠페인별 / 효과추적중
│ └── [+ 메모 추가] 버튼
│
└── (향후) 캘린더 뷰, 캠페인별 뷰
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━사용자 플로우
[Flow 1: 조언 적용 기록]
Surface Layer 진입
↓
캠페인 카드에서 조언 확인
↓
[쿠팡 광고센터에서 조정하기 →] 클릭
↓
(쿠팡에서 실제 조정)
↓
장사왕으로 돌아옴
↓
[✓ 적용했어요] 클릭
↓
┌─────────────────────┐
│ 변경 전/후 입력 │
│ 메모 작성 (선택) │
│ 알림 설정 (선택) │
└─────────────────────┘
↓
[기록하기] 클릭
↓
업무노트 저장 + 효과 추적 시작
↓
7일 후 효과 확인 (알림)
[Flow 2: 직접 메모 작성]
타임라인 뷰 진입
↓
[+ 메모 추가] 클릭
↓
┌─────────────────────┐
│ 연결 대상 선택 │
│ 메모 내용 작성 │
│ 효과 추적 (선택) │
└─────────────────────┘
↓
[저장] 클릭
↓
타임라인에 표시
[Flow 3: 캠페인별 메모 확인]
Surface Layer 진입
↓
캠페인 카드 확인
↓
"최근 메모" 미리보기 확인
↓
[펼쳐보기] 클릭
↓
최근 3개 메모 목록 표시
↓
[전체 보기 →] 클릭
↓
해당 캠페인 필터된 타임라인 뷰디자인 요청사항
| 항목 | 내용 |
|---|---|
| 톤앤매너 | 일기장/노트 느낌, 친근하고 정리된 |
| 타임라인 | 날짜 헤더 + 카드 형태, 스크롤 가능 |
| 효과 표시 | Before/After 비교 테이블, 변화율 강조 |
| 아이콘 | 📝 메모, ✓ 적용, ⏳ 추적중, ✨ 효과확인 |
| 컬러 | 효과 있음=초록, 변화없음=회색, 효과없음=주황 |
| 참고 | Notion, Todoist, 토스 가계부 |
4. EDGE: 예외 & 엣지 케이스
데이터 예외
| 상황 | 처리 방법 |
|---|---|
| 삭제된 캠페인 | 메모 유지, "삭제된 캠페인" 표시, 효과 추적 불가 |
| 캠페인 이름 변경 | 스냅샷된 이름 유지, 현재 이름과 다르면 표시 |
| 효과 추적 중 데이터 부족 | "데이터 부족으로 효과 측정 불가" 표시 |
| 적용 전 7일 데이터 없음 | 있는 기간만 사용, 비교 기간 명시 |
사용자 예외
| 상황 | 처리 방법 |
|---|---|
| 메모 수정 | 수정 가능, 수정 이력은 미표시 (MVP) |
| 메모 삭제 | Soft delete, 복구 불가 경고 후 삭제 |
| 변경 전/후 값 잘못 입력 | 수정 가능, 효과 추적 재시작 옵션 |
| 동일 캠페인 다중 메모 | 모두 표시, 효과 추적은 개별 진행 |
시스템 예외
| 상황 | 처리 방법 |
|---|---|
| 알림 발송 실패 | 재시도 3회, 실패 시 인앱 알림으로 Fallback |
| 효과 계산 지연 | "계산 중" 표시, 최대 24시간 |
| DB 저장 실패 | 재시도, 실패 시 에러 메시지 + 내용 복사 가능 |
5. 성공 지표
5.1 지표 체계 개요
┌─────────────────────────────────────────────────────────────┐
│ E-10 업무노트 지표 체계 │
├─────────────────────────────────────────────────────────────┤
│ [Sprint 내 판단] │
│ Primary: "적용했어요" 클릭률 ≥ 15% AND 업무노트 작성률 ≥ 30% │
│ Secondary: 효과 추적 완료율 ≥ 50% │
├─────────────────────────────────────────────────────────────┤
│ [Sprint 이후 확인] │
│ Lagging: 효과 확인 후 재방문율 +10% │
│ Ultimate: 조언별 실제 효과율 측정 인프라 확보 │
├─────────────────────────────────────────────────────────────┤
│ [Guard Rails] │
│ • "적용했어요" UX 복잡도로 이탈 금지 │
│ • 타임라인 로딩 3초 이내 │
│ • 효과 계산 정확도 유지 │
└─────────────────────────────────────────────────────────────┘5.2 Sprint 내 판단 지표
| 계층 | 지표 | 산식 | 목표 |
|---|---|---|---|
| Primary | "적용했어요" 클릭률 | 클릭 유저 / 조언 노출 유저 | ≥ 15% |
| Primary | 업무노트 작성 셀러 비율 | 노트 작성 셀러 / 전체 유료 셀러 | ≥ 30% |
| Secondary | 효과 추적 완료율 | 추적 완료 건 / 추적 시작 건 | ≥ 50% |
| Secondary | 직접 메모 작성률 | 직접 메모 건 / 전체 노트 건 | 측정 (기준선) |
5.3 Sprint 이후 확인 지표
| 계층 | 지표 | 산식 | 목표 |
|---|---|---|---|
| Lagging | 효과 확인 후 재방문율 | 효과 확인 후 7일 내 재방문 | +10% |
| Lagging | 조언 효과 있음 비율 | 효과 있음 판정 / 효과 추적 완료 | 측정 (서비스 개선 활용) |
| Ultimate | 조언 신뢰도 | 효과 확인 후 재적용률 | 측정 (서비스 개선 활용) |
5.4 Guard Rails
- "적용했어요" 버튼 클릭 후 이탈률 20% 초과 금지
- 타임라인 페이지 로딩 3초 초과 금지
- 효과 계산 오류율 5% 초과 금지
- 업무노트 관련 CS 10건/주 초과 금지
5.5 성공 판단 기준
[Sprint 종료 시점]
✅ 성공: "적용했어요" 클릭률 ≥ 15% AND 업무노트 작성률 ≥ 30%
⚠️ 부분 성공: 둘 중 하나만 달성
❌ 실패: 둘 다 미달성 OR Guard Rails 위반
[Sprint +4주 후]
✅ 가설 검증: 효과 확인 후 재방문율 +10%
→ "업무노트가 조언 효과 검증 인프라로 작동한다"5.6 GA4 이벤트 정의
| 이벤트명 | 트리거 | 파라미터 |
|---|---|---|
click_advice_applied | "적용했어요" 버튼 클릭 | advice_type, campaign_id |
create_work_note | 업무노트 저장 | note_type: manual/advice_applied |
start_effect_tracking | 효과 추적 시작 | campaign_id, advice_type |
complete_effect_tracking | 효과 추적 완료 | effect_result: positive/neutral/negative |
view_timeline | 타임라인 뷰 진입 | - |
click_effect_notification | 효과 알림 클릭 | campaign_id |
장사왕 검증 지표 (내부)
| 지표 | 설명 | 활용 |
|---|---|---|
| 조언별 효과율 | 어떤 조언이 효과적인가 | 조언 로직 개선 |
| 효과 있음 비율 | 조언 중 실제 효과 있는 비율 | 서비스 가치 증명 |
| 조언 신뢰도 | 효과 확인 후 재적용률 | 사용자 신뢰 측정 |
6. 이벤트 트래킹 명세
6.1 GA4 이벤트 JavaScript 구현
javascript
// E-10 업무노트 이벤트
// 1. "적용했어요" 버튼 클릭
dataLayer.push({
event: "work_note",
event_name: "click_advice_applied",
params: {
campaign_id: "camp_12345",
campaign_name: "봄 신상품",
advice_type: "bidding_down",
advice_id: "adv_67890",
ad_type: "non_search",
current_value: "200",
recommended_value: "120",
is_demo: "N"
}
});
// 2. 업무노트 저장 (조언 적용)
dataLayer.push({
event: "work_note",
event_name: "create_work_note",
params: {
note_id: "note_12345",
note_type: "advice_applied",
target_type: "campaign",
campaign_id: "camp_12345",
advice_type: "bidding_down",
before_value: "200",
after_value: "120",
has_memo: "Y",
effect_tracking_enabled: "Y",
is_demo: "N"
}
});
// 3. 업무노트 저장 (직접 메모)
dataLayer.push({
event: "work_note",
event_name: "create_work_note",
params: {
note_id: "note_12346",
note_type: "manual",
target_type: "campaign",
campaign_id: "camp_12345",
has_memo: "Y",
effect_tracking_enabled: "N",
is_demo: "N"
}
});
// 4. 효과 추적 시작
dataLayer.push({
event: "work_note",
event_name: "start_effect_tracking",
params: {
note_id: "note_12345",
campaign_id: "camp_12345",
advice_type: "bidding_down",
tracking_period: 7,
before_roas: 280,
before_profit_per_100: 5,
is_demo: "N"
}
});
// 5. 효과 추적 완료
dataLayer.push({
event: "work_note",
event_name: "complete_effect_tracking",
params: {
note_id: "note_12345",
campaign_id: "camp_12345",
advice_type: "bidding_down",
effect_result: "positive", // positive, neutral, negative
before_roas: 280,
after_roas: 385,
roas_change_percent: 37.5,
before_profit_per_100: 5,
after_profit_per_100: 18,
is_demo: "N"
}
});
// 6. 타임라인 뷰 진입
dataLayer.push({
event: "work_note",
event_name: "view_timeline",
params: {
filter_type: "all", // all, campaign, tracking
campaign_id: null,
note_count: 15,
tracking_count: 3,
is_demo: "N"
}
});
// 7. 캠페인 카드에서 메모 펼치기
dataLayer.push({
event: "work_note",
event_name: "expand_campaign_notes",
params: {
campaign_id: "camp_12345",
note_count: 5,
is_demo: "N"
}
});
// 8. 효과 알림 클릭
dataLayer.push({
event: "work_note",
event_name: "click_effect_notification",
params: {
note_id: "note_12345",
campaign_id: "camp_12345",
notification_source: "push", // push, in_app
days_since_tracking: 7,
is_demo: "N"
}
});
// 9. 업무노트 수정
dataLayer.push({
event: "work_note",
event_name: "edit_work_note",
params: {
note_id: "note_12345",
note_type: "advice_applied",
edit_field: "memo", // memo, before_value, after_value
is_demo: "N"
}
});
// 10. 업무노트 삭제
dataLayer.push({
event: "work_note",
event_name: "delete_work_note",
params: {
note_id: "note_12345",
note_type: "advice_applied",
days_since_created: 5,
had_effect_tracking: "Y",
is_demo: "N"
}
});6.2 이벤트 파라미터 상세
| 파라미터 | 타입 | 설명 | 예시 |
|---|---|---|---|
note_type | string | 노트 유형 | advice_applied, manual |
target_type | string | 연결 대상 유형 | campaign, keyword, general |
advice_type | string | 조언 유형 | bidding_down, roas_adjust, keyword_exclude |
effect_result | string | 효과 판정 결과 | positive, neutral, negative |
effect_tracking_enabled | string | 효과 추적 여부 | Y, N |
roas_change_percent | number | ROAS 변화율 | 37.5, -15.2 |
7. 개발 범위
7.1 P0 (MVP 필수)
| 기능 | 설명 | 담당 |
|---|---|---|
| WorkNote 테이블 설계 | 스키마 및 API 설계 | BE |
| "적용했어요" 버튼 | 조언 카드에 버튼 추가 | FE |
| 적용 입력 모달 | 변경 전/후 값 입력 | FE |
| 업무노트 저장 API | CRUD API | BE |
| 타임라인 뷰 UI | 기본 목록 표시 | FE |
| 캠페인별 필터 | 타임라인 필터링 | FE |
7.2 P1 (핵심 기능)
| 기능 | 설명 | 담당 |
|---|---|---|
| 효과 추적 로직 | Before/After 지표 계산 | BE |
| 효과 결과 표시 | 추적 완료 후 비교 테이블 | FE |
| 직접 메모 작성 | 타임라인/카드에서 메모 추가 | FE |
| 캠페인 카드 연동 | 최근 메모 미리보기 | FE |
| GA4 이벤트 연동 | 전체 이벤트 트래킹 | FE |
7.2-a P1-a (코칭 확장 - v2.0 추가)
핵심 가치 "성장 확신"을 위한 S52 확장 기능
| 기능 | 설명 | 담당 |
|---|---|---|
| 중간 체크 (D+3) | 효과 추적 중 트렌드 미리보기, midMetrics 저장 | BE |
| 중간 체크 UI | 트렌드 아이콘 (🔼/➡️/🔽) + ROAS 변화율 표시 | FE |
| 패턴 발견 로직 | 동일 adviceType 3회+, 70%+ 동일 결과 → 패턴 등록 | BE |
| SellerPatterns 테이블 | preferredActions, avoidedActions 저장 | BE |
| 패턴 표시 UI | 타임라인 상단 요약, 카드 배지, 발견 알림 | FE |
| S53 E-04 연계 준비 | forAIContext 필드로 SellerAIContext 호환 | BE |
7.3 P2 (확장 기능)
| 기능 | 설명 | 담당 |
|---|---|---|
| 효과 확인 알림 | 7일 후 푸시/인앱 알림 | BE |
| 키워드별 노트 | 키워드 단위 메모 연결 | FE/BE |
| 효과 추적 기간 커스텀 | 7일 외 기간 선택 | FE/BE |
| 팀 공유 기능 | 다중 사용자 공유 | BE |
| 캘린더 뷰 | 달력 형태 표시 | FE |
7.4 개발 우선순위 매트릭스
┌─────────────────────────────────────────────────────────────────┐
│ 개발 우선순위 매트릭스 │
├───────────────────┬──────────────────┬──────────────────────────┤
│ P0 (Week 1) │ P1 (Week 2) │ P2 (Backlog) │
├───────────────────┼──────────────────┼──────────────────────────┤
│ WorkNote API │ 효과 추적 로직 │ 알림 시스템 │
│ 적용했어요 버튼 │ 효과 결과 표시 │ 키워드별 노트 │
│ 입력 모달 │ 직접 메모 작성 │ 기간 커스텀 │
│ 타임라인 뷰 │ 카드 연동 │ 팀 공유 │
│ 필터 │ GA4 이벤트 │ 캘린더 뷰 │
└───────────────────┴──────────────────┴──────────────────────────┘8. 의존성 & 제약
기술 의존성
| 의존 항목 | 상태 | 비고 |
|---|---|---|
| E-03 Surface Layer UI | E-03 완료 후 | 조언 카드에 버튼 추가 |
| 캠페인별 지표 API | ✅ 존재 | 효과 추적용 |
| 알림 인프라 | ⏳ 확인 필요 | 푸시/인앱 알림 |
| WorkNote 테이블 | 신규 생성 필요 | BE 작업 |
제약 조건
- 스크랩 한계: 쿠팡 광고 API 자체가 없음, 스크랩으로 성과 데이터만 수집 가능 → 셀러 직접 입력 의존
- 효과 추적 기간: 7일 고정 (MVP), 향후 커스텀 가능
- 동시 추적 제한: 동일 캠페인 다중 추적 가능 (충돌 없음)
- 데이터 보관: 업무노트 1년 보관 (MVP)
9. 스토리 목록
| Story ID | 제목 | 규모 | 우선순위 | 담당 | 상태 |
|---|---|---|---|---|---|
| E-10-S-01 | WorkNote 테이블 설계 및 CRUD API | M | P0 | BE | draft |
| E-10-S-02 | "적용했어요" 버튼 및 입력 모달 | M | P0 | FE | draft |
| E-10-S-03 | 타임라인 뷰 UI + 캠페인별 필터 | L | P0 | FE | draft |
| E-10-S-04 | 직접 메모 작성 기능 | S | P1 | FE | draft |
| E-10-S-05 | 효과 추적 로직 (Before/After 계산 + 효과 판정) | L | P1 | BE | draft |
| E-10-S-06 | 캠페인 카드 업무노트 연동 (미리보기 + 펼침) | M | P1 | FE | draft |
| E-10-S-07 | GA4 이벤트 트래킹 (10개 이벤트) | S | P1 | FE | draft |
| E-10-S-08 | 중간 체크 (D+3) 로직 및 UI (v2.0) | M | P1-a | BE/FE | draft |
| E-10-S-09 | 패턴 발견 로직 + SellerPatterns 테이블 (v2.0) | L | P1-a | BE | draft |
| E-10-S-10 | 패턴 표시 UI (타임라인/카드/배지) (v2.0) | M | P1-a | FE | draft |
Story Point 추정
| 규모 | Story | 합계 |
|---|---|---|
| L (3pt) | S-03, S-05, S-09 | 9 |
| M (2pt) | S-01, S-02, S-06, S-08, S-10 | 10 |
| S (1pt) | S-04, S-07 | 2 |
| 총합 | 21 SP |
의존성 그래프
[BE] E-10-S-01 WorkNote API
│
┌────┴────┬──────────────┐
▼ ▼ ▼
[FE] S-02 [FE] S-03 [BE] S-05 효과추적
적용버튼 타임라인 │
│ │ ┌────┴────┐
▼ ▼ ▼ ▼
[FE] S-04 [FE] S-06 [BE] S-08 [BE] S-09
직접메모 카드연동 중간체크 패턴발견
│ │ │ │
└────┬────┘ ▼ ▼
▼ [FE] S-08 [FE] S-10
[FE] S-07 (D+3 UI) 패턴 UI
이벤트트래킹
[v2.0 추가 흐름]
S-05 효과추적 → S-08 중간체크 (D+3)
S-05 효과추적 → S-09 패턴발견 → S-10 패턴 UI
S-09 패턴발견 → S53 E-04 SellerAIContext (연계)10. QA 체크리스트
기능 테스트
"적용했어요" 버튼
- [ ] Surface Layer 조언 카드에 버튼 정상 표시
- [ ] 버튼 클릭 시 입력 모달 정상 오픈
- [ ] 모달에서 변경 전/후 값 입력 가능
- [ ] 메모 입력 (선택) 동작
- [ ] 효과 추적 알림 체크박스 동작
- [ ] [기록하기] 클릭 시 저장 및 토스트 표시
- [ ] 저장 후 타임라인에 즉시 반영
타임라인 뷰
- [ ] 날짜별 그룹핑 정상 표시
- [ ] 최신순 정렬 동작
- [ ] [전체] 필터 동작
- [ ] [캠페인별] 필터 동작
- [ ] [효과 추적 중] 필터 동작
- [ ] [+ 메모 추가] 버튼 동작
- [ ] 무한 스크롤/페이징 정상 동작
직접 메모 작성
- [ ] 연결 대상 선택 (전체/캠페인/키워드)
- [ ] 캠페인 드롭다운 정상 로딩
- [ ] 메모 내용 입력 (필수)
- [ ] 효과 추적 선택 옵션
- [ ] 저장 후 타임라인 반영
효과 추적
- [ ] 추적 시작 시 beforeMetrics 스냅샷 저장
- [ ] 추적 중 "⏳ 효과 추적 중 (D+N)" 표시
- [ ] 7일 경과 후 afterMetrics 자동 계산
- [ ] Before/After 비교 테이블 정상 표시
- [ ] 변화율(%) 정상 계산
- [ ] 효과 판정 (✨/📊/💡) 정상 표시
캠페인 카드 연동
- [ ] 메모 있는 캠페인에 최근 메모 미리보기 표시
- [ ] [펼쳐보기] 클릭 시 최근 3개 목록 표시
- [ ] [전체 보기] 클릭 시 필터된 타임라인 이동
- [ ] [메모 추가] 버튼 동작
효과 추적 로직 테스트
효과 판정 기준
- [ ] ROAS +10% 이상: "✨ 조언이 효과적이었어요!"
- [ ] ROAS -10% ~ +10%: "📊 큰 변화 없어요"
- [ ] ROAS -10% 이상 하락: "💡 다른 방법을 시도해보세요"
- [ ] 순이익 기준도 동일하게 적용
경계값 테스트
- [ ] ROAS 정확히 +10%: positive 판정
- [ ] ROAS 정확히 -10%: neutral 판정
- [ ] 데이터 부족 시 "데이터 부족" 메시지
이벤트 트래킹 테스트
- [ ]
click_advice_applied발생 (버튼 클릭 시) - [ ]
create_work_note발생 (저장 시) - [ ]
start_effect_tracking발생 (추적 시작 시) - [ ]
complete_effect_tracking발생 (7일 후) - [ ]
view_timeline발생 (페이지 진입 시) - [ ]
expand_campaign_notes발생 (카드 펼침 시) - [ ]
edit_work_note발생 (수정 시) - [ ]
delete_work_note발생 (삭제 시) - [ ] 모든 이벤트에
is_demo파라미터 포함
엣지 케이스 테스트
데이터 예외
- [ ] 삭제된 캠페인의 노트: "삭제된 캠페인" 표시
- [ ] 캠페인명 변경 시 스냅샷 이름 유지
- [ ] 효과 추적 중 데이터 부족: 안내 메시지
- [ ] 적용 전 7일 데이터 부족: 부분 데이터로 계산
사용자 예외
- [ ] 노트 수정 후 저장 정상 동작
- [ ] 노트 삭제 확인 경고 표시
- [ ] Soft delete 후 복구 불가 안내
- [ ] 동일 캠페인 다중 노트 정상 표시
시스템 예외
- [ ] API 에러 시 재시도 버튼 표시
- [ ] 저장 실패 시 내용 복사 기능
- [ ] 네트워크 에러 시 오프라인 안내
성능 테스트
- [ ] 타임라인 초기 로딩 3초 이내
- [ ] 필터 변경 시 500ms 이내 반응
- [ ] 효과 계산 지연 시 "계산 중" 표시
체크리스트
PO 승인 전 체크
- [x] 문제 정의가 명확한가?
- [x] 비즈니스 로직이 구체적인가? (데이터 구조, 효과 계산)
- [x] 와이어프레임/플로우가 있는가?
- [x] 엣지 케이스가 정의되었는가?
- [x] 성공 지표가 측정 가능한가?
- [x] 기술 의존성이 확인되었는가?
미결 사항
| 항목 | 상태 | 담당 |
|---|---|---|
| 효과 추적 기간 커스텀 | P2로 이관 | - |
| 팀 공유 기능 | P2로 이관 | - |
| 알림 기능 | P2로 이관 | - |
| 담당자 배정 | ⏳ 미정 | 윤재 |
승인
| 항목 | 확인 |
|---|---|
| PO 승인 | ☑ |
| 승인일 | 2026-01-23 |
| 비고 | PRD 체크리스트 완료, 상세 스펙 검토 후 승인 |
참고 자료
연관 Epic
| Epic | 연관성 |
|---|---|
| E-03 Surface Layer | 조언 카드에 "적용했어요" 버튼 추가 |
| E-04 Phase 2 순이익 번역 | 효과 추적 시 순이익 지표 활용 |
| S53 E-04 AI 진단 엔진 | SellerPatterns → SellerAIContext 연계 (v2.0) |
S53 E-04 연계 (v2.0 추가)
┌─────────────────────────────────────────────────────────────────┐
│ E-10 업무노트 → S53 E-04 AI 진단 연계 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ [S52 E-10 업무노트] │
│ └─ SellerPatterns │
│ ├─ preferredActions: ['bidding_down', 'roas_up'] │
│ ├─ avoidedActions: ['keyword_add'] │
│ └─ forAIContext: { ... } │
│ │ │
│ ▼ (데이터 연계) │
│ │
│ [S53 E-04 AI 진단 엔진] │
│ └─ SellerAIContext │
│ ├─ 공통 컨텍스트 (업종, 스테이지 등) │
│ ├─ patterns: { │
│ │ applyRate: 0.65, // 조언 적용률 │
│ │ positiveOutcomeRate: 0.73, // 긍정 결과 비율 │
│ │ preferredActions: [...], // 선호 방법 │
│ │ avoidedActions: [...] // 비선호 방법 │
│ │ } │
│ └─ Surface Layer 개인화 진단에 활용 │
│ │
├─────────────────────────────────────────────────────────────────┤
│ 활용 예시: │
│ • "이 셀러는 비검색 입찰가 낮추기가 잘 맞아요" → 우선 추천 │
│ • "키워드 추가는 이 셀러에게 효과 없음" → 추천에서 제외 │
│ • 개인화된 조언 = 성장 확신 강화 │
└─────────────────────────────────────────────────────────────────┘핵심: E-10은 패턴 수집 인프라, E-04는 패턴 활용 엔진
경쟁사 분석
| 서비스 | 유사 기능 | 차별화 |
|---|---|---|
| 쿠팡 광고센터 | 없음 (API도 없고 변경 이력도 미제공) | - |
| 셀러허브 | 메모 기능 | 효과 추적 없음 |
| 노션 | 범용 노트 | 광고 연동 없음 |
기술 배경
[장사왕 쿠팡 광고 데이터 수집 방식]
쿠팡 광고 API: 없음 (쿠팡이 제공하지 않음)
↓
장사왕: 쿠팡 광고센터 화면 스크랩 → ETL
↓
수집 가능: 캠페인/키워드 성과 데이터 (노출, 클릭, 전환, ROAS 등)
수집 불가: 설정 변경 이력 (입찰가 변경, 키워드 추가/제외 등)
↓
업무노트: 셀러가 직접 기록하여 "변경 행위" 데이터 확보변경 이력
| 버전 | 날짜 | 변경 내용 | 작성자 |
|---|---|---|---|
| 1.0 | 2026-01-21 | 초안 작성 | PO |
| 1.1 | 2026-01-23 | 성공 지표 계층 구조 (5.1~5.6) 추가 | PO |
| 1.2 | 2026-01-23 | 이벤트 트래킹 JS 코드 예시 추가 | PO |
| 1.3 | 2026-01-23 | 개발 범위 P0/P1/P2 분류 추가 | PO |
| 1.4 | 2026-01-23 | QA 체크리스트 추가 | PO |
| 2.0 | 2026-01-29 | 코칭 확장 v2.0: 핵심 가치 "성장 확신" 정의, 중간 체크(D+3), 패턴 발견/표시, S53 E-04 연계 설계 추가 | PO |
| 2.1 | 2026-01-29 | adviceType 표준 정의 추가 (로직 1-1): E-03 Surface Layer 조언 케이스와 매핑, 패턴 분류 기준 | PO |
작성일: 2026-01-21최종 수정: 2026-01-29
