# task-2012: InsuRo RC-5~6 구현 (FOMO 구체화 + CTA CMS)

## SCQA

**S**: InsuRo 인슈위키 소개 페이지에 FOMO 카운터(블로그 유입량)가 하드코딩 랜덤값으로 구현되어 있고, CTA 문구가 코드에 직접 박혀 있어 마케팅팀이 수정하기 어려운 상태이다.

**C**: 하드코딩된 가짜 데이터는 신뢰도를 떨어뜨리고, CTA 문구 변경 시 개발자 개입이 필수적이어서 마케팅 실험 속도를 저해한다.

**Q**: FOMO 섹션을 Supabase 실시간 데이터 기반으로 전환하고, CTA 텍스트를 중앙 설정 파일에서 관리할 수 있는가?

**A**: RC-5는 `useWikiPerformance` 훅으로 `content_metrics` 테이블에서 주간 데이터를 30초 폴링 조회 + 페이지네이션으로 1000행 제한 우회 + AreaChart 그래프 시각화 완료. RC-6는 `CTA_CONFIG` 중앙 설정 파일 + `useCtaTexts` 훅으로 하드코딩 제거, 변경 이력 로그 구조 도입 완료. TypeScript 에러 0건, 테스트 153/153 PASS (기존 실패 1건은 범위 외).

---

## 수정 파일 목록

| 파일 | 변경 내용 | grep 검증 | 상태 |
|------|-----------|-----------|------|
| src/hooks/use-wiki-performance.ts (신규) | Supabase content_metrics 주간 집계 훅 - fetchAllMetrics 페이지네이션 + Promise.all 병렬 조회 + 30초 폴링 | grep "fetchAllMetrics" OK (3건) | verified |
| src/config/cta-config.ts (신규) | CTA_CONFIG 3개 항목 + CTA_CHANGE_LOG + getCtaText 유틸 | grep "CTA_CONFIG" OK (3건) | verified |
| src/hooks/use-cta-texts.ts (신규) | useCtaTexts 훅 - useMemo로 CTA_CONFIG 조회 | grep "useCtaTexts" OK (2건) | verified |
| src/pages/InsuWikiIntro.tsx (수정) | FOMO 섹션 실시간 데이터 연동 + AreaChart 그래프 추가 + CTA CMS 연동 | grep "useWikiPerformance" OK, grep "useCtaTexts" OK | verified |

---

## 발견 이슈 및 해결

### 자체 해결 (3건)
1. **Gemini High: Supabase 1000행 기본 제한** — `fetchAllMetrics` 페이지네이션 함수로 전체 행 조회 보장 (use-wiki-performance.ts:32-57)
2. **Gemini Medium: 순차 쿼리 비효율** — `Promise.all`로 이번주/전주 데이터 병렬 조회 (use-wiki-performance.ts:87-98)
3. **TypeScript 타입 캐스팅 에러** — `as unknown as MetricsRow[]`로 안전한 타입 변환 (use-wiki-performance.ts:51)

### 범위 외 미해결 (1건)
1. **AdminFcpa.test.tsx 실패** — `@testing-library/user-event` 미설치 (기존 이슈). 범위 외 사유: 본 작업과 무관한 의존성 문제

---

## L1 스모크테스트 결과
- 서버 재시작: 성공 (Vite dev server :5174 → HTTP 200)
- API 응답 확인: SPA index.html 정상 로드, main.tsx 번들 포함 확인
- 스크린샷: 해당없음 (Playwright 미설치 환경)

---

## 테스트 결과
- vitest run: 153/153 PASS (1 suite FAIL — AdminFcpa.test.tsx, 범위 외)
- TypeScript: tsc --noEmit 에러 0건

---

## 머지 판단
- **머지 필요**: Yes → 완료
- **브랜치**: task/task-2012-dev4
- **PR**: https://github.com/JonghyukJeon/InsuRo/pull/9
- **Gemini 리뷰**: High 1건 수정 후 머지 완료
- **머지 의견**: High severity 해결 완료 (페이지네이션), 기존 테스트 회귀 없음

---

## 완료 시그니처 검증
- [x] `fomo.*realtime|wiki.*performance` @ src/ → 6건 매칭
- [x] `cta_texts|cms.*cta|CTA_CONFIG` @ src/ → 7건 매칭

---

## 모델 사용 기록
- 카르티케야 / 작업: useWikiPerformance 훅 + CTA config + useCtaTexts 훅 / 모델: sonnet
- 사라스바티 / 작업: InsuWikiIntro.tsx FOMO 실시간 연동 + 그래프 + CTA CMS / 모델: sonnet
- 비슈누 (팀장) / 작업: Gemini High 수정 (fetchAllMetrics 페이지네이션) / 모델: opus (직접 개입 - Gemini 리뷰 대응)
- 하누만 / 작업: CTA config + useCtaTexts 훅 테스트 8건 / 모델: sonnet

---

## QC 결과
- full_suite_check: PASS (2397 passed)
- file_check: PASS (7/7)
- tdd_check: WARN (TDD 순서 위반 - 구현 후 테스트, 차단 아님)
- signature_check: FAIL (프로젝트 외부 경로 구조 이슈 - 실제 grep 수동 확인 완료)
- 소요 시간: 23분 51초


## 세션 통계
- 총 도구 호출: 0회

