# task-1033.1 완료 보고서: 대시보드 캠페인뷰 고도화 — 실시간 체크리스트 + 예산 연동

## SCQA

**S**: 대시보드 캠페인뷰(CampaignView.js)가 campaign.json의 10개 하드코딩 체크리스트만 표시하며, 실제 실행 체크리스트(recruiting-campaign-checklist.md, 119항목)와 연동되지 않고 예산 집행 현황도 없었다.

**C**: 제이회장님 피드백 "실행 체크리스트, 예산검토가 연동되어야 한다"에 따라, 하드코딩 체크리스트를 실제 MD 파일 동적 파싱으로 교체하고 예산 집행 추적 기능이 필요했다.

**Q**: MD 파일(182줄, 4개 Phase + 컴플라이언스 + KPI)을 동적으로 파싱하여 대시보드에서 실시간 체크/토글 + 예산 집행 현황을 표시할 수 있는가?

**A**: server.py에 MD 파싱 + 토글 API, CampaignView.js에 Phase별 아코디언 + 예산 섹션을 구현하여 119개 체크리스트 항목을 동적 연동 완료. GET /api/campaign 응답에서 phase별 완료율 자동 계산, POST /api/campaign/checklist로 MD 파일 직접 수정 확인. pyright 0 errors, API 테스트 GET/POST 모두 정상.

## 수정 파일

- `/home/jay/workspace/dashboard/server.py` — `_parse_checklist_md()`, `_toggle_checklist_item()` 메서드 추가, `_get_campaign_data()` 교체, `POST /api/campaign/checklist` 엔드포인트 추가 (+175줄)
- `/home/jay/workspace/dashboard/components/CampaignView.js` — Phase별 아코디언 UI, 체크박스 토글 핸들러, 예산 집행 현황 섹션, 기존 flat 배열 fallback (235줄 → 430줄, +195줄)
- `/home/jay/workspace/dashboard/data/campaign.json` — `budget_tracking` 필드 추가 (채널별 집행 금액 구조)

## 테스트 결과

- **pyright**: 0 errors, 0 warnings, 0 informations
- **문법 검증**: `ast.parse()` SYNTAX OK
- **파싱 테스트**: 4 Phases (46+18+21+17), 컴플라이언스 10, KPI 7 = 총 119항목 정상 파싱
- **GET /api/campaign**: checklist가 새 구조(phases 포함)로 반환, budget_tracking 포함 확인
- **POST /api/campaign/checklist**: `{"phase":0, "index":0, "done":true}` → MD 파일 `- [x]` 변환 확인, done 카운트 1 증가 확인
- **토글 원복 검증**: `done: false`로 재토글 → `- [ ]` 원복 확인

## 발견 이슈 및 해결

### 자체 해결 (3건)

1. **Phase명에 기간 정보 포함** — MD의 `## Phase 0: 인프라 준비 (Week 1~2)` 파싱 시 "(Week 1~2)"가 이름에 포함됨. UI에서 오히려 유용한 정보이므로 의도적으로 유지 결정.
2. **기존 flat 배열 하위 호환** — API가 새 구조를 반환하지 못할 때(파싱 실패 등) 기존 campaign.json의 flat 배열이 그대로 사용됨. CampaignView.js에서 `isNewChecklist` 분기로 두 구조 모두 렌더링 가능하게 처리.
3. **MD 파일 토글 시 줄바꿈 보존** — `splitlines()` + `"\n".join()` 패턴으로 원본 줄바꿈 유지 확인. 테스트에서 원복 후 diff 없음 검증.

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

## 완료 조건 체크

- [x] 체크리스트가 MD 파일에서 동적으로 읽혀옴 (119항목)
- [x] Phase별 완료율 자동 계산 및 표시 (Phase 0~3 + 컴플라이언스 + KPI)
- [x] 체크박스 클릭 시 MD 파일 실제 업데이트 (POST API + 파일 수정 확인)
- [x] 예산 집행 현황 섹션 표시 (budget_tracking + 채널별 금액)
- [x] 대시보드에서 캠페인뷰 정상 동작 확인 (API GET/POST 테스트 통과)

## QC 자동 검증

아래에서 실행.
