# InforKeyword Phase 2~4 상세 계획

**작성일**: 2026-03-04
**작성**: 개발2팀

---

## Phase 2: 백엔드 코어 개발

### 목표
분석 파이프라인 핵심 로직 구현 (Python Worker)

### 서브태스크

**2-1. 프로젝트 초기화** (1일)
- Next.js 15 프로젝트 생성 (`/home/jay/projects/InforKeyword/`)
- Python Worker 프로젝트 구조 (`/home/jay/projects/InforKeyword/worker/`)
- Firebase 설정 (insuwiki-j2h 프로젝트 활용)
- 환경변수 설정 (.env.local)

**2-2. 네이버 크롤링 모듈** (2일)
- `crawler/autocomplete.py` — 자동완성 API 호출
- `crawler/search_ad.py` — 검색광고 API (검색량)
- `crawler/related_keywords.py` — 연관검색어 HTML 파싱
- `crawler/blog_search.py` — 블로그탭 검색결과 파싱
- `crawler/blog_content.py` — 블로그 본문 크롤링
- `crawler/cafe_search.py` — 카페탭 + 대표뱃지 파싱
- Rate Limiter 구현 (300ms~1s 딜레이)

**2-3. 홍보성 판별 모듈** (2일)
- `analyzer/phone_address.py` — 전화번호/주소 정규식 감지
- `analyzer/external_links.py` — 외부링크/톡톡/플레이스 감지
- `analyzer/attachment.py` — 첨부파일 감지
- `analyzer/ocr.py` — Google Vision OCR 연동
- `analyzer/llm_promotional.py` — Gemini LLM 홍보성 판별

**2-4. LLM 키워드 생성 모듈** (1일)
- `generator/keyword_generator.py` — Gemini API 키워드 30개 생성
- 프롬프트 템플릿 (2단/3단)
- JSON 파싱 + 검증

**2-5. 7단계 분석 파이프라인** (2일)
- `pipeline/analyzer.py` — 7단계 순차/병렬 실행 오케스트레이터
- 캐시 계층 (Firestore 읽기/쓰기)
- 에러 핸들링 + 재시도 로직

**2-6. API 엔드포인트** (1일)
- FastAPI 엔드포인트: `/generate`, `/analyze`, `/status`
- 인증 미들웨어 (Firebase ID Token 검증)

### 산출물
- Python Worker 전체 코드
- 단위 테스트 (각 모듈별)
- API 문서

### 예상 기간: 7~9일

---

## Phase 3: 프론트엔드 개발

### 목표
사용자 인터페이스 구현 (Next.js)

### 서브태스크

**3-1. 프로젝트 설정** (0.5일)
- Next.js App Router 구조
- Tailwind CSS + shadcn/ui 설정
- Firebase Auth 설정

**3-2. 인증 페이지** (0.5일)
- `/login` — 이메일/비밀번호 로그인
- `/signup` — 회원가입
- Auth Guard (미인증 시 리다이렉트)

**3-3. 분석 플로우 페이지** (3일)
- `/analyze/topic` — 주제 입력 + 2단/3단 선택 UI
- `/analyze/select` — 키워드 30개 카드 그리드 + 5개 선택 체크박스
- `/analyze/progress` — 실시간 진행률 표시 (폴링/SSE)
  - 키워드별 7단계 진행 상황 시각화
  - 예상 남은 시간 표시

**3-4. 리포트 페이지** (2일)
- `/report/:id` — 분석 결과 대시보드
  - 키워드별 7단계 PASS/FAIL 시각화 (체크마크/X표)
  - 정보성 키워드 vs 비정보성 키워드 요약
  - 상세 분석 결과 (블로그 목록, 홍보성 신호 등) 접기/펼치기
  - 결과 PDF 다운로드 (선택)

**3-5. 대시보드** (1일)
- `/dashboard` — 과거 분석 이력 목록
- 필터/정렬 (날짜, 주제)

**3-6. API 연동** (1일)
- Next.js API Routes → Python Worker 호출
- 에러 처리 UI (토스트 알림)

### 산출물
- Next.js 전체 페이지
- 반응형 UI (데스크톱 전용, 모바일 불필요)
- 컴포넌트 테스트

### 예상 기간: 6~8일

---

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

### 목표
전체 시스템 통합, 테스트, 배포

### 서브태스크

**4-1. 통합 테스트** (2일)
- E2E 테스트 (Playwright):
  - 주제 입력 → 키워드 생성 → 선택 → 분석 → 리포트 전체 플로우
- 실제 키워드 5세트 분석 테스트:
  - "암보험", "실손보험", "운전자보험", "종신보험", "치아보험"
- 크롤링 안정성 테스트 (100건 연속)
- OCR 정확도 측정 (실제 블로그 이미지 50장)
- LLM 홍보성 판별 정확도 측정

**4-2. 성능 최적화** (1일)
- 분석 소요시간 측정 + 병목 개선
- 캐시 히트율 측정
- 비용 모니터링 대시보드 설정

**4-3. 배포** (1일)
- Vercel 배포 (Next.js)
- Cloud Run 배포 (Python Worker)
- Firestore Security Rules 배포
- 환경변수 설정 (Secret Manager)
- 도메인 설정 (선택)

**4-4. 운영 준비** (1일)
- 에러 알림 설정 (Slack/Telegram)
- 비용 알림 설정 (GCP 예산)
- 사용자 가이드 작성
- 크롤링 장애 모니터링

### 산출물
- 배포 완료된 서비스 URL
- 테스트 결과 보고서
- 운영 가이드

### 예상 기간: 4~5일

---

## 전체 일정 요약

| Phase | 내용 | 예상 기간 |
|-------|------|----------|
| Phase 1 | 기술 리서치 + 설계 | 완료 (2026-03-04) |
| Phase 2 | 백엔드 코어 개발 | 7~9일 |
| Phase 3 | 프론트엔드 개발 | 6~8일 |
| Phase 4 | 통합 테스트 + 배포 | 4~5일 |
| **총계** | | **17~22일** |

> Phase 2와 Phase 3는 일부 병렬 진행 가능 (API 인터페이스 확정 후).
> 실제 기간은 네이버 검색광고 API 계정 발급 소요시간에 따라 변동 가능.

---

## 선행 조건 (Phase 2 시작 전)

- [ ] 네이버 검색광고 계정 생성 + API Key/Secret/Customer ID 발급
- [ ] GCP insuwiki-j2h 프로젝트에서 Cloud Vision API 활성화
- [ ] Firebase insuwiki-j2h에 InforKeyword용 Firestore 컬렉션 규칙 설정
- [ ] 기술스택 + 아키텍처 최종 승인 (아누 확인)
