# 체크리스트 — 보험금청구 계산기

**작성**: 2026-08-30 KST · ANU · 상태: 회장 승인 대기

---

## Phase 1 — 메뉴 + 실손 수동입력

### 구현 — ★ 새로 만들지 말고 **이동 + 고객 연계** (회장 (c))
- [ ] ★★ **기존 `SilsonCalculator.tsx`(984줄)를 재사용**한다. 재작성 금지
- [ ] `routes.ts:326~331` 의 `실손계산기` 항목을
      **`고객관리` 섹션 · `신규설계 비교`(:331~337) 아래**로 **이동**
      - [ ] title: **`보험금 청구계산기`**
- [ ] 기존 경로 `/tools/silson-calculator` 처리 — **리다이렉트 권장**. 판단+근거 기재
- [ ] 진입 화면에서 **실손 / 정액 선택** (회장 용어: "보장성" 아님)
- [ ] 정액은 이번 Phase 에서 **"준비 중" 안내**만 (Phase 3~4)
- [ ] ★ **고객 선택 추가** — 등록된 실손 정보에서 **세대 자동 판정**
      (`GET /api/insuro/search-customers` · `customer-policy-analyses` 기존 API 재사용)
- [ ] ★★ 결과에 **"검토 참고용"** 성격 명시 (회장 확정 방침)
- [ ] ★ 기존 수동입력 동작을 **깨뜨리지 마라** — 고객 미선택 시에도 계산 가능해야 한다

### 검증
- [ ] 메뉴가 신규설계 비교 **아래**에 뜨는지 (스크린샷)
- [ ] 실손/정액 선택 동작
- [ ] ★ 회장 제공 실물 영수증 수치로 계산 → 결과 타당성 확인
      (진료비총액 579,390 / 환자부담 315,350 / 종합병원 / 외래)
- [ ] ★ 세대 자동 판정이 고객 실손 정보와 일치하는지
- [ ] ★★ **"검토 참고용" 문구가 화면에 실재**하는지 (없으면 FAIL)
- [ ] 입력 유효성 — 항목 0건·31건·음수 금액
- [ ] vitest / pytest base 재측정 (같은 환경)
- [ ] 봉인 변이 3종: 메뉴 위치 이동 · "검토 참고용" 제거 · 세대 자동판정 제거

### ★ 회장 확인 지점
- [ ] **Phase 1 머지·배포 후 회장이 화면 확인** → 방향 점검 후 Phase 2 착수

---

## Phase 2 — 진료비세부내역서 파싱 → 자동 채움

### 구현
- [ ] 업로드(PDF/이미지) → 파싱 → 엔진 입력 **초안 생성**
- [ ] ★ 자동 채움값을 **사용자가 수정 가능**하게. 수정이 계산에 반영돼야 함
- [ ] ★ 영수증에서 **직접 나오는 것**: `benefit_type`(급여/비급여 열) ·
      `provider_tier`(요양기관 종류) · `amount`(항목별·합계) · `care_type`(입원료 유무)
- [ ] ★ 영수증에 **없는 것**: `severity` · `special_benefit`
      → 사용자 입력으로 남길지, 진단서를 함께 받을지 **판단하고 근거 기재**
- [ ] ★ 파싱 실패·부분 실패를 **화면에 드러내라**. 조용히 0/빈값 금지

### 검증
- [ ] ★ 회장 제공 실물 파일로 파싱 → 추출값 대조표
- [ ] 수정 가능 · 수정이 결과에 반영
- [ ] 파싱 실패 시 사용자에게 보이는지
- [ ] 응급/외래/입원 판정이 맞는지 (샘플은 응급 외래 1일)
- [ ] 봉인 변이 3종: 파싱 결과 수정 차단 · 실패 은폐 · 자동채움 무시

---

## Phase 3 — 진단서 파싱 + KCD 추출

- [ ] 진단서 업로드 → 진단코드(KCD)·질병명·진단일 추출
- [ ] ★ 양식 편차가 크다. 실패를 정상으로 위장하지 마라
- [ ] 추출값 사용자 확인·수정
- [ ] ★ 회장에게 **진단서 샘플 1~2건 요청** (선행 조건)

---

## Phase 4 — KCD → 담보 매칭 + 예상 보험금

- [ ] ★★ **착수 전 지식DB 등록률 재평가** — 낮으면 범위 재조정
      (t3024 실측: 메리츠 14/299)
- [ ] KCD → 담보 매칭 경로 신설
- [ ] 등록 증권의 담보별 가입한도와 대조
- [ ] ★ 매칭 실패를 **정직하게 고지** (t3024 `CoverageNotice` 패턴 재사용)
- [ ] ★★ **"검토 참고용"** 유지 — 확정 금액 표기 금지

---

## 전 Phase 공통 규율

- [ ] PR 생성까지가 봇 범위. **머지·배포·DDL 적용은 ANU**
- [ ] worktree 사용 (메인 저장소는 cron 이 06:00·08:00 실행)
- [ ] `gh` 호출 시 `GH_TOKEN="$BOT_GITHUB_TOKEN"` (회장 개인 PAT 금지)
- [ ] CI 는 base 에서도 적색일 수 있음: `ci` = 러너 디스크 `Errno 28`
- [ ] 변이가 no-op 아님을 `assert` 로 **먼저** 증명
- [ ] 봇이 ANU 명세 전제를 반증하면 **구현 말고 먼저 보고**
      (2026-08-29~30 에 ANU 명세가 **5회** 반증됨)
- [ ] ★ **개인정보** — 진료 서류에는 환자명·등록번호·질병정보가 있다.
      로그·커밋·스크린샷에 남기지 마라. 검증 캡처는 마스킹

## 봉인 대상 (건드리지 말 것)

- [ ] `server/silson/**` — 실손 계산 엔진 (t2955·t2958)
- [ ] `server/policy_grouping/**` — 담보 그룹핑·매칭 (t2938)
- [ ] `server/policy_extract/**` — 증권 파싱
- [ ] 벤치마킹 기능 일체 (t3062·t3063·t3064)

## 미해결 / 회장 대기

- [ ] [선행] Phase 3 착수 전 **진단서 샘플** 필요
- [ ] [판단] `severity`·`special_benefit` 조달 방법 (Phase 2)
- [ ] [재평가] Phase 4 지식DB 등록률
