# [Lv.3] RP 배치2 — 웹앱: 비교블록 4개(D) + RP 순서 섹션(B) + 이동 딥링크(A)

## allowed_resources
```yaml
allowed_resources:
  paths:
    - "src/components/composite/**"
    - "src/pages/CompositeDesign.tsx"
    - "src/lib/**"
    - "src/**/__tests__/**"
    - "tests/e2e/**"
  forbidden_paths:
    - "server/**"
    - "extension/**"
    - ".github/**"
    - "src/config/api.ts"
    - "src/integrations/**"
  commands: ["npx vitest","npx tsc","git"]
  merge_policy: "none"
  ttl_hours: 18
```
> ★ merge_policy=none. base=현 origin/main(배치1 #140 포함 — query_condition에 payment_years/maturity_age/product_type 저장됨). webapp-only. 서버/확장 변경 0.

## 배경 (회장 확정 — RP 상담 결과지)
배치1로 저장 레코드에 담보명 정상·납입기간(payment_years)·상품유형 확보. 이제 웹앱 상담이력을 RP 대본 흐름으로 재구성. 페이지 세로로 길어져도 OK.

## 회장 확정 규칙 (배치1 결정 그대로)
- 비교는 **비갱신형만**(상품유형으로 확인). 납입기간 = query_condition.payment_years(20/30…). **X년 총액 = 월보험료 합계 × payment_years×12** (20년=240, 30년=360). payment_years 없으면 20년 fallback+"20년 가정" 표기.
- **% 표현은 절대값 큰 쪽**: 두 총액 A(작은)·B(큰) 비교 시, 분모를 **작은 총액**으로 → 큰 %("A 대비 +X%"). 부호·기준 명시(예 "메리츠 대비 +25.9%").
- basket 완전성은 설계사 선택으로 보장(별도 검증 UI 불필요).

## 작업 D — RP 비교블록 4개 (핵심)
매트릭스 상/중간에 **4개 비교블록**을 명확히 배치(회장 지정 순서·누적 스토리):
1. **1사 최대(A사) vs 1사 최저(B사)** — 단일사 총액 최고 vs 최저. 월차액 · N년 총액차액 · %(절대값 큰 쪽).
2. **1사 최저(B사) vs 2사 조합(C·D사)** — 월차액 · N년 총액차액 · %.
3. **2사 조합 vs 3사 조합(E·F·K사)** — 월차액 · N년 총액차액 · %.
4. **1사 최대(A사) vs 3사 조합** — 총 클라이맥스(가장 큰 차액). 월차액 · N년 총액차액 · %.
- **1사 최대/최저** = per_insurer(단일사) 총액 중 max/min. **완전커버 단일사만**(미제공 담보 있는 사 제외 — 배치1 담보명/미제공 데이터 기준). 회사명 표기(예 "하나손해 vs 메리츠").
- 각 블록 표기 3요소: **월차액**(천단위 반올림) · **N년 총액차액**(십만단위 반올림) · **%(절대값 큰 쪽, 기준 명시)**.
- **★ 폰트 위계**: **N년 총액차액이 가장 큼**(회장 강조 — RP 핵심). 월차액·% 는 보조 크기.
- **누적 스토리**: 4블록이 1사최대→최저→2사→3사로 차액이 계단식으로 커지는 시각 연결(블록4=총합 클라이맥스 강조).
- **정직 표기**: 차액은 "차이"/"차액" 중립어(손해/절감 단정어 지양). 총액은 "현 보험료×납입기간 기준(비갱신)" 근거 문구.
- **반올림 정합**: 월차액 반올림값×개월수 ≠ 총액차액일 수 있음 → **총액차액=원단위 총차액을 십만단위 반올림**, 월차액은 참고(불칸 규칙).

## 작업 B — RP 순서 세로 섹션 배치
상담이력 상세를 RP 흐름 순서로 세로 섹션화(풀스크린 아닌 한 페이지 스크롤):
1. 고객정보 + 선택담보(테이블)
2. **단일담보 비교**(선택 시 대표담보 1개 보험사별 — 있으면. 없으면 생략 가능)
3. **1·2·3사 통합 매트릭스**(현행 유지)
4. **비교블록 4개**(작업 D) — 매트릭스 하단 또는 중간
5. 요약(월보험료 합계 → N년 총액)
- 기존 통합 매트릭스 컴포넌트 재사용. 섹션 헤딩으로 흐름 명시.

## 작업 A — 캡처→인슈로 이동 딥링크
- 확장 저장 성공 후(또는 상담이력 진입점) **"인슈로에서 상담하기"** 이동 경로. 최소구현: 상담이력 뷰가 특정 레코드로 딥링크(`/composite-design?record=<id>` 등) 열리게 + 저장 직후 안내. (확장 변경 없이 웹앱 라우팅만. 확장 연동이 필요하면 범위 밖으로 빼고 웹앱 딥링크만.)

## 제약
- webapp-only. 서버/확장 0. 합계·per_insurer·조합은 서버 응답 재사용(재계산 금지, X년 곱만 웹앱).
- 배치1 필드(payment_years/product_type/담보명) 없으면 graceful(20년 가정·상품유형 미표시).
- 기존 매트릭스·삭제버튼·조합 회귀 0.

## 검증
- `npx tsc` 클린. 컴포넌트: 4비교블록(월차액·N년총액차액·% 절대값큰쪽·기준명시) / 총액차액 폰트 최대 / 1사 최대·최저 완전커버 단일사 판정 / payment_years 반영(20·30년) 없으면 20년fallback / RP 순서 섹션 / 딥링크. 반올림 정합(총액차액 원단위→십만라운딩). 기존 회귀 0.
- e2e(가능): 레코드 열어 비교블록·순서 렌더.

## 완료 (★ 순서 B)
- 변경 = src/ (+tests/e2e) 만. 서버/확장 불변.
- **dev6 금지** — dev1. 커밋 → push → finish-task **foreground 1회** → .done 즉시 종료. **background+wait 금지.** ANU 검증·Codex 검토·머지·CF Pages 배포는 ANU.
