# Task: InfoKeyword 발표형 스크린샷 리포트 시스템 구현

## Task ID: task-240.1

## ★ 한시적 승인 (Scoped Delegation)
제이회장님이 Phase 끝까지 자율 체이닝 승인함. 각 Phase 완료 시 간결 중간보고 후 즉시 다음 Phase 진행.

## 개요
키워드 분석 시 각 판단 step에서 결정적 근거가 되는 화면을 스크린샷으로 캡처하고,
이를 발표형 HTML 리포트로 자동 생성하는 시스템.

## 핵심 설계 방침 (제이회장님 지시)
1. **저장소**: Google Drive API 활용
2. **보관 기간**: 1주일 후 자동 삭제 (네이버 환경은 계속 바뀌므로 오래된 데이터는 무의미)
3. **리포트 형식**: 브라우저에서 HTML로 조회 가능하면 충분 (PDF 불필요)
4. **Playwright**: Worker에 이미 설치되어 있음 — 활용할 것

## Phase 구성

### Phase 1: 설계 + Google Drive 연동
- 캡처 대상 정의 (step별로 어떤 화면을 찍을지)
  - step1: SKIP (단순 단어 수 체크)
  - step2: 네이버 연관검색어 결과 화면
  - step3: 네이버 자동완성 결과 화면
  - step4: 네이버 검색광고 API 결과 (수치이므로 스크린샷 대신 데이터 카드)
  - step5: 분석 대상 블로그 TOP10 목록 + 홍보성 판정된 블로그 본문 스크린샷
  - step6: 블로그 검색 결과에서 외부 블로그 하이라이트
  - step7: 카페 검색 결과 화면
- Google Drive API 연동 (서비스 계정 또는 OAuth)
  - credentials는 `/home/jay/workspace/.env.keys`에 경로 등록
  - 전용 폴더 구조: `InfoKeyword-Reports/{analysis_id}/`
- 산출물: 설계 문서 `/home/jay/workspace/memory/specs/screenshot-report-spec.md`

### Phase 2: Worker 스크린샷 캡처 구현
- 각 step 함수에 스크린샷 캡처 로직 추가
- `/home/jay/projects/InfoKeyword/worker/reporter/` 모듈 신규 생성
  - `screenshot.py` — Playwright 스크린샷 캡처 유틸
  - `drive_uploader.py` — Google Drive 업로드
  - `report_generator.py` — HTML 리포트 생성
- 캡처된 이미지를 Google Drive에 업로드, URL을 결과에 포함
- Firestore의 분석 결과에 `report_url` 필드 추가

### Phase 3: HTML 리포트 뷰어 (프론트엔드)
- `/report/{id}/evidence` 또는 `/report/{id}` 페이지에 "근거 리포트" 탭/버튼 추가
- 리포트 구조:
  - 상단: 분석 요약 (키워드, 일시, 판정)
  - 각 step별 섹션: 판정 결과 + 스크린샷 + 근거 설명
  - 스타일: 깔끔한 발표형 레이아웃 (적절한 여백, 그림자, 섹션 구분)
- Google Drive 이미지 URL을 `<img>` 태그로 표시

### Phase 4: 자동 정리 (1주일 보관)
- 1주일 경과 데이터 자동 삭제 스케줄러
- 방법 1: cron job으로 매일 실행 — Drive API로 7일 지난 폴더 삭제
- 방법 2: Worker에서 업로드 시 Drive 파일에 `appProperties`로 만료일 저장
- Firestore의 `report_url`도 정리 (또는 프론트에서 "만료됨" 표시)
- 산출물: 정리 스크립트 + cokacdir --cron 스케줄 등록

## Google Drive 설정 가이드
- 서비스 계정 JSON 키 필요 (Firebase 프로젝트에서 생성 가능)
- 또는 기존 Firebase 서비스 계정에 Drive API 활성화
- 프로젝트 ID: `infokeyword-j2h`
- 키 파일 경로: 생성 후 `/home/jay/workspace/.env.keys`에 `GOOGLE_DRIVE_CREDENTIALS_PATH` 등록

## 주의사항
- Worker의 기존 분석 기능을 깨뜨리지 말 것 (스크린샷은 부가 기능)
- 스크린샷 실패 시 분석 자체는 정상 진행되어야 함 (graceful degradation)
- `.git`이 없으므로 git 명령어 사용 금지
- Phase 간 순차 진행 (파일 의존성)
- 각 Phase 완료 시 .done 통보 + 간결 중간보고

## 완료 후
1. 전체 테스트 통과 확인
2. `npm run build` 성공 확인
3. 서버 재시작 (포트 3100)
4. 보고서: `/home/jay/workspace/memory/reports/task-240.1.md`
