# 인슈위키 정제 UX 버그 3건 수정

## 배경
대시보드 InsuWiki 탭 카카오톡 정제 기능에서 3건의 버그 확인됨. 제이회장님 직접 확인.

## 버그 1: 월 필터링 미작동 (가장 중요)

**증상**: "3월 하반기" 선택 후 정제 시작 → 전체 txt 파일을 다 읽어버림
**원인**: `routes_post.py:839-851`에서 subprocess cmd에 `--month` 인자를 전달하지 않음

```python
# 현재 (버그)
cmd = [
    sys.executable, "-m", "kakao_knowledge", "pipeline-v2",
    file_path, "--output", output_path,
    "--use-llm", "--batch-size", "20",
    "--progress-file", str(status_path),
]
# selected_month가 cmd에 안 들어감!
```

**수정**:
```python
# selected_month가 있으면 --month 인자 추가
if selected_month:
    cmd.extend(["--month", selected_month])
```

**검증**: `knowledge_extractor_v2.py`의 CLI 인터페이스에서 `--month` 인자를 이미 지원하는지 확인 필요.
파일 위치: `/home/jay/projects/insuwiki/scripts/kakao_knowledge/knowledge_extractor_v2.py`
함수: `extract_insights_v2()` (939행 부근에 월 필터링 로직 존재)
CLI 진입점: `__main__.py` 또는 argparse 확인

## 버그 2: ETA(예상 시간) 미표시

**증상**: progress bar 아래에 "예상 남은 시간" 텍스트가 안 보임
**원인**: 
1. `routes_post.py:889`에서 refine-status.json에 `startedAt` 기록
2. 그런데 `knowledge_extractor_v2.py`의 `_write_progress()` 함수가 status 파일을 **전체 덮어쓰기**
3. 덮어쓰기 시 `startedAt` 필드를 포함하지 않아 사라짐
4. `routes_get.py:1902`에서 `startedAt`을 읽으려 하지만 없으므로 ETA 계산 불가

**수정 방안 (2가지 중 택 1)**:
A) `_write_progress()`에서 기존 파일을 읽고 `startedAt`을 보존하며 업데이트 (merge 방식)
B) `_write_progress()` 호출 시 `startedAt`을 항상 포함시킴 (정제 시작 시간을 인스턴스 변수로 유지)

방안 A 권장 — `_write_progress()`가 기존 파일을 read → merge → write 하도록 수정

**수정 위치**: `/home/jay/projects/insuwiki/scripts/kakao_knowledge/knowledge_extractor_v2.py`
`_write_progress()` 함수 (886행 부근)

## 버그 3: 프로세스 종료 시 "실패" 표시

**증상**: 정제 프로세스가 없는데(kill 되거나 정상 종료 후) "실패 5%" 빨간 bar 표시
**기대 동작**: 프로세스 없으면 idle 상태로 보여야 함
**원인**: `routes_get.py`에서 PID 없음 감지 시 `status: "failed"`로 설정 (1871, 1878행)
**수정**: PID 없고 progress가 100%가 아닌 경우 → `status: "idle"` + progress 0으로 리셋. 또는 프론트에서 "실패" 대신 "취소됨/중단됨" 표시 + 닫기 버튼

## 영향 파일
- `/home/jay/workspace/dashboard/routes_post.py` — 수정 (--month 인자 추가)
- `/home/jay/projects/insuwiki/scripts/kakao_knowledge/knowledge_extractor_v2.py` — 수정 (_write_progress startedAt 보존)
- `/home/jay/workspace/dashboard/routes_get.py` — 수정 (프로세스 종료 시 상태 처리)

## 검증 시나리오 (스모크테스트)
1. 월 선택 후 정제 시작 시 subprocess cmd에 `--month` 포함 확인 (로그 또는 ps aux로 확인)
2. 정제 실행 중 `/api/wiki/refine/status` 응답에 `startedAt` 필드 존재 + `estimatedRemaining` 비어있지 않음
3. 정제 프로세스 kill 후 `/api/wiki/refine/status` 응답이 idle 또는 적절한 상태
4. 기존 정제 기능 회귀 없음 (정상 시작/중단/완료)
5. 서버 재시작 후 동작 확인

## 주의
- knowledge_extractor_v2.py는 insuwiki 프로젝트 내 파일 (`/home/jay/projects/insuwiki/scripts/`)
- routes_post.py, routes_get.py는 대시보드 파일 (`/home/jay/workspace/dashboard/`)
- 수정 후 대시보드 서버 재시작 필요
- 수정 후 즉시 커밋
