# InsuRo ↔ MediScan 실 연동 통합 테스트

## 작업 레벨: Lv.2

## 프로젝트 시스템 3문서
- InsuRo: `/home/jay/workspace/memory/plans/insuro-system/plan.md`
- MediScan: `/home/jay/workspace/memory/plans/mediscan/plan.md`

## 배경
mediscan_router.py(서버)와 MediScan.tsx(프론트)가 모두 구현되어 있으나, 실제 프로덕션 환경에서 프론트→서버→MediScan 모듈 전체 파이프라인 동작 확인이 안 됨. "서비스 준비 중"이 아닌 실제 기능 페이지가 표시되는지도 미확인.

## 작업

### 1. 서버 연동 확인
```bash
cd /home/jay/projects/InsuRo/server
# MediScan 모듈 import 확인
python3 -c "
import sys; sys.path.insert(0, '/home/jay/projects/MediScan')
from src.parsers import detect_pdf_type, detect_and_parse
from src.analysis import MediScanEngine
from src.report import HtmlReportGenerator, DisclosureFormGenerator
print('All imports OK')
"
```

### 2. API E2E 테스트 (Hidden 유저 JWT로)
```bash
# 1. JWT 획득
JWT=$(curl -s -X POST "https://zayhfjuwviporbzokudr.supabase.co/auth/v1/token?grant_type=password" \
  -H "apikey: <ANON_KEY>" \
  -H "Content-Type: application/json" \
  -d '{"email":"jonghyuk.jeon@gmail.com","password":"..."}' | python3 -c "import sys,json; print(json.load(sys.stdin)['access_token'])")

# 2. PDF 업로드
curl -X POST "http://localhost:8001/api/mediscan/upload" \
  -H "Authorization: Bearer $JWT" \
  -F "files=@/home/jay/projects/MediScan/docs/samples/세부진료정보.pdf" \
  -F "files=@/home/jay/projects/MediScan/docs/samples/처방조제정보.pdf" \
  -F "files=@/home/jay/projects/MediScan/docs/samples/자동차사고기본진료정보.pdf"
# → job_id 반환 확인

# 3. 분석 시작
curl -X POST "http://localhost:8001/api/mediscan/analyze/{job_id}" \
  -H "Authorization: Bearer $JWT" \
  -H "Content-Type: application/json" \
  -d '{"mode":"both"}'

# 4. 결과 조회 (폴링)
curl "http://localhost:8001/api/mediscan/result/{job_id}" \
  -H "Authorization: Bearer $JWT"
# → status=completed, report_html 존재, disclosure_text 존재 확인

# 5. 이력 조회
curl "http://localhost:8001/api/mediscan/history" \
  -H "Authorization: Bearer $JWT"
```

### 3. 프론트엔드 UI 확인 (Playwright)
- insuro.biz 접속 → 분석&도구 → 메디스캔 클릭
- "서비스 준비 중"이 아닌 **PDF 업로드 UI** 표시되는지 확인
- 파일 드래그&드롭 또는 파일 선택 UI 존재 확인
- Hidden 유저에서만 접근 가능한지 확인

### 4. 발견 이슈 대응
- import 실패 시: sys.path 또는 requirements 확인
- API 에러 시: 서버 로그 확인 + 수정
- 프론트 "서비스 준비 중" 표시 시: MediScan.tsx의 isHidden 분기 확인
- 파싱 에러 시: PDF 샘플과 파서 호환성 확인

## 검증 시나리오
1. MediScan 모듈 import 성공
2. PDF 3개 업로드 → job_id 반환
3. 분석 시작 → 완료 → HTML 리포트 + 고지양식 반환
4. 프론트에서 실제 업로드 UI 표시
5. Free 유저 → 메디스캔 접근 차단 확인

## 주의사항
- ★ PDF 샘플은 `/home/jay/projects/MediScan/docs/samples/`에 있음 (git 커밋 금지)
- 서버 수정이 필요하면 최소 범위로
- 프론트 수정 시 worktree 사용

## 참고
- mediscan_router.py: `/home/jay/projects/InsuRo/server/mediscan_router.py`
- MediScan.tsx: `/home/jay/projects/InsuRo/src/pages/MediScan.tsx`
- MediScan 모듈: `/home/jay/projects/MediScan/src/`
- PDF 샘플: `/home/jay/projects/MediScan/docs/samples/`