# [Lv.4] 복합설계 RP 화면 — 회장 PDF 정합(최소기준) 개선

## 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: 20
```
> ★ merge_policy=none. base=현 origin/main(RpPresentation.tsx·rpPresentation.ts·CompositeComboResult.tsx 존재). **웹앱-only, 서버 무변경.** 회장 PDF(`인슈로 복합설계 프리젠테이션 초안`)가 기준=최소.

## 배경
배포된 RP 화면이 회장 PDF 대비 미달·이탈. 회장 확정 지시 반영. **회장이 언급 안 한 부분은 현행 유지**(과잉수정 금지).

## 회장 확정 지시 (그대로)
### A. 반올림 전면 제거 — 있는 그대로(exact 원)
- **모든 금액을 반올림 없이 정확한 원단위로 표기.** 설계사가 읽을 때 반올림하므로 화면은 exact.
- `rpPresentation.ts`/`rpComparison.ts`의 `roundTo100000`·`roundTo1000` 등 **표시 반올림 전부 제거**. 계단식 스텝·헤드라인·총액차액·표 전부 raw 원단위(`toLocaleString('ko-KR')`).
- **부수효과(정합 자동 해소)**: 반올림 없으면 계단식 스텝합 = 헤드라인이 **정확히 일치**(현재 22.5M≠22.6M 불일치 소멸). 검증에 이 등식 명시.
- **만원 단위 변환 금지**(회장: exact 원 표기). 이전 미팅의 "만원 단위" 제안은 폐기.

### B. 계단식 = 진짜 계단 + 곡선 화살표(의미 반영)
- 텍스트 나열 → **시각적 계단(waterfall 느낌)**: 1사최고 → 1사최저 → 2사조합 → 3사조합, 각 단계가 아래로 내려가며 총액 감소.
- **직선 화살표(연속)** = 단계 간 차액(1사최고→최저, 최저→2사, 2사→3사).
- **★ 곡선 화살표 = "1사 최고(가장 비싼 단일사) 대비" 누적 비교.** 곡선은 **1사최고에서 각 하위 단계(2사·3사 등)로 뻗어**, "가장 비싼 회사로 다 넣는 것 대비 이만큼 덜 낸다"를 표현. (PDF 2·3장의 곡선 = Max 기준 누적 차액.) 단순 장식 곡선 아님 — **기준점=1사최고**임을 시각·라벨로 명확히.
- 각 화살표에 차액(exact 원) 표기. 곡선 라벨 예: "가장 비싼 곳 대비 −OOO원".

### C. 2사·3사 테이블 = 선택 회사별 열 분리
- 현재: "2사 조합" 1개 열에 "회사명 + 보험료" 뭉침.
- **변경(PDF 구조)**: 각 조합의 **선택 회사들을 각각 열 헤더**로. 2사조합=선택 2개사 2열, 3사조합=선택 3개사 3열.
  - 각 담보 행: 그 담보를 **담당한(가장 저렴한) 회사 열에만 보험료** 표기, 나머지 회사 열은 **빈칸**.
  - 예: 2사조합(현대·농협) → 상해후유장해 5,280은 **현대 열**에만, 뇌혈관진단비 27,000은 **농협 열**에만.
- **열별 소계 + 조합 총액**(= 각 회사 담당분 합). 담보별 담당회사 배정은 기존 dual_best/triple_best.coverages 재사용.
- 폭 넓어짐 주의: 가로 스크롤 + 담보명 열 sticky 유지.

### D. 인포그래픽 = 실제 조합 Matrix 도식 (placeholder 제거)
- 현재 의미없는 파란 막대 → **조합 폭발 Matrix/도식**: 완전커버 n사 → C(n,2)+C(n,3) 조합(동적, 예 10사=45+120=165, 8사=28+56=84). "수동으론 불가능, AI가 순식간" 메시지. PDF 1장 Matrix 스타일.

### E. 담보명 코드 노출 제거
- a042 등 코드 → 실제 이름. 저장 `coverage_name`이 코드형이면 카탈로그/표시가드로 처리. 화면에서 raw 코드 노출 0(불가피하면 "미분류" degrade, 코드는 tooltip). **옛 레코드 backfill(서버)은 범위 밖** — 재캡처 시 정상.

### F. 고객정보 만기 표시
- 헤더에 **YY년납 / ZZ세만기** 명확 표기(query_condition payment_years·maturity_age).

### G. 중복 매트릭스(영역1) 제거
- 최상단 기존 "1·2·3사 통합 매트릭스"는 **PDF에 없음**(전체담보 표만). **제거**해 PDF와 정합·중복 소거. (전체담보 표가 상위집합.)

### H. "총액 차이" 표기 (재명명 아님)
- 최종문구·곡선의 큰 숫자는 PDF대로 **"총액 차이"**(절감 아님). "절감/절약" 단어 지양 → PDF 표기와 일치하며 컴플라이언스도 통과. 큰폰트 유지(회장 PDF 의도).

## 제약
- webapp-only. 서버/확장 0. 계산은 서버 응답·기존 lib 재사용(반올림만 제거, 담보별 회사배정 재사용). exact 원.
- 회장 미언급 부분 현행 유지. 신규 UI 요소 `data-testid` 부여 + e2e strict-mode 회귀 방지(clean worktree 검증).

## 검증
- `npx tsc` 클린. `npx vitest run` 전체 PASS. 신규:
  - A: 어떤 표시값도 반올림 안 됨(raw), **계단식 스텝 exact 합 == 헤드라인 exact** 등식.
  - B: 계단 구조·직선(단계차액)·곡선(1사최고 기준 누적차액) 렌더·기준점 라벨.
  - C: 2·3사 회사별 열 분리, 보험료가 담당회사 열에만·타 열 빈칸, 열소계·조합총액 정합.
  - D: 인포그래픽 동적 조합수 C(n,2)+C(n,3).
  - E/F/G: 코드노출0·만기표시·영역1 제거.
- e2e clean /tmp worktree PASS(strict-mode 미발생).

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