# InfoKeyword Phase 4: 통합 테스트 + 배포

## 개요
InfoKeyword 서비스의 최종 Phase. 프론트엔드(Next.js)와 백엔드(Python Worker)를 통합 테스트하고 배포한다.

## 프로젝트 경로
- **프로젝트 루트**: `/home/jay/projects/InfoKeyword/`
- **프론트엔드**: 루트에 Next.js (src/ 디렉터리)
- **백엔드 Worker**: `/home/jay/projects/InfoKeyword/worker/`
- **아키텍처**: `/home/jay/workspace/memory/specs/infor-keyword/architecture-v1.md`
- **Phase 계획**: `/home/jay/workspace/memory/specs/infor-keyword/phase-plan.md`

## 현재 상태
- Phase 2 (백엔드): 완료 — Worker API 103 tests PASS
- Phase 3 (프론트엔드): 완료 — Next.js 54 tests PASS, build 성공

## Phase 4 목표
전체 시스템을 실제로 통합하여 동작을 검증하고, 배포 준비를 완료한다.

## 구현 범위

### 4-1. 통합 테스트 (핵심)
- **E2E 연동 테스트**: Next.js API Routes → Worker API 호출 체인 검증
  - `/api/keyword/generate` → Worker `/generate` 프록시 동작 확인
  - `/api/analyze` → Worker `/analyze` 프록시 동작 확인
  - `/api/analyze/[id]` → Worker `/status/{id}` 프록시 동작 확인
- **Worker 단독 E2E**: 실제 키워드 1개 분석 파이프라인 전체 실행
  - 테스트 키워드: "암보험 비교" (실제 네이버 크롤링)
  - 7단계 모두 실행하여 결과 확인
- **환경변수 검증**: `.env.local` + `.env.keys` 로드 확인
- **Firebase 연동**: Firestore 읽기/쓰기 테스트 (ik_analyses 컬렉션)

### 4-2. 빌드 및 배포 준비
- **Next.js 빌드**: `npm run build` 최종 확인 (에러/경고 0)
- **Worker 실행 검증**: `uvicorn worker.main:app` 정상 기동 확인
- **환경변수 정리**:
  - `.env.local` 실제 값 설정 (Firebase config, Worker URL)
  - Worker `.env` 실제 값 설정 (API keys)
- **배포 스크립트** 작성:
  - `scripts/start-worker.sh` — Worker 실행 스크립트
  - `scripts/start-frontend.sh` — Next.js dev/prod 실행 스크립트

### 4-3. Firestore Security Rules
- `ik_analyses` 컬렉션: 인증된 사용자 본인 데이터만 읽기/쓰기
- `ik_keyword_cache` 컬렉션: 서버만 쓰기, 읽기는 인증 사용자 허용

### 4-4. 운영 준비
- **README.md** 업데이트: 설치, 환경설정, 실행 방법
- **에러 핸들링 검증**: Worker 다운 시 프론트 에러 메시지 확인
- **CORS 설정**: Worker에 프론트엔드 도메인 허용

## LLM 관련
- Worker에서 사용하는 LLM은 `claude -p` (Claude CLI subprocess)
- 외부 API (Gemini, OpenAI 등) 사용 금지
- 통합 테스트 시 실제 claude CLI 호출이 발생할 수 있음 (mock 아닌 실제)

## 주의사항
- 기존 코드 구조를 최대한 유지하되, 통합에 필요한 수정만 진행
- Worker의 인메모리 _analysis_store는 프로토타입용. 추후 Firestore 전환 고려하되 이번 Phase에서는 현행 유지
- 실제 네이버 크롤링 테스트 시 Rate Limit 주의 (300ms 딜레이)

## 완료 조건
1. Next.js → Worker 프록시 3개 엔드포인트 연동 성공
2. Worker 단독 키워드 1건 분석 파이프라인 정상 동작
3. `npm run build` 에러 0
4. Firestore 읽기/쓰기 동작 확인
5. 실행 스크립트 + README 포함
6. 전체 테스트 PASS (기존 + 신규)