---
task_id: task-2058
type: context
scope: task
created: 2026-04-21
updated: 2026-04-21
status: in-progress
---

# 맥락 노트: task-2058

**task**: task-2058

---

## 결정 근거

### 폴링 간격 유지 결정
- 현재 running 시 3초, idle 시 10초 — 이미 적절함
- 태스크 설명의 "30~60초"는 실제 코드와 불일치 → 프론트 폴링은 변경 불필요
- 대신 백엔드 progress 갱신 빈도와 데이터 풍부화에 집중

### psutil 도입 (CPU/메모리)
- 프로세스 상태를 "alive" → "alive (CPU 활성/대기)" 구분하기 위해 psutil 사용
- psutil은 이미 서버 환경에 설치 가능 (system_monitor.py에서 사용 가능성 확인 필요)
- 대안: /proc/{pid}/stat 직접 읽기 → 리눅스 전용이지만 의존성 없음. psutil이 없으면 이 방식 사용

### 3 Step Why 자문
1st Why: "왜 이 설계가 필요한가?"
→ 현재 대시보드에서 정제 프로세스의 세부 상태를 파악할 수 없어, 문제 발생 시 빠른 대응이 어려움

2nd Why: "왜 progress 데이터 확장 + psutil이 최선인가?"
→ 기존 파일 기반 progress 메커니즘을 그대로 활용하면서 최소 변경으로 필요 정보를 추가할 수 있음. WebSocket 등 아키텍처 변경 불필요

3rd Why: "왜 이 접근이 다른 대안보다 나은가?"
→ (a) WebSocket은 서버 아키텍처 변경 필요 (과잉), (b) 별도 모니터링 서비스 도입은 복잡성 증가, (c) 파일 기반 progress 확장은 기존 패턴과 일관되며 변경 범위가 최소

## 참조 자료

- 백엔드 progress 쓰기: `/home/jay/projects/insuwiki/scripts/kakao_knowledge/knowledge_extractor_v2.py:1005` `_write_progress`
- API 엔드포인트: `/home/jay/workspace/dashboard/routes_get.py:1871` `handle_get_wiki_refine_status`
- 프론트엔드 UI: `/home/jay/workspace/dashboard/components/InsuWikiView.js:507` 폴링 로직

## 주의사항

- knowledge_extractor_v2.py는 insuwiki 프로젝트 소속 → worktree에서 수정
- routes_get.py, InsuWikiView.js는 dashboard 소속 → /home/jay/workspace/dashboard/ 에서 수정 (dev-system 프로젝트)
- psutil import 실패 시 graceful fallback 필수 (CPU/메모리 정보 없이 기존 동작 유지)
