# 작업: FastAPI 모드에 groupchat API 엔드포인트 추가

## 목적
대시보드가 FastAPI 모드로 실행 중인데 groupchat API가 SimpleHTTP 핸들러에만 구현되어 있어 404 반환. FastAPI 라우트 추가 필요.

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

## 현황
- SimpleHTTP(DashboardHandler)에 구현된 메서드: `_get_groupchat_summaries`, `_get_groupchat_insights`, `_get_groupchat_messages` (라인 1478~1543)
- SimpleHTTP POST `/api/groupchat/organize` (라인 1737~1748)
- FastAPI 라우트에는 이 4개 엔드포인트 누락

## 작업

### FastAPI 라우트 4개 추가 (라인 1978 이후, whisper-status 다음)

기존 FastAPI 라우트 패턴을 따라 추가할 것:

```python
@app.get("/api/groupchat/summaries")
async def get_groupchat_summaries(date: str = ""):
    if not date:
        from datetime import date as date_cls
        date = date_cls.today().isoformat()
    handler = DashboardHandler.__new__(DashboardHandler)
    handler.data_loader = self.data_loader
    return handler._get_groupchat_summaries(date)

@app.get("/api/groupchat/insights")
async def get_groupchat_insights(date: str = ""):
    if not date:
        from datetime import date as date_cls
        date = date_cls.today().isoformat()
    handler = DashboardHandler.__new__(DashboardHandler)
    handler.data_loader = self.data_loader
    return handler._get_groupchat_insights(date)

@app.get("/api/groupchat/messages")
async def get_groupchat_messages(date: str = "", limit: int = 100):
    if not date:
        from datetime import date as date_cls
        date = date_cls.today().isoformat()
    handler = DashboardHandler.__new__(DashboardHandler)
    handler.data_loader = self.data_loader
    return handler._get_groupchat_messages(date, limit)

@app.post("/api/groupchat/organize")
async def organize_groupchat():
    trigger_path = self.data_loader.memory_dir / "events" / "dashboard-organize-trigger.json"
    trigger_data = {"type": "organize", "source": "dashboard", "timestamp": datetime.now().isoformat()}
    trigger_path.parent.mkdir(parents=True, exist_ok=True)
    trigger_path.write_text(json.dumps(trigger_data, ensure_ascii=False), encoding="utf-8")
    return {"status": "ok", "message": "정리 요청이 전송되었습니다."}
```

**주의**: DashboardHandler.__new__ 패턴이 더럽다면, `_get_groupchat_summaries` 등을 `@staticmethod`로 리팩터링하거나 `self.data_loader`를 직접 사용하는 독립 함수로 작성해도 됨. 핵심은 **FastAPI에서 동일한 로직이 동작**하는 것.

### 검증
1. `kill -9 <PID>` → 서버 재시작
2. `curl http://localhost:8000/api/groupchat/summaries` → 200 반환 확인
3. `curl http://localhost:8000/api/groupchat/insights` → 200 반환 확인
4. `curl http://localhost:8000/api/groupchat/messages` → 200 반환 확인
5. `curl -X POST http://localhost:8000/api/groupchat/organize` → 200 반환 확인
6. pyright 0 errors

## 산출물
- server.py 수정
- 보고서: `/home/jay/workspace/memory/reports/task-602.1.md`