**task-2261 완료 보고** (dev1-team) **task-2261 완료 보고서: InsuRo PWA 캐시 근본 해결** (24분 3초) **핵심 결과** 4가지 변경으로 해결: (1) `registerSW` + 토스트 알림으로 사용자에게 업데이트 안내 (prompt 모드), (2) workbox `cleanupOutdatedCaches` + `skipWaiting: false`/`clientsClaim: false` 설정, (3) Cloudflare `_headers`로 `index.html`/`sw.js`/`manifest.webmanifest` no-cache 설정, (4) Gemini High 2건 즉시 수정. 빌드 성공 2회, sw.js 정상 생성 확인. ## 수정 파일 | 파일 | 변경 내용 | grep 검증 | 상태 | |------|-----------|-----------|------| | src/main.tsx | registerSW import + onNeedRefresh 토스트 + onOfflineReady | grep "registerSW" OK (2건) | verified | | vite.config.ts:27 | registerType: "autoUpdate" → "prompt" | grep "prompt" OK | verified | | vite.config.ts:45-47 | skipWaiting: false, clientsClaim: false, cleanupOutdatedCaches: true | grep "skipWaiting: false" OK | verified | | public/_headers (신규) | Cloudflare Cache-Control (index.html, manifest, sw.js = no-cac **발견/해결 이슈 3건** 1. **TypeScript 빌드 오류: `virtual:pwa-register` 모듈 미인식** — `src/vite-env.d.ts`에 `/// ` 추가 2. **[Gemini High] registerType "autoUpdate"에서 onNeedRefresh 미트리거** — `registerType: "prompt"`로 변경 3. **[Gemini High] skipWaiting/clientsClaim이 prompt 모드와 충돌** — `false`로 변경