# task-2873 · RP 화면 5건 정밀 수정 (dev1 · InsuRo)

- 브랜치: `task/task-2873-dev1` (base=origin/main #147, `91b84a9`)
- 커밋: `2ffbace [task-2873] RP 화면 5건 정밀 수정`
- webapp-only. merge_policy=none → finalize-only(머지·배포·최종 e2e/이미지대조는 ANU).
- 지정 5건만 수정, 그 외 요소 불변. exact 원(반올림/Math.round 추가 0)·직각 화살표·회사명 유지.

## 변경 파일 (5)
- `src/components/composite/CompositeGeneralIntro.tsx` — ① 최상단 고정 RP 제목 헤더 추가
- `src/components/composite/RpPresentation.tsx` — ②③④⑤ (단일담보 표·계단식·합계행·화살표)
- `src/components/composite/ConsultationHistoryView.tsx` — ① 레코드별 "복합설계 프레젠테이션(RP)" 라벨 제거(+미사용 Sparkles import 정리)
- `src/components/composite/__tests__/CompositeGeneralIntro.test.tsx` — ① 헤더 테스트
- `src/components/composite/__tests__/RpPresentation.test.tsx` — ①②③④⑤ 테스트(+31 케이스)

## 수정 5건
1. **반복 RP 제목 이관** — "복합설계 프레젠테이션(RP)"/"AI 복합설계 계산이란?"을 캡쳐별 레코드(RpPresentation·ConsultationHistoryView)에서 제거하고 최상단 고정 일반론(CompositeGeneralIntro) 헤더로 이관. `data-testid=composite-general-header`.
2. **암진단비 단일담보 표** — `max-w-xs` 컨테이너로 폭 축소(회사명↔보험료 밀착), 차액 블록 `text-right` 우측정렬, 월 보험료 차액 폰트 `text-xs→text-sm`(총액차액 text-2xl/3xl가 여전히 최대). 월차액 `data-testid=rp-single-cov-monthdiff`.
3. **계단식 총액차이 폰트↑ + 파란 화살표 폭↓** — `diffFont=18`(월보험료 `amountFont=16`보다 커 위계 부각), 파란 직각화살표 `blueConnX 620→582`·주황 `orangeConnX 684→648`로 폭 축소, 숫자도 함께 좌측 이동. 곡선 0(직각 M/L만).
4. **합계행 2개회사 합산** — tfoot에 "복합설계 합산" 행 추가, 조합 열 묶음 위 colSpan으로 `sumDual` 표기. **Section1·Section2 두 테이블 모두**. `data-testid=rp-section{1,2}-sum-dual-combo`.
5. **Section2 계단식/표/화살표** — ③ 동일 적용 + 합계행에 2개회사 합산 + 3개회사 합산(`sumTriple`) 둘 다(`rp-section2-sum-triple-combo`). 주황(3사) 화살표가 파란(2사) 숫자를 침범하지 않도록 파란 라벨을 z-order 최상위로 그리고 흰 배경 백플레이트(외곽선 없음, `rp-arrow-s2-dual-backplate`)로 보호. Section1(2사만)엔 백플레이트 미렌더.

## 검증
- `npx tsc --noEmit`: **0 (클린)**
- `npx vitest run` 전체: **1010/1010 PASS · 66 파일 (회귀 0)**. 신규 RP/GeneralIntro 케이스 포함.
- 가드: 신규 라인에 `Math.round`/`toFixed`/`roundTo` **0**, 신규 svg path에 곡선 명령(Q/C) **0**.
- e2e(`composite-design-vpath.spec.ts`, clean worktree · CI parity):
  - base(#147)·task 각각 동일하게 **2건만 실패**(케이스 A/B), 실패 지점 동일 `locator('text=최근 상담이력')` — 로컬 mock 하네스 환경 한계(페이지 로드 단계, **RP 어설션 도달 이전**).
  - ⇒ **회귀 0**(base 2 fail == task 2 fail, 동일 로케이터·동일 원인). RP 렌더 계약은 vitest 31 케이스로 커버.
  - e2e는 testid 스코프 로케이터 사용 → 신규 combo 셀/백플레이트가 getByText strict-mode 충돌 유발 없음(정적 확인).

## L1 스모크테스트 결과

프론트(RpPresentation·CompositeGeneralIntro) 렌더 계약을 vitest(jsdom) 렌더로 스모크 검증 — **PASS(성공)**.

- `npx tsc --noEmit`: 0 (타입 클린)
- `npx vitest run`: **1010 passed** / 66 files (회귀 0). 신규 RP 5건 계약 케이스 포함, 전부 확인:
  - ① `composite-general-header` 렌더 + RpPresentation 레코드영역 "AI 복합설계 계산이란?" 미노출 — 확인
  - ② `rp-single-cov-monthdiff`(text-sm) + 차액 우측정렬 + `max-w-xs` 폭 축소 — 확인
  - ③ 계단식 diff 폰트(18) > 월보험료 폰트(16) + 곡선 0 — 확인
  - ④ `rp-section1-sum-dual-combo` / `rp-section2-sum-dual-combo` 2개회사 합산 — 확인
  - ⑤ `rp-section2-sum-triple-combo` + `rp-arrow-s2-dual-backplate`(흰 배경) + z-order(파랑>주황) — 확인
- 결과: 신규 5건 계약 테스트 전부 **PASS**, 전체 스위트 회귀 0 (188개 composite 관련 케이스 포함 tests passed).

(브라우저 e2e 최종 왕복·이미지 대조는 순서 B에 따라 ANU가 배포 환경에서 수행.)

## 완료(순서 B)
커밋 → push(origin/task/task-2873-dev1) → finish-task(FINALIZE_ONLY, STRICT scope-guard) → `.done`. 검증(최종 e2e·이미지 대조)·머지·CF Pages 배포는 ANU.
