# task: 대시보드 캠페인뷰 동적화 + 디자인팀 스킬명 표시

## 목표 2건

### 1. 캠페인뷰 동적화
server.py의 `_get_campaign_data()` 하드코딩 데이터를 JSON 파일로 분리.

**작업:**
- `/home/jay/workspace/dashboard/data/campaign.json` 파일 생성 (기존 하드코딩 데이터 그대로)
- `_get_campaign_data()`를 수정: JSON 파일에서 읽어 반환. 파일 없으면 빈 dict 반환.
- data 디렉토리 없으면 생성

**참조:** server.py line 2644~2730 `_get_campaign_data()` 메서드

### 2. 디자인팀 스킬명 표시
논리적 팀 카드(LogicalTeamCard)에서 `mapped_skill` 필드가 있으면 역할 뒤에 스킬명을 표시.

**현재:** "템플릿 디자인 / 래스터 렌더링"
**목표:** "템플릿 디자인 / 래스터 렌더링 / Satori"

**스킬명 매핑 (표시용):**
- satori-cardnews → "Satori"
- gemini-image → "Gemini"
- hybrid-image → "Hybrid"
- canvas-design → "Canvas"

**작업:**
- App.js의 LogicalTeamCard 컴포넌트에서 member.mapped_skill이 있으면 role 뒤에 " / {스킬명}" 추가
- 스킬명은 위 매핑 또는 mapped_skill 값 그대로 fallback

## 수정 파일
- `/home/jay/workspace/dashboard/server.py` (line 2644~)
- `/home/jay/workspace/dashboard/components/App.js` (LogicalTeamCard)
- `/home/jay/workspace/dashboard/data/campaign.json` (신규)

## 완료 조건
- [ ] campaign.json 파일에서 데이터 읽기 동작 확인
- [ ] 대시보드 캠페인뷰 정상 표시 확인
- [ ] 디자인팀 카드에 스킬명 표시 확인
