# 인슈위키 정제 프로세스 실시간 로그 표시

## 배경
대시보드 InsuWiki 탭의 정제 영역에서 현재 progress bar + currentStep 1줄만 표시됨.
제이회장님 요청: 정제 프로세스가 어떤 작업을 하고 있는지 상세 로그를 실시간으로 확인하고 싶음.

## 작업 내용

### 1. 백엔드: _write_progress()에 recentLogs 필드 추가
파일: `/home/jay/projects/insuwiki/scripts/kakao_knowledge/knowledge_extractor_v2.py`

- `_write_progress()` 호출 시 `recentLogs` 배열 포함 (최근 10~15줄)
- 로그 내용 예시:
  - "파일 읽기 완료 (12,547 메시지)"
  - "메시지 기반 스레드 분리 중... (847/12547)"
  - "스레드 분리 완료: 2,947개 스레드"
  - "LLM 정밀 분리 시작 (2,947개 스레드)"
  - "배치 3/148 처리 중 (스레드 #41~#60)"
  - "배치 3/148 완료: 인사이트 2건 추출, 노이즈 15건 필터"
  - "인사이트 #127: [고지의무] 계약 전 알릴 의무 관련..."
- 각 주요 단계에서 `_write_progress()` 호출 시 로그 메시지를 누적하는 방식
- 구현 방법:
  1. 모듈 레벨 리스트 `_recent_logs: list[str] = []` 선언
  2. 각 단계에서 `_recent_logs.append(f"[{timestamp}] {메시지}")` 
  3. 최근 15줄만 유지: `_recent_logs = _recent_logs[-15:]`
  4. `_write_progress()` 호출 시 `data["recentLogs"] = _recent_logs` 포함

### 2. 대시보드 API: recentLogs 전달
파일: `/home/jay/workspace/dashboard/routes_get.py`

- `/api/wiki/refine/status` 응답에 `recentLogs` 필드 그대로 전달 (refine-status.json에서 읽어서 전달)
- 이미 status_data를 그대로 반환하므로 별도 수정 불필요할 수 있음 → 확인 필요

### 3. 프론트엔드: 로그 패널 UI
파일: `/home/jay/workspace/dashboard/components/InsuWikiView.js`

- progress bar 아래에 실시간 로그 패널 추가
- 스타일: 다크 배경(#1a1a2e) + 모노스페이스 폰트 + 스크롤 가능
- 높이: 150~200px, 접이식(토글 가능)
- 자동 스크롤: 새 로그 추가 시 하단으로 자동 스크롤
- 정제 미실행(idle) 시: 패널 숨김 또는 "대기 중" 표시
- 정제 실행 중: 3초 폴링으로 recentLogs 업데이트
- 각 로그 줄에 타임스탬프 표시 (HH:MM:SS 형식)

### 4. knowledge_extractor_v2.py 주요 로그 포인트
각 단계에서 로그를 추가해야 하는 위치:
1. 파일 읽기 완료 후 (메시지 수)
2. 월 필터링 적용 후 (필터된 메시지 수)
3. 스레드 분리 시작/진행/완료
4. LLM 정밀 분리 시작/완료
5. 각 배치 시작/완료 (처리된 스레드 범위, 추출된 인사이트 수)
6. 에러 발생 시
7. 전체 완료 시 (총 인사이트 수, 소요 시간)

## 영향 파일
- `/home/jay/projects/insuwiki/scripts/kakao_knowledge/knowledge_extractor_v2.py` — 수정 (recentLogs 누적 + _write_progress 포함)
- `/home/jay/workspace/dashboard/components/InsuWikiView.js` — 수정 (로그 패널 UI 추가)
- `/home/jay/workspace/dashboard/routes_get.py` — 확인 (필요 시 수정)

## 검증 시나리오
1. 정제 시작 후 `/api/wiki/refine/status` 응답에 `recentLogs` 배열 포함 확인
2. recentLogs에 타임스탬프 + 상세 메시지 포함 확인
3. 대시보드에서 로그 패널이 보이고 실시간 업데이트 확인 (Playwright 스크린샷)
4. 정제 미실행 시 로그 패널 적절히 처리 (숨김 또는 빈 상태)
5. 로그가 15줄 초과 시 오래된 것 자동 제거 확인

## 주의
- knowledge_extractor_v2.py는 insuwiki 프로젝트 내 파일 (`/home/jay/projects/insuwiki/scripts/`)
- InsuWikiView.js 대용량 (~2200줄) — offset/limit
- _write_progress()가 merge 방식으로 동작함 (task-1879에서 수정됨) — recentLogs도 보존되도록 주의
- 수정 후 즉시 커밋
- 서버 재시작 필요