# task-1671.1 완료 보고서: youtubeWhisper 테스트 수정 — GPU Whisper 기준 현행화

## SCQA

**S**: InsuWiki의 `whisperStt.ts`는 이미 GPU Whisper(`LOCAL_WHISPER_URL=localhost:8200`)로 전환 완료되어 운영 중이다.

**C**: 그러나 `youtubeWhisper.test.ts` line 101-113에 구버전 `OPENAI_API_KEY` 환경변수를 체크하는 테스트가 남아 있어, 테스트 환경에서 매번 5초 타임아웃으로 실패하고 있었다. 추가로 GPU Whisper 서비스가 실제로 port 8200에서 실행 중이어서 기본 포트 사용 시 600초 타임아웃에 걸리는 문제도 존재했다.

**Q**: 테스트를 GPU Whisper 기준으로 현행화하여 전체 통과시킬 수 있는가?

**A**: `OPENAI_API_KEY` 참조를 전수 제거하고, `vi.resetModules()` + 미사용 포트(19999)로 재import하는 방식으로 테스트를 수정하여 27개 전체 통과(223ms, 0 실패). 수정된 테스트는 ECONNREFUSED를 13ms 내에 수신하여 타임아웃 없이 완료된다.

## 수정 내용

### 변경 파일
- `/home/jay/projects/insuwiki/functions/src/__tests__/youtubeWhisper.test.ts`

### 변경 사항
1. **import 추가**: `vi`를 vitest import에 추가 (`vi.resetModules()` 사용 위해)
2. **line 101-115 테스트 수정**:
   - 테스트 이름: `'OPENAI_API_KEY 없을 때 null 반환'` → `'GPU Whisper 서비스 미실행 시 null 반환'`
   - `OPENAI_API_KEY` 환경변수 조작 코드 전면 제거
   - `vi.resetModules()`로 모듈 캐시 초기화 후 `LOCAL_WHISPER_URL=http://localhost:19999`로 설정하여 재import
   - ECONNREFUSED → null 반환 검증
   - Vitest 4 문법 준수: `test(name, { timeout: 10000 }, fn)` 형식 사용
3. **OPENAI 참조 전수 제거**: 테스트 파일 내 OPENAI 참조 0건 확인 완료

## 테스트 결과

- **vitest**: 27 passed, 0 failed (223ms)
- **GPU Whisper 서비스 미실행 테스트**: 13ms (이전: 5초 타임아웃 실패)
- **기존 테스트 회귀**: 없음 (26개 기존 테스트 전체 통과 유지)

## 발견 이슈 및 해결

### 자체 해결 (3건)
1. **Vitest 4 문법 호환성** — `test(name, fn, options)` 문법이 Vitest 4에서 제거됨. `test(name, options, fn)` 형식으로 수정
2. **모듈 캐시 이슈** — `LOCAL_WHISPER_URL`이 모듈 로드 시 캡처되어 런타임 env var 변경이 반영 안 됨. `vi.resetModules()`로 모듈 캐시 초기화 후 재import으로 해결
3. **GPU Whisper 서비스 실행 중 충돌** — port 8200에 실제 서비스 실행 중이어서 기본 포트 테스트 시 응답 대기로 타임아웃. 미사용 포트 19999로 우회하여 즉시 ECONNREFUSED 수신

### 범위 외 미해결 (1건)
1. **`crawlYoutubeChannels.ts` line 632에 `OPENAI_API_KEY` secrets 참조 잔존** — 범위 외 사유: Cloud Functions 배포 설정이므로 별도 태스크로 정리 필요. 실제 런타임 코드에서는 미사용.

## 셀프 QC 체크리스트

- [x] 1. 영향 파일: `youtubeWhisper.test.ts` 1개만 수정
- [x] 2. 엣지 케이스: 포트 19999 사용 중일 경우 → 비사용 확인 완료. 모듈 캐시 격리 → `vi.resetModules()` 적용
- [x] 3. 작업 지시 일치: OPENAI 제거, LOCAL_WHISPER_URL 기반 전환, import 확인 — 모두 완료
- [x] 4. 에러 처리/보안: 테스트 코드이므로 해당 없음
- [x] 5. 테스트 커버리지: 27/27 통과
- [x] 6. 이슈 자체 해결: 3건 해결, 1건 범위 외
- [x] 7. 아키텍처 원칙: 테스트 코드이므로 해당 없음
- [x] 8. 인터페이스 변경: 없음

## 모델 사용 기록

- 팀원: 카르티케야 / 작업: 초기 테스트 수정 / 사용 모델: sonnet / 정당성: -
- 팀장: 비슈누 / 작업: Vitest 4 문법 수정, 모듈 캐시 이슈 해결, QC 검증 / 사용 모델: opus / 정당성: 팀원 1차 수정 후 vitest 호환성 + 모듈 캐시 이슈 발견 → 팀장 직접 개입

## 산출물

- `/home/jay/projects/insuwiki/functions/src/__tests__/youtubeWhisper.test.ts`

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

### 수정 파일 목록
- /home/jay/projects/insuwiki/functions/src/__tests__/youtubeWhisper.test.ts: 4회 (Edit)
- /home/jay/workspace/memory/reports/task-1671.1.md: 1회 (Write)
- /home/jay/workspace/memory/tasks/task-1671.1.md: 1회 (dispatch)

### 도구 사용 현황
- Edit: 4회
- Write: 1회
- dispatch: 1회

