# InsuRo 소식지 분석 정확도 개선 (4건)

## 작업 레벨: Lv.2

## 프로젝트 시스템 3문서
- DevSystem: `/home/jay/workspace/memory/plans/anu-guide-system/plan.md`

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

## 문제
소식지 분석 시 보험사명/상품유형 오인식:
- KB손해보험 → 삼성화재로 감지
- 어른이 보험 → 어린이 보험으로 인식
- "앎주치" → "암주치" 텍스트 깨짐 (pdfplumber)

## 수정 사항 (4건)

### 1. 분석 프롬프트 정확도 강화
`server/main.py`의 `_smart_parse_file()`에서 claude CLI 프롬프트 개선:
- "★ 반드시 문서 전체를 읽고 보험사명을 확인하세요. 첫 페이지만 보지 마세요."
- "보험사명은 로고, 하단 서명, 사업자등록번호 근처에서 확인하세요."
- "어린이/어른이 구분에 주의하세요."

### 2. 파일명 힌트 활용
업로드 시 원본 파일명을 프롬프트에 포함:
```python
prompt += f"\n★ 원본 파일명: {filename} (파일명에 보험사명이나 상품정보가 포함될 수 있습니다)"
```

### 3. 사용자 직접 수정 기능 (UI)
분석 결과 표시 후 보험사명/제목을 클릭하여 편집 가능:
- `AdminNewsletters.tsx`, `AdminPremiumData.tsx`에 인라인 편집 추가
- 보험사명 클릭 → 드롭다운(보험사 목록) 또는 텍스트 입력
- 제목 클릭 → 텍스트 입력
- 수정 시 Supabase DB 업데이트

### 4. 텍스트 교정 로직 (pdfplumber 결과)
task-2231의 pdfplumber 추출 결과에 교정 단계 추가:

```python
# 보험 도메인 교정 사전
CORRECTION_MAP = {
    "앎주치": "암주치", "뇨혈관": "뇌혈관", "심귄경색": "심근경색",
    "잔여걔월": "잔여개월", "보혐료": "보험료", "갱싞": "갱신",
    "비갱싞": "비갱신", "진단굠": "진단금", "수슬비": "수술비",
}

def correct_insurance_text(text: str) -> str:
    for wrong, right in CORRECTION_MAP.items():
        text = text.replace(wrong, right)
    return text
```

pdfplumber 추출 후 → `correct_insurance_text()` 적용 → 그 다음 claude CLI 분석

## affected_files
- `server/main.py` (수정 — 프롬프트 개선 + 파일명 힌트 + 교정 사전)
- `src/pages/AdminNewsletters.tsx` (수정 — 인라인 편집 UI)
- `src/pages/AdminPremiumData.tsx` (수정 — 인라인 편집 UI)

## 검증 시나리오
1. KB손해보험 소식지 PDF 업로드 → "KB손해보험" 정확 감지
2. 파일명에 보험사명 포함 → 힌트 활용 확인
3. 잘못 감지된 보험사명 → 클릭하여 수정 → DB 반영
4. "앎주치" → "암주치" 자동 교정 확인
5. npm run build 성공
