# [Lv.3] RP 화면 3대 교정 — 암진단비 항상표시 + 반올림 완전제거 + 회장 PDF 이미지 SVG 픽셀재현

## 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(#145: RpPresentation 2섹션·SingleCoverageCard·CompositeGeneralIntro 존재). webapp-only. **회장이 화가 났다 — 지시한 것만 정확히, 아무것도 임의 삭제 금지.**

## 참조 이미지 (반드시 열어서 픽셀 단위로 따라 구현)
- **회장 수정 PDF**: `/home/jay/workspace/memory/refs/insuro-rp/insuro-rp-revised.pdf` (계단식·표 2페이지 = 최종 기준)
- 초안 PDF: `/home/jay/workspace/memory/refs/insuro-rp/insuro-rp-draft.pdf` (암진단비 단일담보 카드 원형)
- **이 이미지들이 절대 기준. 근사·해석 금지, 보이는 그대로 재현.**

## 교정 3건 (회장 지시)

### A. 암진단비(단일담보) 비교 = 상담 첫 시작, **항상 실제 비교 표시**
- 현재 `SingleCoverageCard`가 `available=false`면 **"대표 담보 비교 데이터 없음"** 빈 메시지 → 회장 화면에서 "사라진" 것처럼 보임(RpPresentation.tsx:108).
- **수정**: 단일담보 카드는 **절대 빈 메시지로 숨기지 말 것**. 대표담보 선정 = **암진단비(b002) 있으면 사용, 없으면 캡처된 담보 중 대표 1개(예 가입금액 큰 담보/첫 담보)로 fallback** → 항상 실제 회사별 보험료 비교(최고=빨강/최저=파랑 + 월차액 + 년납 총액차액) 표시. 상담이력에 담보는 항상 있으므로 "데이터 없음"이 뜰 이유 없음.
- **위치**: 인포그래픽(일반론)·고객정보 다음 **맨 앞 섹션**(상담 첫 시작). 초안 PDF 1페이지 암진단비 표 형태 유지.

### B. 반올림 **완전 제거** (회장: "원단위 반올림 하라고 얘기한 적 없어")
- `src/lib/rpPresentation.ts:34` `return Math.round(result);` → **Math.round 제거, 계산값 그대로 반환**(exact, 소수도 그대로). roundTo1000/100000은 이미 제거됨, **Math.round도 제거**.
- 화면 어디에도 반올림/절사 없음. 표시는 `toLocaleString('ko-KR')`로 천단위 구분만(값 변경 금지). 계단식 스텝·합계·총액차액·단일담보 전부 exact.
- 검증에 "어떤 표시값도 원본 계산과 다르지 않음(반올림 0)" 명시.

### C. 계단식/표를 **회장 수정 PDF 이미지와 픽셀 충실하게 SVG로 재현**
- 회장: "내가 만들어준 이미지 그대로 구현해. SVG를 써서라도." → **수정 PDF 계단식 도식을 그대로**:
  - **좌측 파란 라벨 박스**(둥근모서리, 파란 채움·흰 글씨) 세로 스택: `최고 Max` / `최저 min` / `2개회사 복합설계` / `3개회사 복합설계`.
  - **중앙**: 회사명(이탤릭 볼드) — 실제 회사명(L사=최고 단일사, M사=최저, O+P=2사 조합, Q+R+S=3사 조합).
  - **금액**(이탤릭 볼드): 상기합계액1~4 = 실제 exact 원.
  - **파란 굵은 아래 화살표**(채운 삼각 화살촉) + `- 차액총액`(exact 원) — 연속 단계 사이.
  - **우측 직각(ㄱ자) 커넥터**: 파랑 = 합계액1(최고)→합계액3(2사), 주황 = 합계액1(최고)→합계액4(3사), 각 `- 차액총액`. **곡선 금지, 직각만.**
  - 섹션1(1&2사)는 파랑 직각 1개(최고→2사), 섹션2(2&3사)는 파랑+주황 2개.
  - 색·박스모양·화살표 두께·라벨 위치·폰트 스타일을 **이미지와 동일하게** SVG로. 근사 렌더 말 것.
- **표**도 수정 PDF처럼: 파란 헤더(1개회사 선택시[최고Max/최저min], 2개회사 선택시 최저min[선택1/선택2] 등 2단 헤더), 회사명 행, 담당 회사 열에만 보험료, 보험료 합계행. 2섹션 유지.
- 최종 대형문구(섹션2 끝) 유지.

## 절대 금지 (회장 명시)
- **회장이 지시 안 한 것 임의 삭제·변경 금지.** 단일담보·인포그래мм**·삭제버튼·기존 기능 그대로 유지.
- 반올림 추가 금지. 곡선 사용 금지(직각만). 근사·해석 금지 — 이미지 그대로.

## 검증
- `npx tsc` 클린. `npx vitest run` 전체 PASS. 신규:
  - A: 단일담보 카드 **항상 실제 비교 렌더**(available=false 빈메시지 경로 제거/대표담보 fallback), 맨 앞 위치.
  - B: Math.round 부재, 표시값=원본 계산값(반올림 0) 단위테스트.
  - C: 계단식 SVG(파란 박스·회사명·exact 금액·파란 아래화살표·파랑/주황 직각 커넥터·곡선 0), 2섹션 표 구조.
- e2e clean /tmp worktree PASS(strict-mode 미발생). **참조 PDF 이미지와 육안 대조**(스크린샷 첨부 권장).

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

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