# task-1124.1: 대시보드 봇 활동 상태 — 마케팅/컨설팅 팀 미표시 문제 분석 및 개선

**팀**: dev5-team (마르둑)
**일시**: 2026-03-27
**레벨**: Lv.2

---

## SCQA

**S**: 대시보드에서 dev1~dev8 팀의 봇 활동 상태(작업중/유휴)는 정상 표시되고 있으며, bot-activity.json에 marketing/consulting 엔트리도 이미 존재한다.

**C**: 그러나 마케팅/컨설팅 팀에 running task가 있어도 대시보드에서 "작업중"으로 표시된 적이 없다. 원인은 3곳의 하드코딩된 dev 전용 매핑에서 논리적 팀이 누락된 것이다.

**Q**: 기존 dev 팀과 동일한 수준으로 논리적 팀(마케팅/컨설팅)의 활동 상태를 대시보드에 표시할 수 있는가?

**A**: server.py의 `team_to_bot` 매핑과 `team_display` 목록, App.js의 봇 표시 배열에 marketing/consulting을 추가하여 해결. pytest 5건 전체 통과, pyright 에러 0건.

---

## 근본 원인 분석

3곳에서 dev 팀만 하드코딩되어 논리적 팀이 누락:

1. **`_enrich_bot_activity()` line 532-545**: `team_to_bot` 딕셔너리에 marketing/consulting 매핑 없음 → running task가 있어도 `has_running_tasks=True`가 설정되지 않음
2. **`/api/whisper-status` line 2929-2941**: `team_display` 리스트에 논리적 팀 없음 → 브리핑 요약에서 제외
3. **App.js line 231, 238**: 봇 목록 배열과 라벨 객체에 논리적 팀 없음 → UI에 표시 안 됨

---

## 수정 내용

### 1. server.py — `_enrich_bot_activity()` (line 543-544)
`team_to_bot` 딕셔너리에 추가:
```python
"marketing": "marketing",
"consulting": "consulting",
```

### 2. server.py — `/api/whisper-status` (line 2939-2940)
`team_display` 리스트에 추가:
```python
("marketing", "마케팅"),
("consulting", "컨설팅"),
```

### 3. App.js — 봇 활동 상태 UI (line 231, 238)
봇 배열에 `'marketing'`, `'consulting'` 추가, 라벨에 `marketing: '마케팅'`, `consulting: '컨설팅'` 추가.

---

## 생성/수정 파일 목록

- `/home/jay/workspace/dashboard/server.py` — 수정 (2곳: team_to_bot + team_display)
- `/home/jay/workspace/dashboard/components/App.js` — 수정 (2곳: 봇 배열 + 라벨)
- `/home/jay/workspace/teams/dev5/tests/test_bot_activity_enrichment.py` — 신규 (테스트 5건)

---

## 테스트 결과

pytest 5/5 PASSED (0.06s):
- `test_marketing_has_running_tasks_true_when_running` — PASSED
- `test_marketing_has_running_tasks_false_when_no_tasks` — PASSED
- `test_consulting_has_running_tasks_true_when_running` — PASSED
- `test_consulting_has_running_tasks_false_when_no_tasks` — PASSED
- `test_existing_dev1_team_still_works` — PASSED (회귀 방지)

pyright: 0 errors, 0 warnings (server.py)

---

## 발견 이슈 및 해결

### 자체 해결 (3건)
1. **server.py `team_to_bot` 누락** — marketing/consulting 매핑 2줄 추가
2. **server.py `team_display` 누락** — marketing/consulting 튜플 2줄 추가
3. **App.js 봇 목록/라벨 누락** — 배열과 객체에 각각 2개 항목 추가

### 범위 외 미해결 (2건)
1. **publishing/design 팀 미포함** — 범위 외 사유: bot-activity.json에 해당 엔트리가 아직 없으며, 현재 운영되지 않는 팀. 운영 시작 시 bot-activity.json에 엔트리 추가 + 동일 패턴으로 매핑 추가 필요.
2. **테스트 파일 pyright import 경고** — sys.path 동적 조작으로 인한 정적 분석 한계. `# pyright: ignore[reportMissingImports]` 처리. 런타임 정상 동작 확인.

---

## 셀프 QC 체크리스트

- [x] 1. 영향 파일: server.py, App.js (양쪽 모두 수정 완료)
- [x] 2. 엣지 케이스: bot-activity.json에 엔트리 없는 팀은 기존 로직이 방어 (bots dict에 없으면 skip)
- [x] 3. 작업 지시 일치: "마케팅/컨설팅 팀 작업중 표시" 구현 완료
- [x] 4. 에러 처리/보안: 기존 패턴 유지, 추가 입력 없음
- [x] 5. 테스트 커버리지: running/idle 경로 + 회귀 방지 5건
- [x] 6. 이슈 자체 해결: 3건 해결, 2건 범위 외
- [x] 7. 아키텍처 원칙: 매핑 추가만 (OCP 준수, 기존 처리 로직 수정 없음)
- [x] 8. 인터페이스 변경: API 응답에 additive change만 (기존 소비자 영향 없음)
