# task-1854 완료 보고서: 신호등 체계 수정 — 팀원 대기(노란) 상태 구현

## SCQA

**S**: 대시보드 신호등 체계에서 팀에 task가 할당되면 팀장은 작업중(초록)으로 표시되지만, 팀원의 상태 표시에 대기(노란) 분기가 누락되어 있다.

**C**: 팀원이 대기(노란)가 아닌 유휴(회색)로 표시되는 버그가 존재. 백엔드 `get_member_status()`에서 `is_lead` 파라미터가 미사용되고, 프론트엔드 `MemberRow`에서 팀원 standby 분기가 없음.

**Q**: 백엔드와 프론트엔드 양쪽의 상태 분기를 수정하여 팀원이 대기(노란)로 정확히 표시되게 할 수 있는가?

**A**: 2개 파일의 각 1줄씩 수정하여 해결 완료. 백엔드 `get_member_status()`에서 `has_running` 시 `is_lead` 분기 추가, 프론트엔드 `MemberRow`에서 `hasRunningTasks` 시 팀장/팀원 분기 추가. 테스트 3건 신규 추가, 기존 74건 전체 PASS, 회귀 0건.

## 수정 내역

### Bug 1: 백엔드 data_loader.py (line 909-910)
- **변경 전**: `if has_running: return "working"`
- **변경 후**: `if has_running: return "working" if is_lead else "standby"`
- 파일: `/home/jay/workspace/dashboard/data_loader.py:909-910`

### Bug 2: 프론트엔드 utils.js (line 140-141)
- **변경 전**: `} else if (hasRunningTasks && isLead) { resolvedStatus = 'working'; }`
- **변경 후**: `} else if (hasRunningTasks) { resolvedStatus = isLead ? 'working' : 'standby'; }`
- 파일: `/home/jay/workspace/dashboard/components/utils.js:140-141`
- StatusDot에 `standby → bg-amber-400(노란)` 매핑이 이미 존재하여 추가 수정 불필요

### 테스트 추가: test_server.py
- `TestMemberStandbyStatus` 클래스 신규 추가 (3건)
  - `test_lead_working_when_team_has_running_task` — 팀장 working 검증
  - `test_member_standby_when_team_has_running_task` — 팀원 standby 검증
  - `test_all_idle_when_no_running_task` — task 없는 팀 전원 idle 검증
- 파일: `/home/jay/workspace/dashboard/test_server.py:659-745`

## 발견 이슈 및 해결

### 자체 해결 (1건)
1. **테스트 데이터 필드명 불일치** — `task-timers.json` 스키마에서 `team` → `team_id`, `started_at` → `start_time`으로 수정
   - 상세: `test_server.py:673-682` 테스트 fixture의 task 데이터 필드명이 실제 `get_running_tasks_by_team()`이 읽는 필드명과 불일치

### 범위 외 미해결 (2건)
1. **`system_monitor` 모듈 미설치** — `TestGetGpuStats` 6건 실패. 범위 외 사유: 별도 모듈 설치 필요, 본 작업과 무관
2. **pyright `dashboard.server` import 미해석** — 테스트 전체에 걸친 pre-existing 이슈. 범위 외 사유: pytest 실행 환경에서는 정상 동작, pyright 설정 문제

## 검증 결과

- pytest: **74 passed**, 6 failed (기존 system_monitor 미설치 이슈, 본 작업 범위 외)
- 신규 테스트: 3/3 PASS
- 기존 테스트 회귀: 0건
- 대시보드 API 확인: `/api/reload` 성공, `/api/teams` 응답 정상
- `member-status.json`에 개별 상태가 없는 멤버에 대해 `get_member_status()` 로직이 `has_running` → `is_lead` 분기를 올바르게 처리

## 산출물 파일

- `/home/jay/workspace/dashboard/data_loader.py`
- `/home/jay/workspace/dashboard/components/utils.js`
- `/home/jay/workspace/dashboard/test_server.py`

## 모델 사용 기록

- 팀원: 토르(백엔드) / 작업: data_loader.py bugfix / 모델: sonnet
- 팀원: 프레이야(프론트엔드) / 작업: utils.js bugfix / 모델: sonnet
- 팀원: 헤임달(테스터) / 작업: standby 테스트 3건 추가 / 모델: sonnet

## 세션 통계
- 총 도구 호출: 13회

### 수정 파일 목록
- bash_cmd: 7회 (Bash)
- /home/jay/workspace/dashboard/test_server.py: 2회 (Edit)
- /home/jay/workspace/dashboard/components/utils.js: 1회 (Edit)
- /home/jay/workspace/dashboard/data_loader.py: 1회 (Edit)
- /home/jay/workspace/memory/reports/task-1854.md: 1회 (Write)
- /home/jay/workspace/memory/tasks/task-1854.md: 1회 (dispatch)

### 도구 사용 현황
- Bash: 7회
- Edit: 4회
- Write: 1회
- dispatch: 1회

