# task-432.1: FastAPI 모드 누락 API 엔드포인트 동기화 — 완료 보고서

## 작업 요약
`/home/jay/workspace/dashboard/server.py`의 `start_fastapi()` 메서드에 SimpleHTTP 핸들러에만 있고 FastAPI 라우터에 누락된 API 엔드포인트 7개 + PWA 정적 파일 서빙 3개를 추가했습니다.

## 수정 파일
- `/home/jay/workspace/dashboard/server.py` — `start_fastapi()` 메서드 (line 1683~)

## 변경 내용

### Import 추가 (line 1686~1687)
- `from fastapi import FastAPI` → `from fastapi import FastAPI, Query, Request`
- `from fastapi.responses import FileResponse` → `from fastapi.responses import FileResponse, JSONResponse`

### 추가된 엔드포인트 (line 1758~1911)

| # | 엔드포인트 | 메서드 | 설명 |
|---|-----------|--------|------|
| 1 | `/api/task-detail/{task_id}` | GET | 특정 task 상세 정보 조회 |
| 2 | `/api/recent-tasks` | GET | 최근 태스크 15개 조회 |
| 3 | `/api/reload` | GET | 전체 데이터 리로드 |
| 4 | `/api/todo` | GET | todo 목록 조회 (project/status 필터) |
| 5 | `/api/todo` | POST | todo 이슈 생성 (id 자동생성, sub_items 처리) |
| 6 | `/api/todo/{issue_id}` | PUT | todo 이슈 수정 (sub_done, 자동완료 로직) |
| 7 | `/api/todo/{issue_id}` | DELETE | todo 이슈 삭제 |
| 8 | `/dashboard/manifest.json` | GET | PWA manifest 서빙 |
| 9 | `/dashboard/sw.js` | GET | Service Worker 서빙 |
| 10 | `/dashboard/icon-{name}.png` | GET | PWA 아이콘 서빙 |

### SimpleHTTP ↔ FastAPI 동기화 확인

기존 FastAPI에 이미 있던 엔드포인트:
- `/api/status`, `/api/stats`, `/api/org`, `/api/teams`, `/api/tasks`
- `/api/tech-debt`, `/api/ci-status`, `/api/member-status`
- `/api/bot-activity`, `/api/previews`, `/api/project-tasks`, `/api/system-status`

## 테스트 결과
- **문법 검증**: `py_compile.compile()` — 통과
- **타입 체크**: `pyright` — 0 errors (FastAPI 데코레이터 패턴에 의한 "not accessed" 경고는 기존 엔드포인트도 동일하게 발생하는 오탐)
- Lv.1 작업이므로 별도 단위테스트 불필요

## 셀프 QC
- [x] 영향 파일: server.py 1개만 수정
- [x] 엣지 케이스: task_id 미존재, todo 빈 필터, issue_id 미존재 → 모두 SimpleHTTP와 동일 처리
- [x] 작업 지시 일치: 누락된 엔드포인트 전부 추가 + PWA 파일 서빙 추가
- [x] 에러 처리: 400/404 JSONResponse 반환
- [x] 테스트 커버리지: Lv.1 단순 동기화 작업

## 버그/비고
- 없음
