---
task_id: task-2349
type: plan
scope: task
created: 2026-05-02
updated: 2026-05-02
status: completed
---

# 계획서: task-2349 — InsuRo 복합설계 Phase 2 UX 정합화

**task**: task-2349
**목표**: 확장 동적 감지(sideload 호환) + /composite-design 입력 폼 제거 → 캡처 데이터 자동 표시 (A안)
**승인**: 회장 (drumband@gmail.com) 2026-05-02 — A안 채택
**근거**: `memory/tasks/task-2349.md`, task-2336/task-2346 보고서

---

## 목표

1. **Phase 1**: `extension/content.js` DOM 마커 + postMessage HELLO 주입 → `extensionBridge.ts`가 EXT_ID 의존 없이 동적 감지. 토스트 거짓 알림 제거.
2. **Phase 2**: `/composite-design` UI 3단계 재구성 (A: 미설치 / B: 설치+캡처 없음 / C: 설치+캡처 있음). 입력 폼(성별/나이/보종/플랜/담보 선택+버튼) 완전 제거. 캡처 클릭 → 자동 계산 → 1사/2사/3사 카드. 보장 토글 시 재계산.

## 범위

### 포함
- `extension/content.js`: DOM 마커 + postMessage HELLO 주입 (모든 페이지에서 작동하도록 매니페스트 점검)
- `extension/manifest.json`: content_scripts matches 확장 (insuro.biz, localhost:5173 포함) — InsuRo 페이지에서도 마커 주입 가능하도록
- `src/lib/extensionBridge.ts`: pingExtension(DOM 마커 우선 → postMessage 폴백), setInsuroJwt(postMessage 패턴)
- `src/pages/CompositeDesign.tsx`: 입력 폼 제거, 3단계 UI, 캡처 자동 계산 + 보장 토글 인라인 재계산
- `src/pages/CompositeExtensionGuide.tsx`: ping 패턴은 동일 사용
- `vite.config.ts`: VITE_INSURO_HELPER_EXT_ID 정의 제거(있으면)

### 제외 (다음 페이즈 이후)
- 백엔드 `/composite-plans` deprecation 주석 추가는 옵션 — 본 task에서 미수행 (Phase 3)
- `ohmy_plans`/`ohmy_premiums`/`ohmy_coverages` 테이블 변경 없음

## 위임 계획

- Phase 1 (확장 + 브릿지): **스바로그(백엔드)** — extension/* + extensionBridge.ts (런타임/IPC 패턴)
- Phase 2 (UI 재설계): **라다(프론트)** — CompositeDesign.tsx 3단계 + 자동 계산
- UX 검증: **모코시(UX/UI)** — 단계별 안내 카피 + 네거티브 케이스 안내
- L1+L2 테스트: **벨레스(테스터)** — Playwright 시연 (단계 A/B/C + F12 콘솔 0)

## 검증 기준

- `npm run build` → exit 0
- Edge/Chrome 확장 미설치 페이지 접속 → 단계 A 안내만 (입력 폼 미표시)
- 확장 설치 + recent-views 0건 → 단계 B
- recent-views ≥ 1건 → 단계 C, 클릭 시 1사/2사/3사 카드 즉시 표시
- F12 콘솔: 에러 0건
- pingExtension(): DOM 마커로 즉시 true 반환 (postMessage 폴백 코드 동작 확인)
