# [InsuRo] 증권분석 담보 grouping 엔진 — 정독 기반 + 학습형 human-in-the-loop

## allowed_resources
```yaml
allowed_resources:
  paths:
    - "server/policy_grouping/**"
    - "server/policy_grouping.py"
    - "supabase/migrations/**"
    - "server/tests/**"
  forbidden_paths:
    - ".env"
    - ".env.*"
    - ".github/**"
    - "server/policy_analyzer.py"
  commands:
    - "pytest"
    - "python3 -m py_compile"
    - "python3 -c"
  merge_policy: "tiered"
  ttl_hours: 48
```

## ★★★ 최상위 원칙 (위반 시 폐기)
**약관·담보 해석은 법조문과 같다. 키워드/발췌/이름 매칭 금지. 담보(특별약관) 단위로 조항 전문을 정독한다.** (task-2937 봇이 키워드로 담보구조부터 오판→측정 전부 폐기된 사고 박제)

## 단일소스 (필독)
- taxonomy·판별축·원칙: `/home/jay/workspace/memory/project_insuro_cancer_coverage_taxonomy_260812.md`
- 삼성 정독 매핑 실증(1차 norm): `/home/jay/workspace/memory/project_insuro_grouping_norm_samsung_260812.md`

## 핵심 요구 (회장 verbatim)
> "판단이 어려울 때는 어떻게 그루핑할지 **사용자(설계사)에게 물어봐야** 하고, 사용자가 결정해주면 그건 **자연스럽게 학습해서 다음부터는 알아서 잘 그루핑**할 수 있는 시스템."

## 구현 (MVP)
### 1. 담보 단위 정독 파이프라인
- 약관 PDF → **담보(특별약관) 단위로 분할**(조항번호 경계, 예 삼성 `26-1-N.` / 메리츠 `N-M.`·`N.`). 키워드 발췌 아님.
- 각 담보의 **제1조(보장범위)~지급사유 조항 전문**을 정독 대상으로 확보. 세부보장 개수("총 N개 세부보장")도 파싱.
- 정독=claude(무학습 경로 아누시스템). 조항 전문 입력 → 아래 판별축 추출.

### 2. 판별축 추출 (정독 결과 구조화)
담보별로 조항에서 판별:
- **트리거**: 진단만 / 특정치료받으면 / 항목별각각(수술·약물·방사선·중환자실) / 통합(연간한도) / 치료횟수조건 / 호르몬 등
- **급여범위**: 전체 vs 전액본인부담+비급여 전용(하이클래스/비급여통합)
- **가입 독립성**: 독립 특약 vs 세부보장 종속(단독가입 불가)
- **지급 형태**: 1회 일괄(→진단비) vs 매월 분할 등(→치료비)
- **대상 구분**: 통합 vs 암구분별(소액/소화기/N대/고액)
- 각 축 근거 조항(page/조항) provenance 저장.

### 3. taxonomy 매핑 + confidence
- 판별축 → taxonomy 그룹 매핑(진단비4 / 치료비 급여무관5 / 비급여3 / 세분형). confidence 산출.

### 4. ★학습형 human-in-the-loop (핵심)
- confidence 낮음/판별 애매 → **설계사에게 질문**(약관 실질 요약 + 후보 그룹 제시). 자동확정 금지.
- 설계사 결정 → **지식DB에 (담보 실질특징 → 확정 그룹 + 판별근거 + 확정자) 저장**.
- **학습**: 이후 **같은 상품 재분석 시 자동 재사용** + **유사 담보(같은 판별축 조합)는 자동 매핑**(설계사 확정 패턴을 룰로 축적). 즉 한 번 배운 건 다시 안 물음.

### 5. 지식DB 스키마 (supabase migration)
- `coverage_product`(회사·상품·약관버전·sha256)
- `coverage_clause`(product_id·담보명·세부보장수·조항 provenance·발췌텍스트)
- `coverage_group_map`(clause_id·판별축 JSON·매핑그룹·confidence·상태 proposed/confirmed·확정자·확정시각)
- `grouping_rule`(판별축 조합 → 그룹, 설계사 확정에서 학습된 룰, 재사용용)

### 6. 두 output 입도 (표시 계층)
- **보장분석=coarse**(특정치료비Ⅱ/Ⅲ·병원조건 묶음), **신규설계=fine+조언**(차이 구분). 매핑은 fine 저장, 보장분석 집계는 coarse.

## 검증
- 삼성 norm 파일의 매핑(하이클래스/회복지원금/치료비지원 종속/매월계속암=치료비/암구분별 등)을 **골든셋**으로 → 엔진 결과 일치 확인.
- 애매 케이스 → 설계사 질문 큐 생성 → 결정 저장 → 동일 담보 재입력 시 자동매핑 되는지(학습) 테스트.
- pytest / py_compile. read-only 정독(policy_analyzer 수정 금지).

## 완료 보고
파이프라인·판별축추출·매핑·학습루프·지식DB스키마 diff · 골든셋 결과 · 학습 재사용 테스트 · callback.