---
task_id: task-2329
type: context
scope: task
created: 2026-04-30
updated: 2026-04-30
status: completed
---

# 맥락 노트: task-2329

**task**: task-2329

---

## 결정 근거

### 3 Step Why

**1st Why: "왜 이 설계가 필요한가?"**
- 현재 keywords 테이블(3,500개)은 고정 풀로, 풀 밖에서 급등하는 키워드(예: 월 15→1,000)를 감지할 수 없다. 보험 FA들이 트렌드 변화에 대응하지 못하면 경쟁 블로그에 뒤처진다.

**2nd Why: "왜 이 접근(뉴스 시그널 + 급등감지 + 시즌 캘린더)이 최선인가?"**
- 뉴스 API는 무료이고 법적 리스크 제로. SearchAd 검증 게이트로 노이즈 차단. 시즌 캘린더는 정적 JSON으로 유지보수 비용 최소. 17사이클 미팅에서 9인 만장일치 확정.

**3rd Why: "왜 다른 대안보다 나은가?"**
- 대안 1 (API 복수 운용): 약관 위반 리스크 → 전원 배제
- 대안 2 (LLM 예측): 정확도 미검증, 비용 높음 → Phase 3 이후
- 대안 3 (커뮤니티 RSS): 크롤링 법적 리스크 → 보류
- 채택안: 뉴스 API + 도메인 사전 매칭은 비용 0, 법적 리스크 0, 구현 복잡도 낮음

### opt-out 자동 승인 결정
- 수동 승인은 병목 발생 (Cycle 16 로키 DA 리스크 5)
- 블랙리스트 + SearchAd 검증 + 주 10개 상한으로 구조적 안전장치 확보
- 탐색 풀 전용이므로 코어 데이터 품질 미영향

### 급등 임계값 결정
- 기본 200%, 시즌 300%: Cycle 9 로키 DA 검증 통과
- 기준선 = 직전 4주 같은 요일 평균: 요일별 검색 패턴 차이 반영

## 참조 자료

- 17사이클 미팅 기록: `/home/jay/workspace/memory/meetings/2026-04-30-keyword-pool-limit-overcome.md`
- config: `server/config/trend-insight-config.json`, `server/config/season_calendar.json`
- 기존 스크립트: `server/scripts/daily_ranking_calc.py`, `server/scripts/keyword_pool_refresh.py`

## 주의사항

- API 복수 운용 금지 (약관 위반 리스크)
- 블랙리스트 패턴 강화 필수 (선정적/범죄 키워드 차단)
- keyword_pool 하드캡: 코어 3,000 / 탐색 500 / 총 3,500
- 뉴스 키워드 주당 자동 편입 상한 10개
