# InsuRo 소식지 이미지 인식 모델 업그레이드 (haiku → sonnet + opus 옵션)

## 작업 레벨: Lv.1

## 프로젝트
- InsuRo: `/home/jay/projects/InsuRo`
- 서버: `/home/jay/projects/InsuRo/server`

## 버그/개선 설명
소식지 이미지 텍스트 인식에 haiku 모델을 사용 중인데, 인식 정확도가 낮음 (강신장→갱신형, 더핏→더블 등 오인식 다수).
sonnet으로 기본 모델 업그레이드 + opus도 선택 가능하게 옵션 구분.

## 원인 분석 (아누 확인 완료)
`server/main.py` 라인 4018-4019에서 Vision 추출 시 `--model haiku` 하드코딩:
```python
result = subprocess.run(
    ["claude", "-p",
     f"{img_path} 파일을 읽고 이 보험 문서 페이지의 모든 텍스트, 숫자, 표 내용을 추출해줘. JSON 없이 텍스트만.",
     "--model", "haiku", "--allowedTools", "Read", "--output-format", "text"],
```

## 수정 사항

### 1. 기본 모델을 sonnet으로 변경 — 인식/분석 관련 4곳 전부
`server/main.py` — 아래 4곳의 `"haiku"` → `"sonnet"` 변경:

1. **라인 4020 부근** — Vision 이미지 텍스트 추출 (단일 페이지)
2. **라인 4329 부근** — Vision AI 분석 (보험료 데이터 구조화 JSON 추출) `["claude", "-p", prompt, "--model", "haiku",`
3. **라인 4428 부근** — 메타데이터 추출 (보험사명/제목 자동 감지) `["claude", "-p", meta_prompt, "--model", "haiku",`
4. **라인 4736 부근** — 소식지 AI 질문 답변 `"claude", "-p", "--model", "haiku",`

★ 변경하면 안 되는 곳 (금소법/주제추천 등):
- 라인 968 (금소법 검증) — haiku 유지
- 라인 1053 (주제 추천) — haiku 유지
- 라인 3606 (금소법 수정본 재생성) — haiku 유지

### 2. Vision 모델 선택 옵션 추가
소식지/보험료 파일 업로드 시 parse_mode 외에 vision_model 파라미터 추가:

```python
class UploadFileRequest(BaseModel):
    # 기존 필드 유지
    file_type: str = "premium"
    parse_mode: str = "auto"
    vision_model: str = "sonnet"  # "sonnet" | "opus" 선택 가능
```

Vision 추출 함수에서 이 파라미터를 받아 모델 지정:
```python
# vision_model 파라미터를 _vision_extract_batch 등에 전달
"--model", vision_model,  # haiku 하드코딩 대신 파라미터 사용
```

### 3. 프론트: 파싱 모드 선택 UI에 Vision 모델 옵션 추가
`src/pages/PolicyAnalysis.tsx` 또는 소식지 업로드 관련 컴포넌트:
- 기존 parse_mode 선택 (자동/표추출/Vision/MarkItDown) 옆에
- Vision 모델 선택: "Sonnet (기본)" / "Opus (고정밀)" 드롭다운
- parse_mode가 "vision"일 때만 표시
- 기본값: sonnet

## affected_files
- `server/main.py` (수정 — Vision 모델 haiku→sonnet 기본값 + vision_model 파라미터)
- 소식지 업로드 관련 프론트 컴포넌트 (수정 — Vision 모델 선택 UI)

## 검증 시나리오
1. 소식지 업로드 → Vision 모드 → sonnet 모델로 텍스트 추출 확인
2. Vision 모델을 opus로 변경 → opus 모델로 추출 확인
3. 기본값이 sonnet인지 확인
4. Vision 아닌 parse_mode(auto/table/markitdown)에서는 모델 선택 UI 미표시
5. 금소법 검증 등 다른 haiku 사용 부분은 변경 없음 확인
6. npm run build 성공
7. 서버 재시작 정상