# task-112.1 실행 계획서 - 대시보드 server.py 버그 수정 (B4 TTL 체크)

## 대상 파일
- /home/jay/workspace/dashboard/server.py

## 서브태스크 분해 및 팀원 배정

### Phase 1: 백엔드 버그 수정 (불칸)
1. **Bug 1 - get_member_status() TTL 체크 (line 389)**
   - member-status.json의 working 상태에 대해 `since` 타임스탬프와 현재 시간 비교
   - 30분 초과 시 working 상태를 무시하고 다음 로직으로 진행
   - datetime 파싱 필요 (ISO format 가정)

2. **Bug 2 - get_running_tasks_by_team() TTL 체크 (line 364)**
   - running 상태 태스크의 `start_time`과 현재 시간 비교
   - 2시간(7200초) 초과 시 stale로 판단하여 running 목록에서 제외
   - datetime 파싱 필요

3. **Bug 3 - load_member_status() 자동 복구 (line 130)**
   - JSON 파싱 실패 시 빈 초기값(`{"members":{}}`)으로 파일 자동 리셋
   - 경고 로그 출력 (print + warning)
   - 파일 쓰기 실패에 대한 fallback 처리

### Phase 2: 테스트 (아르고스)
- 3가지 버그 수정에 대한 단위 테스트 작성
- 엣지 케이스 포함: 정확히 30분, 정확히 2시간, 잘못된 타임스탬프 형식 등

## 실행 순서
1. 불칸: 3가지 버그 동시 수정 (단일 파일이므로 일괄 처리)
2. 아르고스: 수정된 코드에 대해 테스트 작성 및 실행

## 예상 위험
- 타임스탬프 형식 불일치: ISO format 외 다른 형식이 있을 수 있음 → try/except로 방어
- JSON 파일 쓰기 권한 문제: 파일 쓰기 실패 시에도 메모리 내 빈 dict 사용 → 서버 동작 보장

## 검토 대안
- **대안 1 (기각)**: TTL을 환경변수로 설정 가능하게 → 지시서에 30분/2시간 고정값 명시, 불필요한 복잡도
- **대안 2 (기각)**: member-status.json에 TTL 필드 추가 → 기존 데이터 스키마 변경 필요, 범위 초과
- **대안 3 (채택)**: 코드 내 상수로 TTL 정의, datetime 비교로 stale 판단
