# task-1892 완료 보고서
> 작업: 인슈위키 정제 "이어서 작업" 월 필터 누락 + 상태 처리 개선
> 팀: dev1-team (헤르메스/불칸)
> 일시: 2026-04-16

---

## SCQA

**S**: 인슈위키 대시보드의 정제 기능은 대용량 카카오톡 데이터를 월별로 필터링하여 파이프라인을 실행하며, 중간 취소 후 "이어서 작업" 기능을 제공한다.

**C**: 3월 하반기(2026-03-H2) 정제 중 프로세스가 멈춰서 "이어서 작업" 버튼을 클릭했으나, resume handler에 `--month` 인자가 누락되어 전체 파일이 처리되었다. 또한 프로세스를 kill하면 status가 `failed`로 설정되어 "이어서 작업" 자체가 불가능했고, 메타데이터(processedThreads 등)도 유실되어 처음부터 재시작되는 문제가 있었다.

**Q**: resume 시 `--month` 필터를 유지하고, 프로세스 비정상 종료 후에도 이어서 작업이 가능하도록 할 수 있는가?

**A**: 3개 버그를 모두 수정 완료. (1) start/resume cmd에 `--month` 인자 추가, (2) 프로세스 비정상 종료 시 `failed` → `cancelled` 변경으로 resume 가능하게 처리, (3) lock 삭제 전 메타데이터(outputPath, filePath, selectedMonth 등 5개 키)를 status_data에 보존. 추가로 start 함수에서도 동일 `--month` 누락을 발견하여 함께 수정. pyright 기존 import 에러 외 신규 에러 0건.

---

## 수정 파일 및 검증 상태

| 파일 | 변경 내용 | grep 검증 | 상태 |
|------|-----------|-----------|------|
| routes_post.py:854-855 | start cmd에 --month 인자 추가 | `grep 'cmd.extend.*--month' OK (855행)` | verified |
| routes_post.py:1197-1198 | resume cmd에 --month 인자 추가 | `grep 'cmd.extend.*--month' OK (1198행)` | verified |
| routes_get.py:1869-1877 | 프로세스 비정상 종료 시 failed→cancelled + lock 메타데이터 5키 보존 | `grep 'cancelled.*이어서 작업 가능' OK (1869행)` | verified |
| routes_get.py:1879-1883 | lock 없이 running일 때 failed→cancelled | `grep 'cancelled' OK (1881행)` | verified |

---

## 발견 이슈 및 해결

### 자체 해결 (2건)
1. **start 함수에서도 --month 누락** — 태스크에는 resume만 명시되었으나, start 함수(838-852행)에서도 동일 버그 발견. 함께 수정 (routes_post.py:854-855)
2. **lock 삭제 순서 문제** — routes_get.py에서 lock 파일 삭제(1877행)가 메타데이터 보존 로직(1885-1889행)보다 먼저 실행되어 메타데이터 유실. lock 삭제 전에 메타데이터를 status_data에 복사하도록 수정 (routes_get.py:1871-1873)

### 범위 외 미해결 (1건)
1. **pyright import 에러 20건** — routes_post.py, routes_get.py의 동적 import 패턴(try/except 기반)으로 인한 기존 pyright 에러. 이번 변경과 무관하며 기존 아키텍처 설계 의도.

---

## 셀프 QC 체크리스트

- [x] 1. 영향 파일: routes_post.py, routes_get.py (2개 파일만 수정)
- [x] 2. 엣지 케이스: selected_month 빈 값 → `if selected_month:` 가드로 처리, lock 없는 경우 → 별도 분기 처리
- [x] 3. 작업 지시와 정확히 일치 (3개 버그 수정 + start 누락 추가 발견)
- [x] 4. 에러 처리: 기존 try/except 구조 유지, 보안 이슈 없음
- [x] 5. 관련 테스트 파일 없음 (test_routes_post.py/test_routes_get.py 미존재)
- [x] 6. 발견 이슈 2건 모두 직접 해결
- [x] 7. SOLID/DRY 위반 없음 (동일 패턴 2곳 적용은 의도적 — start/resume 각각 독립 함수)
- [x] 8. API 시그니처 변경 없음 (내부 cmd 구성만 변경)

---

## 모델 사용 기록

| 팀원 | 모델 | 작업 | 정당성 |
|------|------|------|--------|
| 불칸 | sonnet | 백엔드 버그 수정 3건 | 로직 변경 포함, haiku 부적합 |

---

## 머지 판단
- **머지 필요**: No (디스크 공간 부족으로 worktree 미사용, main에서 직접 수정)
- **브랜치**: main (직접 커밋)
- **사유**: 디스크 100% 사용 중 (93G/98G), worktree 생성 불가

---

## QC 검증 결과

- **전체**: WARN (6 PASS, 6 SKIP, 1 WARN)
- **pyright_check**: PASS (신규 에러 0건)
- **data_integrity**: PASS
- **test_runner**: SKIP (관련 테스트 파일 0개 — 정당한 SKIP)
- **tdd_check**: SKIP (기존 테스트 파일 미존재, 대형 레거시 파일 버그 수정)
- **style_check**: WARN (black/isort 포맷팅 — 기존 파일 스타일)
- **TRUST 5**: T=passed, R=passed, U=passed, S=passed, T=passed

## 커밋 이력
- `b1a54e95` [task-1892] 불칸: 프로세스 비정상 종료 시 failed→cancelled + lock 메타데이터 보존
- `0486814f` [task-1892] 불칸: start/resume cmd에 --month 인자 추가

## 세션 통계
- 총 도구 호출: 8회

### 수정 파일 목록
- /home/jay/workspace/dashboard/routes_get.py: 2회 (Edit)
- /home/jay/workspace/dashboard/routes_post.py: 2회 (Edit)
- /home/jay/workspace/memory/reports/task-1892.md: 2회 (Edit, Write)
- bash_cmd: 2회 (Bash)

### 도구 사용 현황
- Edit: 5회
- Bash: 2회
- Write: 1회

