---
task_id: task-2133
type: plan
scope: task
created: 2026-04-23
updated: 2026-04-23
status: in-progress
---

# 계획서: task-2133

**task**: task-2133
**목표**: InsuRo 구글 트렌드 데이터 파이프라인 MVP 구축 — pytrends 실시간 호출을 DB 캐시 기반으로 전환하여 429 에러 해소
**승인**: 에이전트 미팅 19명 전원 합의 (2026-04-23) "B안(Cron 데이터 파이프라인) 채택"
**근거**: `/home/jay/workspace/memory/meetings/2026-04-23-google-trends-architecture.md`

---

## 목표

1. Supabase에 3테이블(trend_keywords, trend_data, trend_collection_runs) 생성 + 키워드 30개 시드
2. 배치 수집기(trend_collector.py) 작성 — 매일 새벽 4시 systemd timer로 실행
3. 기존 `/api/insuro/google-trends` 엔드포인트를 DB 캐시 우선 조회로 수정
4. 프론트엔드 구글 트렌드 탭을 Combobox 자동완성 + DB 데이터 기반으로 전환
5. Google 429 rate limit 에러 완전 해소

## 범위

### 포함
- T1: DB 스키마 (Supabase SQL 마이그레이션 + 시드 데이터)
- T2: 수집기 (trend_collector.py + systemd 유닛 파일)
- T3: API 수정 (main.py google_trends_proxy → DB 캐시 우선)
- T4: 프론트엔드 수정 (KeywordAnalysis.tsx 구글 트렌드 탭 Combobox 전환)

### 제외 (Phase 2 이후)
- 카테고리별 그룹핑 UI, 키워드 관리 UI
- 보험 날씨 지도 (지역별 히트맵)
- 유료 API(SerpAPI) 전환

## 위임 계획

- T1 DB 스키마 + T2 수집기: **쿠쿨칸(백엔드, sonnet)** — Supabase SQL + Python 수집 로직
- T3 API 수정: **쿠쿨칸(백엔드, sonnet)** — main.py 엔드포인트 수정
- T4 프론트엔드: **이쉬첼(프론트엔드, sonnet)** — KeywordAnalysis.tsx Combobox 전환
- 테스트: **카마소츠(테스터, sonnet)** — API 테스트 업데이트

## 검증 기준

- 수집기 1회 실행: `python3 trend_collector.py` → 30개 키워드 수집 완료
- API 캐시 응답: `curl -s -X POST .../google-trends -d '{"keyword":"실비보험"}'` → source: "cache", < 100ms
- 프론트엔드: Combobox에서 키워드 선택 → 차트 표시
- systemd timer: `systemctl --user list-timers | grep trend` → 등록 확인
