**task-2078 완료 보고** (dev7-team) **task-2078 완료 보고서: InsuRo CI 실패 수정 — doc_parser ModuleNotFoundError** (15분 32초) **핵심 결과** `ai_parser.py`에서 `doc_parser` import를 `try/except ImportError`로 감싸고 `_HAS_DOC_PARSER` 플래그를 도입했다. import 실패 시 pdfplumber fallback으로 직접 전환한다. 테스트에서는 `_HAS_DOC_PARSER`를 mock하여 양쪽 경로(doc_parser 사용 / pdfplumber fallback)를 모두 검증한다. 전체 서버 테스트 298건 통과, 프론트 빌드 정상. ## 수정 파일 목록 | 파일 | 변경 내용 | grep 검증 | 상태 | |------|-----------|-----------|------| | server/ai_parser.py:20-29 | doc_parser import를 try/except로 감싸고 _HAS_DOC_PARSER 플래그 추가 | grep "_HAS_DOC_PARSER" OK (3건) | verified | | server/ai_parser.py:92 | extract_text_from_pdf()에 _HAS_DOC_PARSER 가드 추가, parse_pdf is None 타입 가드 | grep "parse_pdf is None" OK | verified | | server/tests/test_ai_parser.py:18-22 | import를 try/except로 감싸 모듈 레벨 skip 처리 | grep "pytest.skip" OK | verified | | server/tests/test_ai_parser.py:32-76 | TestExtractTextFromPdf 3개 테스 **발견/해결 이슈 4건** 1. **Pyright type narrowing 실패** — `parse_pdf is None` 가드를 조건에 추가하여 Pyright가 None 체크를 인식하도록 수정 2. **테스트에서 doc_parser 경로 직접 의존** — `_HAS_DOC_PARSER` mock으로 doc_parser 유무 양쪽 경로를 명시적으로 테스트 3. **test_ai_parser.py import 실패 시 전체 테스트 스킵 누락** — `pytest.skip(allow_module_level=True)` 추가 4. **Pyright WARN: `ParseResult` not accessed (L22)** — 미해결: except 블록의 `ParseResult = None` stub은 외부 모듈 import 호환성을 위해 유지. Pyright WARN이지 에러 아님.