# 보고서: task-122.1 — 대시보드 상단 바 vs 팀 상세 상태 불일치 수정

## 작업 요약
- **작업 ID**: task-122.1
- **참조 작업**: task-120.1
- **팀**: dev3-team
- **팀장**: 라(Ra)
- **담당**: GLM-5 (오픈클로)
- **소요 시간**: 4분 40초
- **완료 시각**: 2026-03-02T19:02:09

## GLM 작업 결과 평가

### 작업 품질: 양호 (수정 없이 통과)

**server.py 수정** (678-716행):
- `/api/bot-activity` 엔드포인트에 `has_running_tasks` 필드 추가
- `get_running_tasks_by_team()` 활용으로 stale 필터링 자동 적용
- team_to_bot 매핑: dev1-team→dev1, dev2-team→dev2, dev3-team→dev3, anu-direct→anu
- bot-activity.json에 없는 봇도 running task 존재 시 기본 엔트리 자동 생성

**index.html 수정** (377-378행):
- `isProcessing = bot?.status === 'processing' || bot?.has_running_tasks === true`
- 기존 로직 완전 유지, OR 추가만 — 지시서 준수

## 검토 중 수정 사항
- task-120.1.md 보고서 GLM이 미생성 → 팀장(라)이 직접 작성
- 이외 코드 수정 사항 없음

## 생성/수정 파일 목록
- `/home/jay/workspace/dashboard/server.py` — 수정 (GLM)
- `/home/jay/workspace/dashboard/index.html` — 수정 (GLM)
- `/home/jay/workspace/memory/events/task-120.1.done` — 생성 (GLM)
- `/home/jay/workspace/memory/events/task-122.1.done` — 생성 (GLM, 이미 삭제)
- `/home/jay/workspace/memory/reports/task-120.1.md` — 생성 (팀장 직접)
- `/home/jay/workspace/memory/reports/task-122.1.md` — 본 보고서 (팀장)
- `/home/jay/workspace/teams/dev3/plan-task-122.1.md` — 계획서 (팀장)

## 팀장 검토 결과
- **GLM 결과물 — server.py**: 1차 검토 통과, 수정 사항 없음. 지시서의 모든 요구사항 충족.
- **GLM 결과물 — index.html**: 1차 검토 통과, 수정 사항 없음. OR 조건 추가 정확, optional chaining으로 null 안전성 확보.
- **GLM 결과물 — 보고서**: 미생성. 팀장이 task-120.1.md 보완 작성.

## 셀프 QC

1. **다른 파일 영향**: server.py와 index.html만 수정. 다른 팀 디렉토리, 다른 API 엔드포인트 영향 없음.
2. **엣지 케이스**: bot-activity.json 없거나 봇 미등록 시 자동 엔트리 생성 처리. stale task 필터링은 기존 get_running_tasks_by_team()이 담당.
3. **구현이 지시와 일치**: task-120.1.md의 수정 1, 수정 2 모두 정확히 구현됨. 기존 로직 유지 주의사항도 준수.
4. **에러 처리**: bot_activity_data가 None일 때 빈 dict 대체. copy()로 원본 보호. index.html은 optional chaining으로 undefined 안전 처리.
5. **테스트 커버리지**: 유닛테스트 별도 없음. 핵심 기능이 OR 조건 추가로 단순하고, task-timers.json의 running task가 있을 때 상단 바 표시 여부로 실제 검증 가능.

## 검토한 대안과 기각 사유
- **대안 1**: bot-activity.json을 주기적으로 업데이트하는 별도 프로세스 추가 → 복잡성 증가, 지시서 범위 초과. 기각.
- **대안 2**: index.html에서 직접 task-timers.json API를 추가 호출 → 프론트엔드 변경 최소화 원칙 위반. 기각.
- **채택**: server.py의 기존 API 응답에 has_running_tasks 필드 추가 — 가장 단순하고 안전한 방식.
