# InsuRo markitdown 도입 — 소식지/보험료 데이터 파싱 모드 추가

## 작업 레벨: Lv.2

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

## 배경
Microsoft markitdown(MIT 라이선스)은 PDF/PPTX/Excel/HTML 등을 구조 보존 Markdown으로 변환. PPTX 표 구조 변환에 특히 강함. InsuRo의 소식지/보험료 데이터 파싱에 도입하여 파싱 정확도 향상 + 코드 간소화.

## 수정 사항

### 1. markitdown 설치
```bash
cd /home/jay/projects/InsuRo/server
pip install 'markitdown[pdf,pptx]'
```
requirements.txt에도 추가.

### 2. 파싱 모드에 "markitdown" 옵션 추가

#### 서버 (main.py)
`parse_mode` 값에 "markitdown" 추가:
- 기존: "auto" | "table" | "vision"
- 변경: "auto" | "table" | "vision" | **"markitdown"**

```python
if parse_mode == "markitdown":
    from markitdown import MarkItDown
    md = MarkItDown(enable_plugins=False)
    result = md.convert(file_path)
    extracted_text = result.text_content
    
    # 메타데이터 추출 (보험사명, 제목)
    company = _detect_company(extracted_text)
    title = _extract_title(extracted_text)
    
    return {
        "company_name": company,
        "title": title,
        "extracted_text": extracted_text,
    }
```

#### 프론트엔드 (AdminPremiumData.tsx, AdminNewsletters.tsx)
파싱 모드 라디오 버튼에 4번째 옵션 추가:
```
○ 자동 분석 (기본)      — "AI가 파일 형식을 판단하여 최적의 방식으로 분석합니다"
○ 표 데이터 추출         — "보험료 비교표처럼 표 형태의 PPTX/PDF에 적합합니다"
○ 이미지 분석(Vision)    — "스캔 문서나 이미지가 포함된 PDF에 적합합니다"
○ MarkItDown 변환       — "문서 구조(표/제목/목록)를 Markdown으로 정확히 변환합니다 (추천)"
```

### 3. _smart_parse_file()에서 markitdown 통합
`parse_mode == "auto"` 시에도 markitdown을 기본 시도로 사용 가능:
```python
# auto 모드: markitdown 먼저 시도 → 실패 시 기존 로직
if parse_mode == "auto":
    try:
        from markitdown import MarkItDown
        md = MarkItDown(enable_plugins=False)
        result = md.convert(file_path)
        if result.text_content and len(result.text_content) > 100:
            return _build_result(result.text_content)
    except Exception:
        pass  # markitdown 실패 시 기존 로직으로 폴백
    
    # 기존 스마트 분기 로직...
```

### 4. 소식지(AdminNewsletters.tsx)에도 파싱 모드 적용
현재 소식지 업로드에는 파싱 모드 선택이 없을 수 있음. 보험료 데이터와 동일하게 파싱 모드 라디오 추가.

## affected_files
- `server/main.py` (수정 — markitdown parse_mode 분기 + auto 모드 통합)
- `server/requirements.txt` 또는 pip install (markitdown 추가)
- `src/pages/AdminPremiumData.tsx` (수정 — markitdown 라디오 옵션 추가)
- `src/pages/AdminNewsletters.tsx` (수정 — 파싱 모드 추가)

## 검증 시나리오
1. `pip install 'markitdown[pdf,pptx]'` 성공
2. 보험료 데이터 업로드 → "MarkItDown 변환" 선택 → PPTX 표가 마크다운 테이블로 변환
3. 소식지 업로드 → "MarkItDown 변환" 선택 → PDF 텍스트 + 구조 정확 추출
4. "자동 분석" 선택 → markitdown 먼저 시도 → 성공 시 사용
5. markitdown 설치 안 됐을 때 → 에러 없이 기존 로직으로 폴백
6. npm run build 성공
7. 서버 재시작 정상
8. pytest 전량 통과
