# 인슈위키탭 정제 작업 4건 원복 확인 및 재적용 (Lv.3)

## 배경
task-1831, 1832, 1833, 1836 총 4건의 인슈위키 정제 관련 작업이 원복된 것으로 의심됨.
각 작업의 보고서를 참고하여 현재 코드에 적용 여부를 검증하고, 누락된 부분을 재적용.

## 4개 작업 요약

### task-1831: blog_content KST + 정제 미리보기
- INSERT 시 `datetime('now', 'localtime')` KST 강제
- 정제 배치 처리에 `currentPreview` 필드 추가
- 파일: server.py (INSERT 구문), 프론트엔드 (미리보기 표시)

### task-1832: 정제 이력 동적 갱신 + 삭제 + 미리보기
- GET /api/wiki/refine/history에서 PID 검증 → 죽은 프로세스 자동 "failed"
- DELETE /api/wiki/refine/history/{id} API + UI 삭제 버튼
- 배치 중 currentPreview 필드
- 파일: server.py (API), 프론트엔드 (삭제 버튼, 미리보기)

### task-1833: subprocess 독립 실행
- 정제/글작성 subprocess에 `start_new_session=True` 추가
- 서버 재시작 시 정제 프로세스 중단 방지
- 파일: server.py (subprocess.Popen 3곳)

### task-1836: 스레드 분리 단계 currentPreview
- knowledge_extractor_v2.py의 `_write_progress` 3곳에 currentPreview 추가
- 0~10% 구간 미리보기
- 파일: knowledge_extractor_v2.py

## 작업 절차

### Phase 1: 검증 (코드 존재 여부 확인)
각 task별 핵심 코드가 현재 코드에 존재하는지 grep/read로 확인:

1. **task-1831**: server.py 또는 routes_post.py 등에서 `datetime('now', 'localtime')` INSERT 패턴
2. **task-1832**: 
   - `/api/wiki/refine/history` 엔드포인트에서 PID 검증 로직
   - DELETE `/api/wiki/refine/history/{id}` 엔드포인트
   - 프론트엔드 삭제 버튼
3. **task-1833**: subprocess.Popen에 `start_new_session=True`
4. **task-1836**: knowledge_extractor_v2.py에서 `currentPreview` (스레드 분리 단계)

⚠️ 주의: task-1838에서 server.py가 모듈 분할됨 (7600줄 → 9개 모듈). 
기존 server.py에 있던 코드가 routes_get.py, routes_post.py, wiki_engine.py 등으로 이동했을 수 있음.
분할된 모듈 목록:
- `/home/jay/workspace/dashboard/routes_get.py`
- `/home/jay/workspace/dashboard/routes_post.py`
- `/home/jay/workspace/dashboard/wiki_engine.py`
- `/home/jay/workspace/dashboard/blog_engine.py`
- `/home/jay/workspace/dashboard/data_loader.py`
- `/home/jay/workspace/dashboard/server.py` (메인, 축소됨)

### Phase 2: 누락 항목 재적용
검증에서 FAIL인 항목만 재적용.

### Phase 3: 통합 테스트
- 대시보드 서버 재시작
- `/api/wiki/refine/history` 호출하여 정상 응답 확인
- pytest 전체 실행

## 검증 시나리오 (이게 되면 성공)
1. blog_content INSERT에 KST 강제 패턴 존재
2. 정제 이력 API에 PID 검증 + DELETE 엔드포인트 존재
3. subprocess.Popen에 start_new_session=True 존재 (3곳)
4. knowledge_extractor_v2.py에 스레드 분리 단계 currentPreview 존재
5. 프론트엔드에 정제 미리보기 + 삭제 버튼 존재
6. pytest 전체 PASS

## 보고서 파일
- `/home/jay/workspace/memory/reports/task-1831.md` (참고)
- `/home/jay/workspace/memory/reports/task-1832.md` (참고)
- `/home/jay/workspace/memory/reports/task-1833.md` (참고)
- `/home/jay/workspace/memory/reports/task-1836.md` (참고)

## 주의사항
- server.py 모듈 분할 후 코드 위치가 변경됨 — 보고서의 line 번호를 그대로 믿지 말 것
- 대용량 파일 offset/limit 분할 읽기 필수
- 수정 후 즉시 커밋
- knowledge_extractor_v2.py 위치: `/home/jay/projects/insuwiki/` 하위 또는 `/home/jay/workspace/` 하위 검색 필요