# 인슈위키 위키 항목 전면 재구축 (v2 파이프라인)

## 배경
- task-1557에서 kakao_knowledge v2 파이프라인 완성 (Phase 1~3)
- 기존 wiki_entries.json은 v1 파이프라인으로 추출된 395개 항목 (5개 카테고리)
- 제이회장님 지시: 기존 위키 항목 모두 삭제 → v2 파이프라인으로 원본 txt 재분석 → 업데이트

## 작업 순서

### Step 0: task-1557 브랜치 merge
1. `/home/jay/projects/insuwiki` 에서 `task/task-1557.1-dev3` 브랜치를 master에 merge
2. merge 충돌 있으면 해결
3. merge 후 worktree 정리 (선택)

### Step 1: 기존 데이터 백업 및 삭제
1. 백업:
   - `cp scripts/kakao_knowledge/wiki_entries.json scripts/kakao_knowledge/wiki_entries.json.bak.v1-final`
2. wiki.db가 있다면 백업:
   - `cp data/wiki.db data/wiki.db.bak.v1-final` (파일 존재 시)
3. wiki_entries.json 내용을 빈 배열 `[]`로 초기화
4. wiki.db가 있다면 wiki_entries 테이블 데이터 삭제 (DROP TABLE 아님, DELETE FROM)

### Step 2: v2 파이프라인으로 원본 재분석
1. 원본 txt 파일: `/home/jay/workspace/data/kakao-sample.txt` (32,946줄)
2. 실행 명령:
   ```bash
   cd /home/jay/projects/insuwiki
   python3 -m scripts.kakao_knowledge pipeline-v2 /home/jay/workspace/data/kakao-sample.txt \
     --output scripts/kakao_knowledge/wiki_entries_v2.json \
     --use-llm
   ```
3. ANTHROPIC_API_KEY가 필요함. `.env.keys` 또는 환경변수에서 로드.
   - 키 로드 방법: `source /home/jay/workspace/.env.keys` 또는 코드 내 `_load_env_key()` 사용
4. 32,946줄이므로 batch_size=50 기본값 사용, 시간이 걸릴 수 있음
5. **LLM 호출 실패 시**: 규칙 기반 폴백이 자동 동작하므로 파이프라인은 완주됨

### Step 3: 결과 검증 및 저장
1. 생성된 `wiki_entries_v2.json` 검증:
   - 항목 수 확인 (v1 395개 대비)
   - 카테고리 분포 확인 (v2는 15개+ 카테고리)
   - confidence 분포 확인
   - 비정상 항목 (빈 title, 빈 answer 등) 필터링
2. 검증 통과 시:
   - `wiki_entries_v2.json` → `wiki_entries.json`으로 복사
   - `python3 -m scripts.kakao_knowledge import` 로 wiki.db에 import

### Step 4: 지식 그래프 + 벡터DB 구축
1. v2 파이프라인 결과를 기반으로:
   ```bash
   # 지식 그래프 구축은 pipeline-v2 내부에서 자동 수행될 수 있음
   # 수동 필요 시:
   python3 -c "
   import json
   from scripts.kakao_knowledge.knowledge_graph import KnowledgeGraph
   from scripts.kakao_knowledge.vector_store import VectorStore
   
   with open('scripts/kakao_knowledge/wiki_entries.json') as f:
       insights = json.load(f)
   
   # 지식 그래프
   kg = KnowledgeGraph(insights_dir='data/insights')
   kg.build_from_insights(insights)
   
   # 벡터 DB
   vs = VectorStore(db_path='data/chroma_db')
   vs.add_insights(insights)
   "
   ```
2. 생성 확인:
   - `data/insights/` 디렉토리에 마크다운 파일들
   - `data/graph.json` 그래프 파일
   - `data/insights_index.json` 인덱스 파일
   - `data/chroma_db/` 벡터 DB 디렉토리

### Step 5: 최종 검증
1. 통계 출력:
   ```bash
   python3 -m scripts.kakao_knowledge stats
   ```
2. 샘플 검색 테스트:
   ```bash
   python3 -m scripts.kakao_knowledge search "광응고술"
   python3 -m scripts.kakao_knowledge similar "고지의무 위반"
   ```
3. 결과를 보고서에 기록

## 주의사항
- Firestore 갱신은 이번 범위에 **포함하지 않음**
- ANTHROPIC_API_KEY를 프롬프트나 로그에 노출하지 말 것
- wiki_entries.json.bak.v1-final은 절대 삭제하지 말 것 (원본 보존)
- LLM 호출 비용 발생 가능 (32,946줄 → 예상 수백 스레드)

## 프로젝트 경로
- 프로젝트: `/home/jay/projects/insuwiki`
- 원본 txt: `/home/jay/workspace/data/kakao-sample.txt`
- 출력: `scripts/kakao_knowledge/wiki_entries.json`

## 보고서
`/home/jay/workspace/memory/reports/task-1563.md`에 작성.
항목 수, 카테고리 분포, 검색 테스트 결과 포함할 것.
