---
task_id: task-2110
type: context
scope: task
created: 2026-04-22
updated: 2026-04-22
status: completed
---

# 맥락 노트: task-2110

**task**: task-2110

---

## 결정 근거

### 3 Step Why 자문

**1st Why**: "왜 이 설계가 필요한가?"
→ InfoKeyword 기능의 UI 스켈레톤과 백엔드 스텁만 존재하고, 실제 분석 파이프라인(Worker)과 연동이 안 되어 사용자가 기능을 사용할 수 없다.

**2nd Why**: "왜 InsuRo 백엔드 → Worker 프록시 방식이 최선인가?"
→ Worker는 독립 서비스로 API 키 인증을 사용하며, 프론트엔드에서 직접 호출하면 API 키 노출 위험. InsuRo 백엔드가 프록시 역할을 하면 JWT 인증 + 플랜 검증 + Worker API 키 관리가 서버사이드에서 안전하게 처리된다.

**3rd Why**: "왜 이 접근이 다른 대안보다 나은가?"
→ 대안 1(프론트에서 직접 Worker 호출): API 키 노출 + CORS 복잡성. 대안 2(Worker 로직을 InsuRo 서버에 직접 이식): 코드 중복 + 유지보수 이중화. 프록시 방식은 Worker의 독립성 유지 + InsuRo의 기존 인증/플랜 체계 활용으로 최적.

### infokeyword_access ���도 feature key 결정
- **결정**: `keyword_tools_full` 대신 `infokeyword_access`를 별도 feature key로 분리
- **이유**: Codex 게이트 리뷰에서 지적 — 관리자가 인포키워드만 독립적으로 토글할 수 있어야 함
- **기각 대안**: `keyword_tools_full`에 묶어 사용 → 다른 키워드 도구와 분리 제어 불가

### KeywordAnalysis.tsx 탭 처리
- **결정**: info-keyword 탭에서 PremiumLocked 대신 전용 페이지(/info-keyword) 안내 카드 표시
- **이유**: 진입점 중복 해소 (Codex 리뷰 medium 리스크)

## 참조 자료

- InfoKeyword Worker: `/home/jay/projects/InfoKeyword/worker/`
- Worker API: `POST /analyze` + `GET /status/{id}` (포트 8100)
- Worker API 키: 환경변수 `INFORKEYWORD_API_KEY`

## 주의사항

- Worker가 인메모리 저장소 사용 → 재시작 시 진행 중인 분석 유실 가능
- Worker 폴링 최대 60초 → 복잡한 분석은 타임아웃 가능성
- INFORKEYWORD_API_KEY 환경변수는 InsuRo 서버에 별도 설정 필요 (env var name = INFORKEYWORD_API_KEY)
