# 대시보드 완료 Todo 조회 기능 버그 수정

## 배경
task-866.1에서 완료된 Todo 이슈 조회 기능을 구현했으나, 실제 동작하지 않는 버그가 있음.

## 현상
1. **진행/완료/전체 탭 클릭 불가** — 제이회장님 브라우저에서 탭이 클릭되지 않음
2. **카운트 오류** — "진행 0 / 완료 14 / 전체 14"로 표시되나, 실제 데이터는 Active 33 / Done 4 / Total 37
3. **완료 이슈가 진행중 탭에 혼재** — Phase 1~3 (sub_items 미완료)이 완료 탭에 표시

## 원인 분석 (아누가 1차 진단 완료)

### 원인 1: API 핸들러 중복
- `dashboard/server.py`에 todo API 핸들러가 **2개** 존재
- 라인 1249: 구 핸들러 (SimpleHTTPRequestHandler 기반) — `include_done` 파라미터만 지원
- 라인 2415: 신 핸들러 (FastAPI 기반) — `status` 파라미터 지원
- 구 핸들러가 먼저 매칭되어 신 핸들러에 도달 불가
- **아누가 구 핸들러에 status 필터 로직 추가 완료** (라인 1251~1261)

### 원인 2: PWA Service Worker 캐시
- sw.js의 CACHE_NAME이 "dashboard-v3"이었음
- **아누가 "dashboard-v5"로 업데이트 완료**

### 원인 3 (미해결): 프론트엔드 렌더링 문제
- Playwright 검증에서는 프로젝트뷰 탭 전환 후 진행중/완료/전체 탭이 정상 동작 확인
- 그러나 제이회장님 브라우저(모바일?)에서는 여전히 클릭 불가
- **Babel in-browser 변환** + **React CDN** 조합에서 특정 브라우저/버전에서 이벤트 바인딩 실패 가능성

## 해결 과제

### 1. 구 핸들러 vs 신 핸들러 충돌 완전 해결
- 구 핸들러(라인 1249)와 신 핸들러(라인 2415)를 통합
- 하나의 핸들러만 남기거나, 라우팅 우선순위를 명확히
- 두 핸들러가 동시에 존재하면 혼란 유발

### 2. 프론트엔드 탭 클릭 문제 수정
- `<button>` 태그에 명시적 `cursor-pointer` 클래스 추가
- 모바일에서 터치 이벤트 정상 동작 확인
- Babel 변환 후 실제 렌더링되는 HTML에서 onClick 이벤트가 바인딩되는지 검증
- 가능하면 Playwright로 모바일 뷰포트(375x812) 테스트

### 3. 카운트 정확성 확인
- `doneIssueCount` 계산 로직이 API 응답의 전체 데이터를 기반으로 하는지 확인
- `fetch('/api/todo?status=all')`이 실제로 전체 37개를 반환하는지 검증
- 프로젝트별 필터링 시 카운트도 정확한지 확인

### 4. 검증
- Playwright로 데스크탑 + 모바일 뷰포트 모두 테스트
- 탭 전환 → 이슈 목록 변경 → 클릭하여 상세 펼침 → linked_tasks 클릭 시 보고서 모달 → 모든 흐름 검증
- 서버 재시작 후 브라우저 하드 리프레시 없이도 최신 버전이 적용되는지 확인

## 참고 파일
- `/home/jay/workspace/dashboard/server.py` — 백엔드
- `/home/jay/workspace/dashboard/index.html` — 프론트엔드
- `/home/jay/workspace/dashboard/sw.js` — Service Worker (현재 v5)

## 산출물
- 수정된 서버/프론트엔드 파일
- Playwright 테스트 결과 (데스크탑 + 모바일 스크린샷)
- 보고서: `memory/reports/task-{task_id}.md`