# task-93.1 대시보드 개선: 중간 적용 파악 + 아누 상태 + 팀원 단위 상태

## 기본 정보
- **Task ID**: task-93.1
- **팀**: dev2-team (오딘)
- **작업일**: 2026-03-02
- **상태**: 완료

## Phase 0: 현황 파악

task-88.1에서 의도한 16개 UX 개선사항이 모두 현재 index.html(480줄)에 적용되어 있음을 확인.
미적용 항목 없음. Phase 1 스킵.

## Phase 2: 아누(개발실장) 상태 반영

### 백엔드 (server.py)
- `get_member_status()` 수정: Anu(id="anu") 처리 시 `anu-direct` team_id의 running 작업 유무로 상태 결정
  - running 작업 있음 → `working`
  - 없음 → `idle`

### 프론트엔드 (index.html)
- 헤더의 아누 영역에 StatusDot 추가
- `running.some(t => t.team_id === 'anu-direct')` 로 실시간 상태 계산
- /api/org의 raw 데이터 대신 실제 running tasks 기반 상태 표시

## Phase 3: 팀원 단위 실시간 상태

### 데이터 구조 설계
`memory/events/member-status.json` 스키마:
```json
{
  "members": {
    "member_id": {
      "status": "working|idle",
      "task": "현재 작업 설명",
      "team": "dev1-team",
      "updated_at": "2026-03-02T16:00:00"
    }
  },
  "updated_at": "2026-03-02T16:00:00"
}
```

### 백엔드 (server.py)
- `DataLoader.load_member_status()` 메서드 추가: `memory/events/member-status.json` 로드
- `reload_all()`에 `load_member_status()` 추가 (캐시 TTL 그대로 유지)
- `get_member_status()` 수정: member-status.json 개별 상태 우선 적용 → 팀 레벨 fallback
- `/api/member-status` GET 엔드포인트 추가 (Basic Auth 적용)

### 프론트엔드 (index.html)
- `memberStatus` state 추가 + fetchData에서 `/api/member-status` fetch
- API 실패 시 `.catch(() => null)` + try/catch로 안전 처리
- `MemberRow` 컴포넌트: member.id로 개별 상태 조회, 작업명 표시 (작업중 시)
- `TeamCard` 컴포넌트: memberStatus prop 전달
- UX: 작업명은 `text-[10px] text-slate-400 truncate max-w-[120px]` 스타일

## 수정/생성 파일 목록
- **수정**: `/home/jay/workspace/dashboard/server.py` (726줄 → 759줄)
- **수정**: `/home/jay/workspace/dashboard/index.html` (480줄 → 495줄)
- **생성**: `/home/jay/workspace/memory/events/member-status.json` (빈 초기 상태)

## 테스트 결과
- Python 문법 검사: PASS
- 서버 재시작: PASS (PID 정상)
- `/api/stats`: PASS (20명 인원, 통계 정상)
- `/api/org`: PASS (5개 팀 로드)
- `/api/member-status`: PASS (정상 응답)
- `/api/tasks`: PASS (126개 작업)
- 아누 상태: PASS (anu-direct running 작업 기반 working/idle 정확)
- member-status 통합: PASS (테스트 데이터로 개별 상태 반영 확인)
- 대시보드 HTML 로드: PASS

## 버그
- 발견된 버그 없음

## 비고
- 팀장 측 기록 로직(Task tool → member-status.json 기록)은 1팀 team_prompts.py에서 처리 예정
- 본 작업은 **읽기 + 표시** 부분만 구현 완료
- member-status.json이 없어도 기존 팀 레벨 상태 로직으로 정상 동작
- 서버 포트 8000에서 정상 운영 중
