# task-2108 완료 보고서
## InsuRo 분석&도구 메뉴에 인슈위키 + 메디스캔 추가

---

**S**: InsuRo 플랫폼의 분석&도구 메뉴에 5개 항목(소식지분석, 보험료/환급률 분석, 보험사 전산정보, 각종 계산기, 외부 참고 사이트)이 존재하며, 인슈위키는 "안내" 섹션의 /insuwiki-intro 경로에 별도 배치되어 있다. 메디스캔 페이지는 미존재.

**C**: BUX-28/BUX-29 요구사항에 따라 인슈위키와 메디스캔을 분석&도구 메뉴에 추가하고, 히든 플랜 전용 접근 제어를 구현해야 한다. 현재 인슈위키는 모든 사용자에게 동일한 소개 페이지를 보여주고 있어 히든 플랜 분기가 없다.

**Q**: 분석&도구 메뉴에 인슈위키/메디스캔을 올바른 순서로 추가하고, 히든 플랜 사용자에게만 서비스 접근을, 비히든 사용자에게는 안내 + CTA를 보여줄 수 있는가?

**A**: 6개 파일을 수정/생성하여 완료. navigationConfig.ts에 분석&도구 메뉴 항목 2개 추가, routes.ts에서 인슈위키를 안내→분석&도구로 이동(/insuwiki-intro→/tools/insuwiki) + 메디스캔 라우트 추가(/tools/mediscan), planFeatureMap에 히든 플랜 기능 키 2개 등록, InsuWikiIntro.tsx에 useUserPlan 분기 추가(히든→외부 링크, 비히든→기존 소개), MediScan.tsx 신규 생성, HelpGuide.tsx 목차 업데이트. npm run build 22.27s 성공, 번들 2개(MediScan-CFPt8fn6.js, InsuWikiIntro-BsK1QhV3.js) 정상 생성.

---

## 수정 파일 목록

| 파일 | 변경 내용 | grep 검증 | 상태 |
|------|-----------|-----------|------|
| src/components/navigation/navigationConfig.ts | 분석&도구에 인슈위키/메디스캔 항목 추가, BookOpen import | grep "인슈위키" OK (line 64), grep "메디스캔" OK (line 65) | verified |
| src/config/routes.ts | /tools/insuwiki, /tools/mediscan 라우트 추가, /insuwiki-intro 제거, Search/MediScan import | grep "/tools/insuwiki" OK (line 259), grep "/tools/mediscan" OK (line 266) | verified |
| src/config/planFeatureMap.ts | insuwiki(히든), mediscan(히든) 기능 키 추가 | grep "insuwiki" OK (line 23), grep "mediscan" OK (line 24) | verified |
| src/pages/InsuWikiIntro.tsx | useUserPlan 분기(isHidden→외부 링크, 비히든→기존 소개+CTA), ExternalLink import | grep "isHidden" OK (line 36, 82) | verified |
| src/pages/MediScan.tsx | 신규 생성 - 히든→준비중 안내, 비히든→기능소개+CTA | grep "isHidden" OK (line 24, 65), grep "MediScan" OK (line 23) | verified |
| src/pages/HelpGuide.tsx | SIDEBAR_SECTION_ORDER에 "분석&도구" 추가, SIDEBAR_MENU_URLS에 /tools/insuwiki, /tools/mediscan 추가, /insuwiki-intro 제거 | grep "분석&도구" OK (line 22), grep "/tools/insuwiki" OK (line 28) | verified |

## 메뉴 순서 확인

navigationConfig.ts 분석&도구 항목 순서:
1. 소식지분석 → 2. 보험료/환급률 분석 → 3. 인슈위키 → 4. 메디스캔 → 5. 보험사 전산정보 → 6. 각종 계산기 → 7. 외부 참고 사이트
→ 지시서와 일치

## 발견 이슈 및 해결

1. **Codex 리뷰 - PlanGuard 미사용 결정**: PlanGuard는 free/basic/pro/max 4단계만 지원하고 hidden 전용 접근이 불가. useUserPlan의 isHidden 플래그로 페이지 내부에서 직접 분기 처리. planFeatureMap에 minPlan: "히든" 등록으로 FeatureGate 호환성 확보.
2. **메디스캔 프로젝트 미존재**: /home/jay/projects/mediscan/ 경로 없음. 소개/안내 페이지만 생성하고 "서비스 준비 중" 메시지 표시. 실제 서비스 연동은 별도 작업 필요.
3. **InsuWiki URL 미확정**: insuwiki.vercel.app을 임시 URL로 사용. 정확한 URL 확정 시 InsuWikiIntro.tsx:95 수정 필요.

## L1 스모크테스트 결과

- 서버 재시작: 성공 (npm run dev → port 8080)
- API 응답 확인: 해당없음 (프론트엔드 전용 작업)
- 스크린샷: /tools/insuwiki 접근 시 로그인 리다이렉트 정상 동작 확인 (인증 필요 페이지)
- npm run build: 성공 (22.27s, 에러 0건)
- 번들 확인: MediScan-CFPt8fn6.js, InsuWikiIntro-BsK1QhV3.js 생성 확인

## 머지 판단

- **머지 필요**: Yes
- **브랜치**: task/task-2108-dev6
- **워크트리 경로**: /home/jay/projects/InsuRo/.worktrees/task-2108-dev6
- **머지 의견**: npm run build 성공, 모든 변경 파일 grep 검증 완료, 기존 코드 패턴 준수. 충돌 가능성 낮음 (독립적인 메뉴/라우트/페이지 추가).

## 로키 보안 감사 결과

- 감사자: 로키(loki, 보안 레드팀)
- 결과: **PASS**
- 주요 확인 사항:
  - 외부 URL(insuwiki.vercel.app): target="_blank" rel="noopener noreferrer" 적용 확인
  - 인증: AuthGuard로 모든 라우트 보호 확인
  - 접근 제어: useUserPlan() isHidden 분기 정상
  - XSS/인젝션: 사용자 입력 처리 없음, 정적 JSX만 사용
  - PII/시크릿: 하드코딩된 민감 정보 없음
- 권고사항: routes.ts에 hiddenOnly 플래그 추가 고려 (현재 컴포넌트 레벨 접근 제어로 충분)

## 모델 사용 기록

- 라다(프론트엔드): sonnet — 6개 마이크로태스크 일괄 수행 (네비게이션, 라우트, planFeatureMap, MediScan 페이지 생성, InsuWikiIntro 수정, HelpGuide 수정)
- 벨레스(테스터): haiku — planFeatureMap 테스트 추가
- 로키(보안): haiku — 보안 레드팀 감사
- 페룬(팀장): opus — 설계/분배/검토/통합


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

