# InsuWiki Sync 완료 — 승인(published) 감지 + 양방향 실시간 sync

## ★★★ 핵심 이해 ★★★
InsuWiki 서비스 플로우:
1. 대시보드 Sync → Firestore `documents` 컬렉션에 등록 → InsuWiki review 페이지에 나타남
2. InsuWiki review에서 **승인** → wiki(published)로 이동 + **review에서 삭제됨**
3. 대시보드 Sync 완료 리스트: "미승인" → "반영됨"으로 바뀌어야 함

**양쪽이 항상 matching/sync 되어야 한다.**

## 작업 1: 과거 승인된 18건 상태 복구

### 분석
- wiki-sync-status.json 105건 중 18건이 Firestore `documents` 컬렉션에서 미발견
- 이 18건은 **이미 승인되어 published/wiki로 이동된 문서**일 가능성 높음
- Firestore에서 해당 문서가 어디에 있는지 확인 필요

### 수정
1. `/home/jay/workspace/dashboard/scripts/sync_firestore_statuses.py` 수정
2. Firestore `documents` 컬렉션에서 못 찾은 항목 → 삭제된 것 = 승인되어 wiki로 이동한 것
3. 해당 항목의 status를 "approved" (또는 "published")로 갱신
4. wiki-statuses.json도 동일하게 갱신

### Firestore 구조 확인 필요
- InsuWiki에서 승인된 문서가 어떤 컬렉션으로 이동하는지 확인:
  - `/home/jay/projects/insuwiki/nextapp/src/app/api/wiki/insights/[id]/review/route.ts` 분석
  - 승인 시 document가 삭제되는지, status만 변경되는지, 다른 컬렉션으로 이동하는지
- 이 분석 결과에 따라 "미발견 = 승인" 판단 로직 결정

## 작업 2: 실시간 양방향 sync 콜백 검증

### InsuWiki → 대시보드 콜백 경로
- 파일: `/home/jay/projects/insuwiki/nextapp/src/app/api/wiki/insights/[id]/review/route.ts`
- 승인 시 `DASHBOARD_API_URL/api/wiki/entries/{id}/approve` POST 호출

### 확인 사항
1. 콜백이 실제로 호출되는지 (로깅 추가)
2. entry_id 형식이 대시보드와 일치하는지 (insight-001 등)
3. 대시보드가 받은 status 값이 올바른지
4. 대시보드에서 status를 "approved"/"published"/"반영됨" 중 어떤 값으로 저장하는지

### 대시보드 측 처리
- 파일: `/home/jay/workspace/dashboard/server.py` — approve 핸들러
- InsuWiki에서 approved가 오면:
  - wiki-statuses.json: "approved"로 갱신
  - wiki-sync-status.json: status를 "approved"로 갱신
  - 프론트엔드 표시: "미승인" → "반영됨" (또는 "승인")

### 프론트엔드 표시
- 파일: `/home/jay/workspace/dashboard/components/InsuWikiView.js`
- Sync 완료 리스트의 상태 배지 확인:
  - "미승인" = draft
  - "승인" = approved
  - "반려" = rejected
  - "반영됨" = published (추가 필요할 수 있음)

## 작업 3: Sync 이전 → Sync 완료 이동 시 상태 초기화

대시보드에서 "InsuWiki Sync" 버튼을 눌러 Sync 이전 항목을 Firestore에 동기화할 때:
- 해당 항목이 Sync 완료로 이동
- 초기 상태: "미승인" (Firestore review에 등록됨)
- 이후 InsuWiki에서 승인하면 → 콜백 → "반영됨"

이 흐름이 정상 작동하는지도 확인 필요.

## ★★★ Sync 이전 114건은 절대 건드리지 않는다 ★★★

## 검증 시나리오
1. **과거 승인 18건**: Firestore 미발견 18건의 status가 "approved"/"published"로 갱신되면 성공
2. **프론트엔드 표시**: Sync 완료 리스트에서 승인된 항목이 "반영됨" 또는 "승인"으로 표시되면 성공
3. **실시간 콜백**: InsuWiki review에서 승인 → 대시보드 Sync 완료 리스트 상태가 즉시 변경되면 성공 (실제 승인 테스트 불가하면 curl로 콜백 시뮬레이션)
4. **Sync 이전 불변**: unsynced 카운트 114 유지
5. **데이터 무결성**: wiki-sync-status.json 105건 유지