# task-2871 — RP 화면 PDF 2섹션 분리 (섹션1 1&2사 / 섹션2 2&3사) + 직각(ㄱ자) 화살표

## Situation
회장 수정 PDF(`인슈로 복합설계 프리젠테이션 수정`)에서, 인슈로 복합설계 RP 화면의 전체담보 표+계단식이 **하나로 합쳐져** 표현되고 있었다. 회장 지시: PDF **1페이지(1&2사)·2페이지(2&3사)를 각각 별도 섹션**으로, **곡선 말고 직각 화살표**로, PDF 의미 그대로.

## Complication
- 기존 `RpPresentation.tsx`는 단일 `FullTableView`(4열 통합 표) + 단일 `StaircaseView`(4단계) + 곡선(SVG Q 베지어) `CumulativeCurve`로 구성.
- 곡선을 직각으로 바꾸고, 통합 표/계단식을 2개 독립 섹션(섹션1=최고/최저/2사, 섹션2=2사/3사)으로 분리해야 함.
- 회귀 위험: 기존 e2e가 `rp-full-table`/`rp-combo-breakdown-*`/`rp-curve-*` testid에 의존 + 과거 rpComparison 관련 e2e strict-mode 회귀 사고 이력.

## Question
계산 로직(이미 exact 원·회사별 열·계단식 데이터 완비)을 재사용하면서, 렌더 구조만 2섹션으로 재편하고 곡선→직각 화살표로 교체하되, 회귀 0·strict-mode 0을 어떻게 보장하는가?

## Answer (구현)
데이터 계층(`rpPresentation.ts`)의 기존 계산(computeSingleMaxMin/computeComboBreakdown/computeStaircase/computeFinalStatement)을 **100% 재사용**하고, 섹션 표 조립만 신규 추가. 렌더는 2섹션으로 재편, 곡선 컴포넌트를 M/L 직선 화살표로 교체.

### 섹션 순서 (RpPresentation 루트)
(최상단 일반론 인포그래픽=CompositeGeneralIntro는 페이지 상단 별도 유지) → 고객정보 → 단일담보(일반상해) 카드 → **섹션1(1&2사)** → **섹션2(2&3사)+최종 대형문구** → 컴플라이언스 가드

### 섹션1 — "1개회사 & 2개회사 전체담보 비교"
- 표: 담보명 | 가입한도 | 1개회사 최고(빨강) | 1개회사 최저(파랑) | 2개회사 복합설계(회사별 열). 담당 회사 열에만 보험료, 타 열 빈칸. 합계행=합계액1/2/3.
- 계단식 3단계(1사최고→최저→2사) + **직각 파랑 화살표**(합계액1→합계액3, `−차액총액`).

### 섹션2 — "2개회사 & 3개회사 전체담보 비교"
- 표: 담보명 | 가입한도 | 2개회사 회사별 열 | 3개회사 회사별 열. 합계행=합계액3(2사)/합계액4(3사).
- 계단식 4단계 전체 + **직각 파랑 화살표**(최고→2사) + **직각 주황 화살표**(최고→3사).
- **최종 대형문구**: "최고 Max 보험료와 3개회사 복합설계 최저 보험료의 X년간 납입 보험료 총액 차이는 XXXXX원입니다." (exact 원, 최대 폰트)

### 직각 화살표
SVG path는 `M8,4 L8,28 L88,28`(세로→직각 꺾임, 직선만) + `polygon` 화살촉. **Q/C 곡선 명령 0건.** aria-hidden + 텍스트 라벨 병기(스크린리더/테스트).

## 수정/추가 파일
- `src/lib/rpPresentation.ts` — `computeSectionTables` + `RpSectionTable`/`RpSectionTableColumn`/`RpSectionTableCell`/`RpSectionTableRow` 신규. `buildRpPresentation`에 `sectionTables` 추가(기존 필드 유지).
- `src/components/composite/RpPresentation.tsx` — FullTableView/ComboBreakdownSection/StaircaseView/CumulativeCurve 삭제 → Section1/Section2/SectionTableView/SectionStaircase/CumulativeArrow 신설.
- `src/components/composite/__tests__/RpPresentation.test.tsx` — 신규 섹션/직각화살표 testid + 곡선 부재(assertNoCurvePaths) 검증으로 전면 갱신.
- `src/components/composite/__tests__/ConsultationHistoryView.test.tsx` — 구 `rp-sum-dual/triple` → 섹션별 회사 소계 testid로 교체(회귀 방지).
- `tests/e2e/composite-design-vpath.spec.ts` — `rp-full-table`/`rp-combo-breakdown-*`/`rp-curve-*`/`rp-stair-cumulative-*` → `rp-section1/2-table` + `rp-arrow-s1-dual`/`rp-arrow-s2-dual`/`rp-arrow-s2-triple` + `rp-section{1,2}-cumulative-*`. 모든 로케이터 rp 스코프+testid 우선(신규 텍스트 부분매치 미추가).

## 테스트 결과 (clean /tmp worktree, CI parity — 파일럿 .env 오염 배제)
- **tsc**: 에러 0 (base·task 동일)
- **vitest**: base 996 PASS / **task 997 PASS**(신규 곡선-부재 테스트 1건 순증), FAIL 0 → **회귀 0**
- **e2e** `composite-design-vpath.spec.ts`: 2/2 PASS, **strict-mode violation("resolved to N elements") 0건**(3회 실행 로그 전수 확인)
- **곡선 부재**: `rp-curve` 구현체 참조 0(테스트 검증코드만), `RpPresentation.tsx` SVG path Q/C 0건

## L1 스모크테스트 결과
- 서버 재시작: 해당없음(e2e webServer가 `npm run dev` vite:8080 자동 기동)
- API 응답 확인: 해당없음(webapp-only, route 스텁으로 자체완결)
- 스크린샷: `/home/jay/workspace/memory/reports/task-2871-shots/a-3-rp-presentation.png` — 섹션1/섹션2 분리, 직각(ㄱ자) 화살표(2사 파랑·3사 주황), 최종문구(2,400,000원), 곡선 미관찰. 팀장 육안 확인 완료(회장 수정 PDF 의도 일치).

## 발견 이슈 및 해결
- clean /tmp worktree e2e가 1·2차 시도에서 로컬 `.env` 부재로 앱 부팅 실패(supabaseUrl required / mock JWT ref 불일치). → CI가 secrets로 주입하는 값과 동일한 프로젝트 `.env`를 `.env.local`로 보급해 3차 시도에서 2/2 PASS 재현·해소(검증 후 삭제). **코드 결함 아님**(e2e 부팅 요건의 절차적 공백). 과거 vitest 파일럿 .env 오염 사고와는 별개.

## 머지 판단
- **머지 필요**: Yes (ANU 소유 — merge_policy=none)
- **브랜치**: `task/task-2871-dev1`
- **워크트리 경로**: `/home/jay/projects/InsuRo/.worktrees/task-2871-dev1`
- **PR**: #145 (https://github.com/Jeon-Jonghyuk/InsuRo/pull/145)
- **머지 의견**: 회귀 0·strict-mode 0·L1 실동작 확인. webapp-only, 서버/확장 불변(git diff 확인). ANU 독립 e2e·Codex 검토 후 머지·CF Pages 배포 권장.

## 모델 사용 기록
- 이리스(프론트, sonnet): 구현(lib+component+단위/e2e testid). — 일반 코딩/로직, sonnet 적합.
- 아르고스(테스터, sonnet): clean worktree 회귀 대조·e2e·L1 스크린샷 검증. — 분석/검증, sonnet 적합.
- haiku 미사용.

## 비고
- 완료 순서 B: 봇=push+.done까지, e2e 최종검증·Codex·머지·CF Pages 배포는 ANU.
- 데이터 재계산 0(계산엔진 재사용), exact 원·회사별 열·일반론 인포그래픽 전부 유지.

## 세션 통계
- 총 도구 호출: 0회


## 세션 통계
- 총 도구 호출: 0회


## 세션 통계
- 총 도구 호출: 0회


## 세션 통계
- 총 도구 호출: 0회

