**task-1035.1 완료 보고** (dev5-team) **완료 보고서: 대시보드 캠페인뷰 UI 수정 — 채널+예산 통합 표시** (4분 19초) **핵심 결과** CampaignView.js 1개 파일을 수정하여 3가지 변경을 완료했다. (1) formatWon 함수를 3단계 분기(원/만원/억원)로 개선하여 소수점 1자리 표시 지원, (2) 채널 카드에 "한도: XX만원/월" + 집행 바 게이지 "XX만원(XX%)" 통합, (3) 캠페인 개요 섹션에 "이번 달 집행" 블록 추가. 기존 예산 집행 현황 별도 섹션은 완전 제거. ## 수정 파일 - `/home/jay/workspace/dashboard/components/CampaignView.js` (430줄 → 412줄) ## 변경 상세 ### 1. formatWon 함수 (라인 4~15) - 기존: 10,000 이상은 일괄 `Math.round(n/10000) + '만원'` (정수만) - 변경: 3단계 분기 - `n >= 100,000,000`: "1.2억원" (소수점 1자리, .0이면 정수) - `n >= 10,000`: "12.3만원" (소수점 1자리, .0이면 정수) - 그 외: "8,500원" (콤마 포맷) ### 2. 섹션 1 캠페인 개요 (라인 116~126) - "이번 달 집행" 블록 추가 (emerald 계열 색상) - `budget_tracking.total_spent / budget.monthly * 100` 퍼센트 표시 - `budget_tracking` 없을 때 조건부 렌더링으로 안전 처리 ### 3. 채널 카드 통합 (라인 131~164) - 기존 `budget_pct` 기반 비율 바 → `channel_spent / monthly_budget` 기반 집행 바로 교체 - **발견/해결 이슈 3건** 1. **formatWon에서 소수점 처리 미흡** — `val % 1 === 0` 체크로 "90만원"(정수)과 "12.3만원"(소수) 자동 분기 2. **channel_spent 키 미존재 시 NaN 발생 가능** — `(data.budget_tracking?.channel_spent?.[ch.id]) || 0` 으로 안전 fallback 처리 3. **monthly_budget이 0일 때 division by zero** — `ch.monthly_budget ? Math.min(100, Math.round(spent / ch.monthly_budget * 100)) : 0` 삼항 연산자로 방어