# [Lv.3] 생보 3대질병 진단비 생명보험사 비교분석 — 비교표 + 연속 계단 + 4누적화살표 (회장 승인 설계)

## allowed_resources
```yaml
allowed_resources:
  paths:
    - "src/components/composite/LifeThreeCriticalDiff.tsx"
    - "src/components/composite/__tests__/LifeThreeCriticalDiff.test.tsx"
    - "src/components/composite/ConsultationHistoryView.tsx"
    - "src/components/composite/RpPresentation.tsx"
    - "src/lib/lifeThreeCritical.ts"
    - "src/lib/__tests__/lifeThreeCritical.test.ts"
    - "tests/e2e/composite-design-vpath.spec.ts"
  forbidden_paths:
    - "server/**"
    - "extension/**"
    - ".github/**"
    - "src/config/api.ts"
    - "src/integrations/**"
  commands: ["npx vitest","npx tsc","npx playwright","git"]
  merge_policy: "none"
  ttl_hours: 20
```
> ★ merge_policy=none. base=현 origin/main. **webapp-only, 서버·확장·DB 무변경**(데이터는 이미 저장된 것 사용). RpPresentation은 손보 계단식 시각·데이터 참조/재사용용(손보 로직 변경 금지). **회장 승인 목업 = `/home/jay/.cokacdir/workspace/autoset/life_optionC2_mock.png`** (이 이미지대로 구현).

## 배경 (회장 승인 최종 설계 — "하나의 연속 사다리")
현재 생보 3대질병 섹션(91% 배너 + 2계단 카드)을 **회장 승인 설계로 전면 교체**. 손보 계단식과 컨셉을 완전 통일: 최고 Max에서 3개회사 복합 → 생보 대체까지 **하나의 연속 총액 사다리**. 기존 손보 계단식(RpPresentation) **바로 아래**(현 위치 유지). 손보 4단 반복 포함 OK(회장 확정: 최고 Max에서 떨어지는 흐름을 다시 보여주는 게 목적, 고객 설명 자료라 중복 무방).

**★ 기존 91% 리드 배너·2계단 카드는 제거(새 설계로 대체).**

## 목표 화면 (승인 목업 life_optionC2_mock.png 기준, 위→아래)

### A. 상단 비교표 "3대질병 진단비 생명보험사 비교분석"
컬럼: **담보명 | 가입한도 | [손해보험 3개회사 선택시 최저 min: 회사명·보험료] | [생명보험사 기준 최저: 회사명·보험료] | [생명보험 1개회사 선택시 최저 min]**
- 행: 암진단비 · 뇌혈관질환진단비 · 허혈성심장질환진단비 + **보험료 합계** 행
- **가입한도** = 오마이매니저 캡처값(selected_coverages/matrix amount)
- **손보 3개회사 최저** = 3사 복합 대상 손보사 중 그 담보 최저 회사·보험료(analysis_matrix)
- **생보사 기준 최저** = 담보별 각각 최저 생보사·보험료(life_matrix argmin, 담보마다 다를 수 있음)
- **생보 1개회사 최저** = 3담보 합 최저 단일 생보사. ★ **회사명은 컬럼 헤더에 1회만**(예 "▶ KB라이프"), **셀은 보험료만**(회사명 중복 금지 — 회장 지시)
- 합계행: 손보 3사 합 / 생보사 최저 합 / 생보 1사 합

### B. 연속 계단(6단) — 월 총보험료 기준, 하나의 사다리
1. **최고 Max** — 단일 최고가 손보사 · 총보험료
2. **최저 min** — 단일 최저가 손보사 · 총보험료
3. **2개회사 복합설계** — dual_best 조합 · 총보험료
4. **3개회사 복합설계** — triple_best 조합 · 총보험료
5. **최저 암진단비만 생보사 대체** — 3사복합에서 암진단비만 최저 생보사로 대체한 총보험료
6. **3대질병 진단비 생보사 대체** — 3담보 모두 단일 최저 생보사로 대체한 총보험료
- 뱃지: 손보(RpPresentation) 양식과 **동일 크기·여백·글자**(손보 구간=파랑, 생보 구간=초록/진초록)
- 회사명 = **실제 회사명**(하나손해·메리츠·현대+농협·DB+현대+농협·미래에셋·KB라이프 등. 알파벳 자리표시자 금지)
- 금액 = 월 총보험료(우측정렬, tabular-nums)
- **세로 하강 화살표 = 금액(보험료) 열 아래**(손보 양식과 동일 위치. 회사명 쪽 아님). 손보 구간 파랑·생보 구간 초록/빨강. 화살표 옆에 단계 차액(20년 총액)

### C. 오른쪽 누적 직각화살표 4개 — 전부 최고 Max에서
- 파랑→2개회사, 주황→3개회사, **초록→암진단비 생보 대체, 빨강→3대질병 생보 대체**
- 각 = 최고 Max 대비 **20년(payment_years) 총액 차액**
- **윗부분 계단식으로 벌려 비겹침**(손보 참조 방식), **숫자는 세로선 위 흰 여백 글박스**(색 테두리, 4개 동일 형태), 하강 화살표 라벨과 안 겹치게 우측 정렬

## 데이터 (기존 계약 재사용)
- 손보 랭킹(최고 Max 단일·최저 min 단일·2사·3사 총액) = `composite`(single_max/single_min/dual_best/triple_best) 재사용(RpPresentation 손보 계단식과 동일 소스). 단일 최고/최저가 composite에 없으면 `analysis_matrix` per-insurer 합으로 산출 → 필요시 ConsultationHistoryView에서 `analysis_matrix` prop 추가 전달.
- 생보 per담보 = `life_matrix`. 담보 매칭 = **task-2886 로직**(coverage_cd 우선 + 정확명 allowlist + **유사암 배제**). 3담보: 암진단비·뇌혈관질환진단비·허혈성심장질환진단비.
- 대체 후 총액 = 3사복합 총액 − (해당 담보 손보배정) + (생보 대체가). 암진단비 최저 생보사(⑤) / 3담보 합 최저 단일 생보사(⑥)는 **독립 산출**(회사 다를 수 있음).
- 납입연수 = `query_condition.payment_years` **동적**(20/240 하드코딩 금지). 총액 차액 = 월차액×12×payment_years. 없으면 총액 graceful 생략.
- exact 원(반올림 금지). life_matrix/triple_best 없으면 섹션 graceful 미표시.

## 제약 · 컴플라이언스
- webapp-only. "절감" 금지 → **"차액"**. 곡선 금지(직각 M/L만). 색: 손보 파랑·생보 초록/빨강.
- 하단 컴플라이언스 각주 유지: "비교 기준=최고 Max 대비", "20년 총액=납입 단순합·할인/해지환급·갱신 미반영", "생보 진단비는 소액암 제외·감액기간·담보범위 회사별 상이 — 단순 금액비교 주의". 생보가 더 비싼 담보(예 허혈성심장)는 표에서 정직 표기.
- SVG 견고(이리스): viewBox 고정+CSS 스케일(px 하드코딩 금지), 회사명 left/숫자 right 열분리, 화살표 길이 clamp, 흰박스 rect 먼저+텍스트(z-order), 긴 회사명 축약+`<title>`, tabular-nums, 반응형(≤480 분기). 상단 손보와 시각 통일(공용 계단 컴포넌트 추출은 surgical, 손보 회귀 0).

## 검증
- `npx tsc` 0. `npx vitest run` 회귀 0. 신규/갱신:
  - 비교표(담보별 손보3사최저/생보사최저/생보1사, 가입한도, 합계, 생보1사 회사명 헤더 1회·셀 보험료만)
  - 연속 계단 6단(실회사명·월총보험료·단계차액) / 세로화살표 금액열 아래
  - 누적화살표 4개(최고 Max 대비 20년 총액, 비겹침, 흰박스)
  - payment_years 동적(20 하드코딩 부재) / 담보 매칭 유사암 배제 / 생보 비쌈 담보 정직 / "절감" 부재·"차액" / 91% 배너 제거 / life·triple graceful
- e2e 케이스 C 새 구조 testId로 갱신, strict-mode 회귀 방지, clean worktree PASS.

## 완료 (★ 순서 B)
- 변경 = src/ (+tests/e2e) 만. 서버/확장 불변.
- **dev6 금지** — dev1. 커밋 → push → finish-task **foreground 1회** → .done 즉시 종료. **background wait 금지.** ANU 검증·스크린샷 육안(SVG 겹침)·머지·CF Pages 배포(source /home/jay/workspace/.env.keys → wrangler pages deploy dist --project-name insuro --branch main)는 ANU.

## goal_assertions (auto-generated)
- `npx tsc`
- `npx vitest run`
