# task-1381.1 완료 보고서 — 채널별 배너 사이즈 규격 수정 (광고 배너만 한정)

## SCQA

**S**: task-1379.1에서 campaign.json에 배너 매트릭스가 도입되어 8개 채널(Meta, Google, 네이버 GFA, 카카오, 당근, 채용사이트, 스레드/인스타, 블로그)의 배너 규격이 등록되었다.

**C**: 그러나 블로그 썸네일(1200x630), 스레드/인스타 카드뉴스(1080x1350), 채용사이트 이미지 등 광고가 아닌 콘텐츠 사이즈 3개 채널이 혼재되어, 실제 유료 광고 배너 제작 시 불필요한 규격까지 포함되는 문제가 있었다. 또한 카카오 비즈보드 사이즈(1029x222)가 공식 규격(1029x258)과 불일치했다.

**Q**: 유료 광고 배너 규격만 남기고 콘텐츠 이미지를 분리하여 정확한 광고 배너 매트릭스를 구성할 수 있는가?

**A**: 5개 공식 광고 채널(Meta, Google, 네이버 GFA, 카카오, 당근)의 규격을 웹 리서치로 재확인 후, 비광고 3채널(채용사이트/스레드·인스타/블로그)을 제거하고 카카오 비즈보드 규격을 수정했다. 총 필요 배너 수: 99장 → 81장(9필수사이즈 × 9셀). JSON 유효성 검증 및 Python 데이터 무결성 테스트 통과.

---

## 작업 내용

### 1. campaign.json 배너 매트릭스 수정
- **비광고 채널 3개 제거**: recruit(채용사이트), social_content(스레드/인스타), blog(블로그)
- **카카오 비즈보드 규격 수정**: 1029x222→1029x258, 315x222→315x258 (공식 가이드라인 기반)
- **total_banners_needed 재계산**: 99 → 81

### 2. CampaignView.js 수정
- channelStyle에서 recruit 항목 제거
- 섹션 타이틀: "배너 매트릭스" → "광고 배너 매트릭스"
- 규격표 타이틀: "채널별 사이즈 규격" → "광고 채널별 배너 규격"

### 3. 광고 배너 규격표 생성
- 5개 광고 채널의 공식 규격을 정리한 참조 문서 작성

---

## 공식 규격 재확인 결과 (웹 리서치 기반)

- **Meta**: 1080x1080, 1080x1350(광고용 확인), 1080x1920 — Meta Business Help Center 기준 일치
- **Google Ads**: 1200x628, 1200x1200, 1200x1500 — Google Ads Help Center 기준 일치
- **네이버 GFA**: 1250x560, 1200x628, 1200x1200, 750x200 — 네이버 광고 가이드 기준 일치
- **카카오 비즈보드**: 1029x258(수정), 315x258(수정) — 카카오 비즈니스 가이드 기준
- **당근마켓**: 1080x1080, 1200x628 — 당근비즈니스 참조 (공식 픽셀 규격 문서 미공개, 업계 표준 적용)

---

## 발견 이슈 및 해결

### 자체 해결 (3건)
1. **카카오 비즈보드 height 오류(222→258)** — 공식 가이드라인 확인 후 1029x258, 315x258으로 수정
   - campaign.json:433-434 height/ratio 값 수정
2. **카카오 비즈보드 ratio 부정확** — 3.99:1, 1.22:1로 재계산하여 수정
3. **total_banners_needed 미갱신** — 비광고 채널 제거 후 99→81로 재계산

### 범위 외 미해결 (1건)
1. **당근마켓 공식 픽셀 규격 미공개** — 당근비즈니스 공식 사이트에 이미지 픽셀 규격 명시 없음. 업계 표준(1080x1080, 1200x628) 적용. 범위 외 사유: 외부 플랫폼 문서 부재

---

## 산출물

- `/home/jay/workspace/dashboard/data/campaign.json`
- `/home/jay/workspace/dashboard/components/CampaignView.js`
- `/home/jay/workspace/dashboard/data/ad-banner-specs.md`

---

## 셀프 QC 체크리스트

- [x] 1. 영향 파일: campaign.json, CampaignView.js 2파일. channelNames(라인 527)의 recruit은 채널 실행 상태 섹션용으로 정상 유지
- [x] 2. 엣지 케이스: channelStyle에 없는 channel_id → 기존 fallback({ color: 'from-slate-400...', icon: '?' }) 코드 동작 확인
- [x] 3. 작업 지시 일치: 비광고 사이즈 제거, 공식 규격 재확인, campaign.json/CampaignView.js 업데이트 완료
- [x] 4. 에러/보안: JSON 파싱 검증 통과, XSS 위험 없음
- [x] 5. 테스트: Python 데이터 무결성 검증 스크립트 5항목 전체 통과
- [x] 6. 이슈 해결: 카카오 규격 오류 3건 자체 해결, 당근 규격 1건 범위 외 명시
- [x] 7. 아키텍처: 데이터(JSON)-뷰(JS) 분리 원칙 유지
- [x] 8. 인터페이스: channel_specs 배열 구조 변경 없음 (항목 삭제만)

---

## 모델 사용 기록

- 루(Lugh) / campaign.json 배너 매트릭스 수정 / sonnet / -
- 브리짓(Brigid) / CampaignView.js UI 수정 / sonnet / -

---

## 머지 판단

- **머지 필요**: No (프로젝트 worktree 미사용, 직접 수정)
