# task-2238 완료 보고서: InsuRo 인슈위키 링크 보호 — URL 노출 금지 + 팝업 안내

**작업 레벨**: Lv.1
**팀**: dev4-team (비슈누 팀장)
**프로젝트**: InsuRo (`/home/jay/projects/InsuRo`)

---

## SCQA

**S**: InsuRo의 인슈위키 소개 페이지(`InsuWikiIntro.tsx`)에서 히든 플랜 사용자에게 "인슈위키 열기" 버튼이 `https://insuwiki.vercel.app` 외부 URL로 직접 연결되어 있었다.

**C**: 인슈위키 실제 URL이 프론트엔드 코드에 노출되어, 가족 전용 서비스의 접근 제어가 무력화될 위험이 있었다.

**Q**: 인슈위키 외부 URL을 완전히 제거하고, 대신 가족 전용 안내 팝업으로 교체할 수 있는가?

**A**: `InsuWikiIntro.tsx`에서 외부 링크를 제거하고 Radix Dialog 팝업으로 교체 완료. 프로젝트 전수 조사 결과 인슈위키 외부 URL 0건 확인. npm run build 성공.

---

## 수정 파일 및 검증 상태

| 파일 | 변경 내용 | grep 검증 | 상태 |
|------|-----------|-----------|------|
| src/pages/InsuWikiIntro.tsx:1 | `useState` import 추가 | grep "useState" OK (1건) | verified |
| src/pages/InsuWikiIntro.tsx:5-12 | Dialog 컴포넌트 import 추가 | grep "DialogContent" OK (2건) | verified |
| src/pages/InsuWikiIntro.tsx:46 | `showWikiDialog` 상태 추가 | grep "showWikiDialog" OK (4건) | verified |
| src/pages/InsuWikiIntro.tsx:92-136 | 외부 링크 제거 → Dialog 팝업으로 교체 | grep "insuwiki.vercel.app" 0건 | verified |

---

## 주요 변경 사항

1. **외부 링크 제거**: `<a href="https://insuwiki.vercel.app">` 완전 제거
2. **팝업 모달 추가**: Radix Dialog 활용
   - 안내 문구: "서울대보험쌤" 가족 전용 안내
   - "Q&A 문의하기" 버튼 → `/notices` 이동
   - "닫기" 버튼
3. **전수 조사 완료**: src/, .env 전체에서 insuwiki 외부 URL 0건

---

## 발견 이슈 및 해결

### 자체 해결 (1건)
1. **LSP 진단 오탐 (unused imports)** — Dialog import와 useState가 실제로는 사용 중이나 LSP가 미인식. npm run build로 실제 컴파일 성공 확인하여 false positive로 판정.

### 범위 외 미해결 (0건)
없음.

---

## L1 스모크테스트 결과

- 서버 재시작: 성공 (vite dev server, http://localhost:5173/ → HTTP 200)
- API 응답 확인: 해당없음 (프론트엔드 전용 작업)
- 빌드 결과: 성공 (`npm run build` → 15.19s, dist/ 생성 확인)
- 빌드 dist에서 insuwiki.vercel.app 검색: 0건 (완전 제거 확인)
- Playwright 스크린샷: 로그인 필수 페이지로 로그인 화면 캡처됨 (인증 우회 불가). 대신 빌드된 JS 파일에서 `insuwiki_intro`(config 키)만 존재하고 외부 URL은 없음을 검증.

---

## 검증 시나리오 결과

1. 코드에서 "인슈위키 열기" 클릭 → Dialog 팝업 표시 (외부 링크 이동 없음): **코드 검증 완료**
2. 팝업에서 "Q&A 문의하기" → `/notices` 이동 링크 설정됨: **코드 검증 완료**
3. 전체 코드에서 insuwiki 외부 URL grep → **0건 확인**
4. npm run build: **성공**

---

## 모델 사용 기록

- 사라스바티 / InsuWikiIntro.tsx 수정 (Dialog 팝업 구현) / sonnet / -

---

## 머지 판단

- **머지 필요**: No (Lv.1, main 브랜치에서 직접 작업)
- **커밋**: `22c4672` [task-2238] 사라스바티: 인슈위키 외부 링크를 팝업 모달로 교체

## QC 결과

- overall: 8 PASS, 1 FAIL (tdd_check), 11 SKIP, 3 WARN
- **tdd_check FAIL 사유**: Lv.1 프론트엔드 UI 수정 작업에 TDD가 부적합. QC 규칙 명시: "Lv.2+ 코딩 작업에만 의미 있음. Lv.1 단순 수정/설정/문서 작업은 SKIP 처리". 그러나 qc_verify.py의 tdd_check verifier가 task 레벨을 감지하지 않아 FAIL 발생. QC 도구 결함으로 판단.
- full_suite_check: pytest 2521건 PASS
- git_evidence: PASS (커밋 4건)
- l1_smoketest_check: PASS


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

