# 계획서 — InsuRo 증권분석(보장분석) + 신규설계 최적화

**작성일**: 2026-08-12
**단일소스**: [[project_insuro_cancer_coverage_taxonomy_260812]] · 미팅: `memory/meetings/2026-08-12-insuro-policy-analysis-design.md`
**레벨**: Lv.4 신규 시스템 · **상태**: in-progress — **Phase 0a 측정 완료(task-2937, 260812)**, Phase 0 게이트 미완(실증권 대기)
**Phase 0a 판정**: 이름grouping **50.0% → FULL_PARSER** · 스키마 **wrap**(플래그 0/5) · 약관 발췌 recall **34.8% FAIL** · 표지 textlayer 94.4%/vision 72.2%
판정표 `teams/dev1/task-2937-policy-spike/reports/PHASE0_VERDICT.md` · 보고서 `memory/reports/task-2937.md`

## 목표
`insuro.biz/crm/policy-analysis`에서 설계사가 고객 증권(+약관)을 업로드하면 **두 산출물**을 만든다:
1. **보장분석** — 현재 고객이 가진 보험 진단 (고객에게도 공개)
2. **신규설계 최적화 비교** — 신규 설계 가성비 비교 (설계사 전용)
그리고 그 과정에서 **담보 지식DB를 축적**해 인슈로·인슈위키가 공유하는 "쓸수록 똑똑해지는" 지식창고를 만든다.

## 두 기능 (별개 양식)

### ① 보장분석 (고객 공개)
- 여러 회사 증권(PDF/JPG 여러 장) 업로드 → **한 표 병합**(회사별 열 자동, 같은 담보 합산)
- **대구분 순서 고정(변경 금지)**: 실손 → 진단비 → 치료비 → 수술비 → 일당 → 장애 → 요양 → 사망 → 운전 → 생활 (세부 항목은 조금 변경 가능)
- 열: 담보 | **권장가입금액 합계** | 회사별 증권(상품명·가입연월·납입기한/만기·보험료·납입잔여개월). 셀=가입금액(만원), 없으면 "-"
- **권장금액 대비 적정/부족/충분 판정** · 하단 **(리모델링 방향성)** 코멘트(AI 1차+설계사 수정)
- **1~2장 프린트 + PDF 다운로드** · 최하단 작은 글씨 고지("참고용, 정확한 보장은 약관 기준")

### ② 신규설계 비교 (설계사 전용)
- 담보 **극세분** × 회사별 **[한도 | 보험료 | 비고]** 3열 + 합계 보험료
- 워크플로우: 최대가입한도별 보험료 → **단위 가입한도당 보험료(가성비)** → 필요 가입한도 반영 최적안
- **AI 범위 = 1차 가성비 비교까지만**. 2차(수수료/시책/시상)=설계사 몫(매주 변동·개인별, AI 불가)
- **기존담보 잔여보험료 vs 신규보험료 비교(동일 가입한도 환산) = 필수**
- **설계사 선택 토글(최종결정) + 가입한도 변경 → 단위한도당 비례 자동 재계산**

## 암 담보 taxonomy (grouping 정답 그룹 — 회장 실무 정의)
- **진단비**: ①암진단비(유사암제외)+유사암 ②통합암진단비(부위그룹별) ③신재진단암(연1회 잔여/신규원발/전이) ④N번받는암(①+③)
- **치료비(급여무관)**: ①특정치료비(정액,주요치료받으면) ②특정치료비(비례,1억한도 1천만단위) ③주요치료비(수술/약물/방사선/중환자실 항목별) ④직접치료비(③+호르몬,받기만하면) ⑤통합치료비(③+연간한도 내 계속)
- **치료비(급여본인전액+비급여전용)**: ①하이클래스(비례유사 항목별한도) ②비급여통합치료비 ③비급여만
- **세분형(별도)**: 표적/면역/중입자/양성자/세기조절 개별 담보. ★**주요치료비(③)와 비교 필수**(세분 준비 vs 묶음)
- 담보군 확장 순서: **암 → 순환계 치료비 → 운전자보험**

## grouping 엔진 (규칙 → AI → 설계사)
- **rule-first + LLM-second + human-confirm**: 규칙 매칭 → 지식DB 과거 확정값 → 발췌문 AI 판정(근거조항 인용·confidence) → 애매하면 **설계사에게 질문** or **출력창에서 drag(위아래) 재배치**
- 설계사 확정 = **학습 루프**로 지식DB 축적(검수/수정=학습). 질문=설계사 교육 효과
- AI=계산·판정 가능한 것 / 설계사=시장변동·주관·최종확정

## 아키텍처
- **"학습" = 우리 지식DB에 grouping 축적**(AI 모델 학습 아님). 아누시스템(claude)=판정·vision 도구(무학습·stateless, P0-2)
- **지식DB 원본 = InsuRo Supabase 1곳**, 인슈위키는 조회 API(또는 기존 push main.py:6419). 담보 실질=공유 / 설계사 철학(권장금액 오버라이드 등)=개인
- **파일 vs DB 분리**: 약관 원본 PDF(20MB)는 DB에 안 넣음 → Google Drive. DB엔 **발췌 조항 텍스트(수 KB)+매핑**만
- **담보 canonical 상품 넘어 공유**(product↔coverage 다대다). 담보 개정=canonical 버전 up→참조 상품 반영
- **입력**: PDF + JPG(vision LLM 판독, Opus=유료 차별화) + **설계사 검수·수정 필수**. 인슈로 UI 업로드. 즉석분석 없음(사전 준비). ※JPG/vision은 **신규 어댑터**(기존 policy_analyzer는 PDF 전용 — Codex 정정)
- **계산 = AI 분리 결정적 함수**(금소법 수치환각 금지). 재계산=선형(동일피보험자·담보 한도조정, 경계=최소단위/상한). 기존 `composite_calculate_from_matrix`(main.py:7816)는 **선형 로직 참고·재사용하되 신규설계 비교용 별도 어댑터 필요**(복합설계 API용이라 그대로 못 꽂음 — Codex 정정)
- **★UNKNOWN 정책(B4)**: baseline(captured_amount)=0 등 계산 불가 시, 코드의 0 폴백을 **UNKNOWN으로 변환 표기**("0원"과 "계산 불가" 구분). 담보별 보험료 없으면 UNKNOWN(억지배분 금지, 금소법)

## 파일 저장 규칙 (Google Drive)
- 약관: `/policy_terms/{손보|생보}/{보험사}/{상품코드}/{판매개시일}/terms.pdf` — 표지 추출(논리키)+sha256(dedupe/개정판별). 내부전용+프록시. 계속 보관
- 증권: `/policies/{설계사id}/{고객id}/{업로드일}_{보험사}_{sha}.pdf` — 비공개(P0-1 프록시). 고객 이력 보관, 설계사 탈퇴 시 삭제
- DB엔 `drive_file_id`만(P0-1 체계 정합)

## 범위
### 포함 (MVP~초기)
- 보장분석(①) 완성 + 신규설계(②)는 **암 진단비/치료비 핵심 taxonomy만** 1차 가성비
- 규칙+AI+설계사 반자동 grouping, 상품단위 지식DB, 설계사 질문/drag
- 잔여보험료 표시, 선형 재계산, 프린트/PDF
- 회장 조직 전용

### 제외 (나중)
- 치료비 taxonomy 전부 극세분 자동화, 암 외 담보군(순환계/운전자), 2차 수수료/시책/시상
- 프로파일별(나이/성별/가족/직업/재산) 권장금액, 약관 개정 자동 diff, 멀티테넌시(대리점 판매)
- 전면 PII 마스킹/약관 저작권 방어선(테스트 중 문제 시 대응)

## Phase
- **Phase 0 (스파이크·게이트)**: 실증권 3~5건+약관 발췌로 ①추출 정확도 ②JPG vision 정확도 ③이름만 grouping 정확도 실측. taxonomy 동결. "확장 vs 재작성" 판정. **이 게이트 없이 Phase1 금지**
- **Phase 1 (보장분석 MVP)**: 증권→policy_analyzer→정규화(기타→요양/사망/운전/생활)→대구분순서 표→1~2장 프린트/PDF. grouping v0(룩업+미분류 버킷)
- **Phase 2 (암 grouping 엔진+지식DB)**: 상품단위 지식DB 스키마, 발췌 파이프라인(async·캐싱), 암 taxonomy AI grouping+confidence+설계사 질문/drag. Phase1 미분류 백필
- **Phase 3 (신규설계 비교 MVP)**: 암 핵심만. 회사별[한도|보험료|비고], 단위한도당, 잔여vs신규, 토글, 선형재계산+"추정치" 표기
- **Phase 4 (확장·하드닝)**: 순환계/운전자 담보군, 담보 diff, 지식DB 버전/감사, 멀티테넌시(대리점 유료·지식은 동일 공유·수익=이용료), PII/저작권

## 검증 기준
- Phase 0: 추출·vision·이름grouping 정확도 수치 확보 → 약관파서 투자 규모 판정
- 각 Phase: 골든셋(12~15 케이스: 이름≠실질/통합vs세분/동의어/갱신형/계산 함정/OOV) 그린 시 릴리스
- 계산: 역산 검증, ≤6원 반올림 통과·초과 UNKNOWN, 담보별 보험료 없으면 억지배분 금지(UNKNOWN)

## 위임 계획
- Phase 0 = 스파이크(백엔드+데이터). 회장 승인 후 팀 위임
- 신규 모듈 분리: policy_normalizer / policy_grouping_engine / policy_knowledge_repo / policy_comparison_engine / policy_print_view. policy_analyzer=추출 유지(래핑)
