# 대시보드 정제 프로세스 실시간 모니터 패널

## Lv.1 작업

## 문제
정제 진행 시 progress bar가 5%에 멈춰있으면 프로세스가 죽은 건지 LLM 호출 대기 중인지 구분 불가. 사용자가 답답해함.

## 요구사항
카카오톡 정제 영역 내에 **프로세스 진단 패널**을 추가하여, 정제 진행 상태를 실시간으로 확인 가능하게 함.

### 1. 서버 API — `/api/wiki/refine/diagnostics` (GET)

lock 파일의 PID 기반으로 프로세스 진단 정보 반환:

```python
{
    "alive": true,
    "pid": 2666254,
    "cpu_percent": 0.3,        # /proc/{pid}/stat 기반
    "memory_mb": 190,          # VmRSS
    "elapsed": "12분 30초",    # startedAt 기준
    "last_progress_update": "2분 전",  # refine-status.json mtime
    "child_process": "claude --model haiku",  # 자식 프로세스 cmd (있으면)
    "child_pid": 2637624,
    "child_elapsed": "45초"
}
```

구현 방법:
- lock 파일에서 PID 읽기
- `/proc/{pid}/stat`에서 CPU, `/proc/{pid}/status`에서 VmRSS
- `os.popen(f"ps --ppid {pid} -o pid,etime,args")`로 자식 프로세스
- `refine-status.json`의 mtime으로 마지막 업데이트 시각

### 2. 프론트엔드 UI — InsuWikiView.js

정제가 `running` 상태일 때 progress bar 아래에 접이식 진단 패널 표시:

```
▼ 프로세스 현황
  ● PID 2666254 (활성)        경과: 12분 30초
  CPU 0.3%  |  메모리 190MB
  마지막 업데이트: 2분 전
  └ 하위 프로세스: claude --model haiku (45초)
```

- `running` 상태일 때만 표시
- 3초 간격 polling (`/api/wiki/refine/diagnostics`)
- `alive: false`이면 빨간색 "● 프로세스 종료됨" 표시
- `last_progress_update`가 5분 이상이면 노란색 경고

## 참조
- server.py: `/home/jay/workspace/dashboard/server.py` (GET 핸들러 추가)
- InsuWikiView.js: `/home/jay/workspace/dashboard/components/InsuWikiView.js`
- lock 파일: `/home/jay/workspace/dashboard/data/refine-lock.json`
- status 파일: `/home/jay/workspace/dashboard/data/refine-status.json`

## 수정 후
- 대시보드 재시작: `systemctl --user restart dashboard`

## 보고서
`/home/jay/workspace/memory/reports/task-{TASK_ID}.md`