# task-875.1: do_GET / FastAPI 핸들러 통합 리팩터링

## S - Situation
`dashboard/server.py`에 SimpleHTTPRequestHandler 기반 구 핸들러(do_GET)와 FastAPI 기반 신 핸들러(start_fastapi)가 공존하여 28개 API 엔드포인트가 이중 구현(2633행 중 430행이 중복 코드)되어 있었다.

## C - Complication
두 핸들러가 동일 엔드포인트를 처리하는 구조로, 한쪽만 수정 시 다른 쪽과 불일치가 발생한다. 실제로 `/api/stream` SSE 감시 대상이 양쪽에서 다르고(구: groupchat 포함 8개 파일, 신: groupchat 누락 6개 파일), task-871.1의 status 필터 패치도 구 핸들러에만 적용되어 FastAPI 모드에서는 동작이 달랐다.

## Q - Question
두 핸들러를 하나로 통합하여 유지보수 부담을 줄이고 라우팅 충돌 위험을 제거할 수 있는가?

## A - Answer
구 핸들러(do_GET) 기준으로 통합 완료. FastAPI에만 있던 `/api/report/{task_id}` 엔드포인트를 do_GET에 이관한 후, `start_fastapi()` 및 `check_fastapi()` 메서드(430행)를 전량 삭제. 서버는 항상 SimpleHTTPRequestHandler 모드로 실행된다. pyright 0 errors, pytest 58 passed (5 pre-existing failures), 파일 크기 2633행 → 2200행 (433행 감소).

---

## 변경 파일

- `/home/jay/workspace/dashboard/server.py` — 핸들러 통합 (24 insertions, 430 deletions)
- `/home/jay/workspace/dashboard/sw.js` — 캐시 버전 v6 → v7

## 변경 상세

### 1. `/api/report/<task_id>` 엔드포인트 추가 (server.py:1249-1261)
- FastAPI 핸들러에만 있던 유일한 고유 API를 do_GET에 이관
- path traversal 방지 (`..`, `/` 체크), 404 처리 포함

### 2. FastAPI 코드 전량 제거
- `check_fastapi()` 메서드 (9행) 삭제
- `start_fastapi()` 메서드 (428행) 삭제 — 28개 중복 엔드포인트 포함
- `start()` 메서드 단순화: 항상 `start_simple()` 호출

### 3. FastAPI 업그레이드 안내 메시지 제거
- `start_simple()` 내 "ℹ️ FastAPI 모드로 업그레이드:" 안내 2행 삭제

### 4. SW 캐시 버전 범프
- `sw.js`: `dashboard-v6` → `dashboard-v7`

---

## 검증 결과

- **pyright**: 0 errors, 0 warnings, 0 informations
- **pytest (dashboard/test_server.py)**: 58 passed, 5 failed (전체 pre-existing)
- **pytest (dashboard/tests/test_server.py)**: 6 passed
- **black/isort**: OK
- **라이브 API 검증** (현재 FastAPI 모드 실행 중):
  - `/api/status`: 200 OK
  - `/api/todo`: 33 issues (done 제외 정상)
  - `/api/todo?status=done`: 4 done issues
  - `/api/todo?status=all`: 37 전체 issues
  - `/api/report/task-875.1`: 404 (보고서 미작성 시점, 정상)

## 발견 이슈 및 해결

### 자체 해결 (3건)
1. **task-871.1 status 필터 미커밋 상태** — 작업 트리에 이미 있던 status_filter 변경을 보존하여 통합
2. **FastAPI `/api/stream` groupchat 감시 누락** — 구 핸들러의 완전한 감시 목록이 유지되므로 통합으로 자동 해결
3. **FastAPI 업그레이드 안내 메시지 잔존** — 더 이상 불필요하므로 삭제

### 범위 외 미해결 (1건)
1. **기존 테스트 5건 실패** — MediScan 프로젝트/dev4 봇 추가, workflow 분류 로직 변경, timezone Z suffix 처리 등 선행 작업에서 발생한 테스트 불일치. 본 작업 범위 외.
   - `test_fixed_project_order`: MediScan 추가로 고정 순서 불일치
   - `test_returns_bots`, `test_bot_ids`: dev4 봇 추가로 개수 불일치
   - `test_workflow_classified_as_anu`: 분류 로직 변경
   - `test_timezone_aware_since_not_stuck_working`: timezone Z suffix 처리

---

## 참고사항
- 서버 재시작 필요: 현재 실행 중인 서버는 변경 전 코드 사용. 재시작 후 Simple HTTP 모드로 전환됨
- `dashboard/test_server.py`의 5건 기존 실패는 별도 작업에서 테스트 갱신 필요
