# task: 대시보드 개발팀 카드 — composite 작업 시 "복합팀 작업중" 표시

## 배경
현재 composite(마케팅+디자인) 작업을 7개 봇에서 동시 실행 중인데,
각 봇의 **개발팀 카드에 "대기중"으로 표시**됨. "마케팅+디자인 작업중"이어야 함.

논리적 팀 카드(마케팅/디자인)에는 "N팀봇 사용중" 정상 표시 중.

## 원인
dashboard/server.py의 `_enrich_bot_activity()`에서:
- task-timers.json의 `team_id: "marketing"` → LOGICAL_TEAM_LABELS에 매핑 → 개발팀 카드에 "마케팅팀 작업중" ✅
- task-timers.json의 `team_id: "composite"` → LOGICAL_TEAM_LABELS에 없음 → 매핑 실패 → "대기중" ❌

composite 태스크는 `team_id: "composite"`이고, `composite_teams: ["marketing", "design"]` 필드가 별도로 존재.

## 수정 사항

### server.py — `_enrich_bot_activity()` 수정
현재 로직:
```python
task_team_id = task.get("team_id", "")
logical_label = LOGICAL_TEAM_LABELS.get(task_team_id)
if logical_label:
    bots[dev_id]["logical_team_using"] = logical_label
```

수정 방향:
```python
task_team_id = task.get("team_id", "")
if task_team_id == "composite":
    # composite_teams 필드에서 팀 이름들을 가져와서 표시
    composite_teams = task.get("composite_teams", [])
    if composite_teams:
        labels = [LOGICAL_TEAM_LABELS.get(t, t) for t in composite_teams]
        bots[dev_id]["logical_team_using"] = "+".join(labels)  # "마케팅팀+디자인팀"
else:
    logical_label = LOGICAL_TEAM_LABELS.get(task_team_id)
    if logical_label:
        bots[dev_id]["logical_team_using"] = logical_label
```

### task-timers.json 확인
composite 태스크에 `composite_teams` 필드가 실제로 기록되는지 확인.
안 되어 있으면 dispatch.py의 composite 경로에서 해당 필드 기록하도록 수정.

### 프론트엔드 확인
- `dashboard/components/utils.js`의 TeamCard에서 `logicalTeamUsing`이 "마케팅팀+디자인팀" 같은 합성 문자열도 정상 표시하는지 확인

## 테스트
- 현재 task-1215.1 ~ 1221.1이 composite로 돌고 있으므로 수정 후 즉시 확인 가능
- 대시보드 새로고침 후 해당 개발팀 카드에 "마케팅팀+디자인팀 작업중" 표시 확인

## 주의
- server.py는 대용량 파일 → offset/limit 분할 읽기 필수
- 기존 단일 논리적 팀(marketing, design 등) 표시가 깨지면 안 됨
