# task-1376.1 완료 보고서: 캠페인뷰 v3 피드백 반영 4건

## S - Situation
캠페인뷰 v3 (task-1375.1 산출물)이 대시보드에서 운영 중이나, 제이회장님으로부터 4건의 피드백이 접수됨. Angle/RSA 출처 추적 불가, 채널 상태 오류, 문서 최신화 불명확, 노하우 용도 불분명.

## C - Complication
대시보드 데이터가 추정치와 미확인 정보를 포함하여 의사결정 근거로 신뢰할 수 없는 상태. Google "라이브" 표시는 실제 광고 게재 확인 없이 기재됨. 예산 배분이 피드백 이전 기준으로 당근마켓/카카오/채용사이트 금액이 맞지 않음.

## Q - Question
4건의 피드백을 반영하여 대시보드 정보의 정확성과 추적 가능성을 확보할 수 있는가?

## A - Answer
4건 피드백 전건 반영 완료. campaign.json에 source_doc 필드 추가(앵글 5건, RSA 9건), 예산 재배분(당근 15만/카카오 15만/채용 0/나머지 270만 4채널 배분), Google 상태 "준비중"으로 보정, 채널별 합법적 컨트롤 방법 명시. CampaignView.js에 클릭→원본 문서 링크, 전략 문서 L0/L1/L2 계층 구조, 실제 mtime 표시, 미업데이트 경고, 노하우 탭 설명 추가. 노하우 3개 파일 상단에 용도/범위/대상사용자 명시. 대시보드 서버 재시작 완료, API 7개 엔드포인트 응답 검증 통과.

---

## 피드백별 반영 내역

### 피드백 1: Angle A~E, RSA 9세트 출처/로직 연결
- campaign.json `copy_mapping.existing_angles`에 source_doc 필드 5건 추가
  - A: `output/meta-ads/angle-A/briefs/meta-ad-angleA-final.md`
  - B~E: 각각 `output/meta-ads/angle-{B~E}/production/meta-ad-set.json`
- campaign.json `copy_mapping.rsa_9set` 9개 세트에 source_doc 추가 (`output/google-ads/rsa-9set.md`)
- CampaignView.js: 앵글 카드 클릭 시 원본 문서 열기, RSA 뱃지 클릭 시 원본 열기, 생성 근거 링크 표시

### 피드백 2: 채널별 현황 보정 + 예산 재배분
- Google 상태: "라이브" → "준비중" (실제 광고 게재 미확인)
- Meta 계정제한 설명: "자동화 프로그램으로 판단되어 계정 잠김"으로 정확한 사유 기재
- 예산 재배분 (월 300만원):
  - 당근마켓: 150,000원 (하루 5,000원)
  - 채용사이트: 0원 (무료만 진행)
  - 카카오: 150,000원 (하루 5,000원)
  - Meta: 950,000원 / Google: 800,000원 / 네이버 SA: 630,000원 / 네이버 GFA: 320,000원
  - 합계: 3,000,000원 (검증 완료)
- 각 채널에 control_method 필드 추가 (합법적 컨트롤 가능 범위 명시)

### 피드백 3: 전략 문서 최신화 + 구조화
- server.py `/api/campaign-docs` 수정: mtime_iso, level(L0/L1/L2), updated_since_0325 필드 추가
- CampaignView.js: 문서 목록을 L0(마스터 플랜) → L1(채널별 전략) → L2(실행 가이드) 계층으로 그룹핑
- 3/25 이후 변경 안 된 문서는 빨간색 "미업데이트" 표시
- 문서 계층 매핑: strategy.md=L0, meta-ads/google-ads/naver-keyword-ads/matrix-3x3-strategy/ab-test-plan/execution-calendar=L1, 나머지=L2

### 피드백 4: 노하우 라이브러리 용도/범위 명확화
- knowhow-design.md → "광고 배너 디자인 성공/실패 패턴 라이브러리" (Meta/Google/네이버 GFA 전용)
- design-qc-knowhow.md → "DQ 10항목 평가 기준 및 체크리스트" (DQ-01~DQ-10)
- knowhow-cardnews.md → "카드뉴스 슬라이드 제작 규칙" (ThreadAuto v2 전용)
- 각 파일에 용도/범위/대상사용자/갱신규칙 4항목 명시
- 대시보드에 카드뉴스 탭 신규 추가, 각 탭에 설명 텍스트 표시

---

## 발견 이슈 및 해결

### 자체 해결 (4건)
1. **Angle B~E에 briefs/*.md 파일 부재** — production/meta-ad-set.json을 source_doc으로 연결 (실제 존재하는 가장 관련성 높은 파일)
2. **Google "라이브" 상태 근거 불명** — "준비중"으로 보정, account_note에 "실제 광고 게재 여부 미확인" 기재
3. **카드뉴스 노하우가 대시보드 탭에 미포함** — knowhow API에 knowhow_cardnews 반환 추가, 프론트에 4번째 탭 추가
4. **전략 문서 mtime이 API에서 전달되지 않음** — server.py에 mtime_iso, level, updated_since_0325 필드 추가

### 범위 외 미해결 (0건)
없음.

---

## 산출물 파일

- `/home/jay/workspace/dashboard/components/CampaignView.js` (수정: 클릭 링크, 문서 계층, 노하우 설명)
- `/home/jay/workspace/dashboard/data/campaign.json` (수정: 예산 재배분, source_doc, 채널 상태 보정, control_method)
- `/home/jay/workspace/dashboard/server.py` (수정: campaign-docs API 계층/mtime, knowhow API 카드뉴스+설명)
- `/home/jay/workspace/memory/specs/knowhow-design.md` (수정: 용도/범위 헤더 추가)
- `/home/jay/workspace/memory/specs/design-qc-knowhow.md` (수정: 용도/범위 헤더 추가)
- `/home/jay/workspace/memory/specs/knowhow-cardnews.md` (수정: 용도/범위 헤더 추가)

---

## 셀프 QC (8항목)

- [x] 1. 영향 파일: campaign.json↔CampaignView.js↔server.py 3파일 연동 확인 완료
- [x] 2. 엣지 케이스: source_doc 없는 항목 → 조건부 렌더링, level 없는 문서 → 기본 L2
- [x] 3. 작업 지시 일치: 4건 피드백 전건 반영
- [x] 4. 에러 처리: window._showFileViewer 안전 호출 (&&), API fallback 유지
- [x] 5. 테스트: API 7개 엔드포인트 응답 검증 통과
- [x] 6. 이슈 직접 해결: 4건 발견, 4건 해결, 미해결 0건
- [x] 7. 코드 아키텍처: 기존 패턴(TailwindCSS, CDN React) 유지, SOLID/DRY 위반 없음
- [x] 8. 인터페이스 변경: campaign.json 구조 확장 시 CampaignView.js + server.py 동시 수정

---

## 검증 증거

- campaign.json valid JSON: `python3 -c "json.load(open(...))"` → 성공
- server.py syntax: `py_compile.compile(...)` → OK
- 예산 합계 검증: 950000+800000+630000+320000+150000+0+150000 = 3,000,000 ✓
- 서버 재시작: `curl http://localhost:8000/api/status` → `{"status": "ok"}`
- /api/campaign: source_doc 전체 존재, Google "준비중" 확인
- /api/campaign-docs: 14건, L0/L1/L2 level + mtime_iso + updated_since_0325 확인
- /api/knowhow: 4개 desc 필드 + knowhow_cardnews (4664 chars) 확인

---

## 모델 사용 기록

- 팀원: 불칸 / 작업: campaign.json + server.py 수정 / 모델: sonnet
- 팀원: 이리스 / 작업: CampaignView.js 수정 / 모델: sonnet
- 팀원: 아테나 / 작업: 노하우 3파일 헤더 수정 / 모델: sonnet
