# 캠페인뷰 banner_matrix 데이터 동기화

## 문제
대시보드 캠페인뷰의 "배너 제작 현황" 3x3 매트릭스가 9셀 모두 "미제작"으로 표시됨.
원인: campaign.json의 `banner_matrix.banner_sets`가 업데이트 안 됨.
`final_approval` 섹션에는 이미 반영됐지만, `banner_matrix` 섹션에는 미반영.

## 현재 상태
- `banner_matrix.banner_sets`: 9셀 모두 `status: "미제작"`, `banners: {}`
- `banner_matrix.total_banners_done`: 0
- `banner_matrix.status_summary`: 미제작 9, 제작중 0, 완료 0

## 실제 배너 파일 현황
아래 폴더에 배너 PNG/HTML 존재 (각 셀당 meta-feed-1080x1080.png + google-resp-1200x628.png):

**완료 6셀:**
- `/home/jay/workspace/output/banners/cell-1-incar-fair/` (① 인카×정당한보상)
- `/home/jay/workspace/output/banners/cell-2-incar-leader/` (② 인카×관리자비전)
- `/home/jay/workspace/output/banners/cell-4-ga-fair/` (④ GA×정당한보상)
- `/home/jay/workspace/output/banners/cell-5-ga-leader/` (⑤ GA×관리자비전)
- `/home/jay/workspace/output/banners/cell-7-snu-fair/` (⑦ SNU×정당한보상)
- `/home/jay/workspace/output/banners/cell-8-snu-leader/` (⑧ SNU×관리자비전)

**제작 중 3셀 (task-1415.1 디자인팀 진행 중):**
- cell-3-incar-support (③ 인카×개인영업)
- cell-6-ga-support (⑥ GA×개인영업)
- cell-9-snu-support (⑨ SNU×개인영업)

## 수정 사항

### 1. campaign.json의 banner_matrix.banner_sets 업데이트
각 셀의 cell_id와 폴더명 매핑:
- `incar_fair` → cell-1-incar-fair
- `incar_leader` → cell-2-incar-leader
- `incar_support` → cell-3-incar-support (제작 중)
- `ga_fair` → cell-4-ga-fair
- `ga_leader` → cell-5-ga-leader
- `ga_support` → cell-6-ga-support (제작 중)
- `snu_fair` → cell-7-snu-fair
- `snu_leader` → cell-8-snu-leader
- `snu_support` → cell-9-snu-support (제작 중)

각 완료 셀의 banners 필드에 실제 파일 정보 추가:
```json
{
  "cell_id": "incar_fair",
  "label": "①인카×정당한대우",
  "status": "완료",
  "banners": {
    "meta-feed-sq": {
      "status": "완료",
      "path": "/api/banners/cell-1-incar-fair/meta-feed-1080x1080.png",
      "size": "1080x1080"
    },
    "google-resp-hori": {
      "status": "완료",
      "path": "/api/banners/cell-1-incar-fair/google-resp-1200x628.png",
      "size": "1200x628"
    }
  }
}
```

제작 중 셀은 `status: "제작중"`, `banners: {}` 유지.

### 2. 집계 필드 업데이트
- `total_banners_done`: 완료된 배너 수 (6셀 × 2사이즈 = 12)
- `status_summary`: `{"완료": 6, "제작중": 3, "미제작": 0}`
- `updated_at`: 현재 시각

### 3. banner_sets의 channel_specs와 정합성 확인
- channel_specs에 정의된 사이즈(meta-feed-sq, google-resp-hori 등)와 실제 배너 파일의 사이즈 ID가 일치하도록 매핑

### 4. 서버 재시작
- 대시보드 서버 재시작 (포트 8000)
- API 응답에서 업데이트 확인

## 참조
- `/home/jay/workspace/dashboard/data/campaign.json`
- `/home/jay/workspace/dashboard/components/CampaignSections.js` — bannerSets 사용 로직 (line 530~610)
- `/home/jay/workspace/output/banners/` — 실제 배너 파일

## 산출물
1. campaign.json 업데이트
2. 서버 재시작
3. API 응답 검증