# InsuWiki Review 기능 최종 수정 — 대시보드 미승인 insight 검토

## Lv.3 작업

## 제이회장님 확정 방향
**Review = 대시보드에서 아직 approve 안 한 insight를 InsuWiki에서 검토하는 곳**
- reviewer 등급 유저만 검토 가능
- 대시보드에서 approve 완료된 것은 Firestore에서 `status: 'approved'`로 sync
- Review에는 `draft`/`pending` 상태만 표시
- ⚠️ member가 작성한 wiki 문서 검토 기능이 **아님** (절대 C안 아님!)

## 현재 문제
1. Review 페이지 코드(`useReviewQueueListener.ts`)는 `sourceType == 'dashboard_insight'` + `status == 'pending'`으로 쿼리하도록 수정됨
2. 하지만 Firestore에 sync될 때 대시보드에서 **이미 approve한 것도 `status: 'pending'`으로** 들어감
3. 그래서 Review에 "이미 처리된" 문서들이 뜸
4. 반대로 대시보드에서 아직 approve 안 한 **draft 90건**은 sync 자체가 안 됨

## 수정 범위

### 1. 대시보드 sync 로직 수정 (server.py)
`/api/wiki/sync-firestore` 엔드포인트에서:
- wiki_entries.json의 `status: 'approved'` 항목 → Firestore에 `status: 'approved'`로 sync
- wiki_entries.json의 `status: 'draft'` 항목 → Firestore에 `status: 'pending'`으로 sync (Review 대상)
- wiki_entries.json의 `status: 'rejected'` 항목 → Firestore에 `status: 'rejected'`로 sync

현재 sync 로직 확인: `server.py`에서 `sync-firestore` 핸들러를 찾아서 status 매핑 확인.

### 2. Review 페이지 쿼리 확인
`/home/jay/projects/insuwiki/nextapp/src/hooks/useReviewQueueListener.ts`
- 현재: `where('sourceType', '==', 'dashboard_insight')` + `where('status', '==', 'pending')` — 이건 맞음
- `status: 'draft'`도 표시해야 하면 쿼리에 `in` 조건 추가: `where('status', 'in', ['draft', 'pending'])`

### 3. 이미 sync된 데이터 정리
Firestore에 이미 `status: 'pending'`으로 들어간 approve 완료 문서들을:
- Firebase Admin SDK로 `status: 'approved'`로 일괄 업데이트
- 또는 re-sync 시 덮어쓰기

### 4. Vercel 배포
수정 후 반드시:
```bash
cd /home/jay/projects/insuwiki && git add -A && git commit -m "fix: Review sync status mapping" && git push origin master
```

## 참조 파일
- sync 핸들러: `/home/jay/workspace/dashboard/server.py` — `sync-firestore` 검색 (offset/limit 사용)
- Review hook: `/home/jay/projects/insuwiki/nextapp/src/hooks/useReviewQueueListener.ts` (148줄)
- Review 페이지: `/home/jay/projects/insuwiki/nextapp/src/app/review/page.tsx`
- wiki_entries.json: `/home/jay/workspace/dashboard/data/wiki_entries.json`
- Firebase 키: `/home/jay/.config/gcloud/service-accounts/insuwiki-j2h-fa603f4f75f5.json`

## 테스트
1. sync 실행 → approved 항목이 Firestore에서 approved 상태 확인
2. sync 실행 → draft 항목이 Firestore에서 pending 상태 확인
3. InsuWiki Review 페이지 → draft/pending 항목만 표시, approved 항목 미표시
4. reviewer 등급 아닌 유저 → Review 접근 불가 확인

## 보고서
`/home/jay/workspace/memory/reports/task-{TASK_ID}.md`