Skip to content

[Chore] PDF·DOCX 파싱 사후 리뷰 반영 - 검증 문서 보완, 빈 Page 회귀 테스트, Chunker 중복 순회 정리 #110

Description

@Gimini-3

배경

PR #107(PDF·DOCX 문서 파싱)은 자동 리뷰가 끝나기 전에 머지됐고, 머지 직후 3건의 지적이 등록됐습니다. 모두 동작 오류가 아닌 문서·테스트·성능 보완 사항이라 별도 이슈로 분리해 처리합니다.

작업 항목

1. 테스트 결과 문서에 수동 검증 결과 보완

docs/test-results/Gimini-3-#103-pdf-docx-document-parsing.md는 단위·통합 테스트 결과만 기록하고 Swagger 수동 검증 결과를 담고 있지 않습니다.

  • 업로드 API의 PDF·DOCX 허용 및 거부 사례를 Swagger로 검증하고 요청, 기대 결과, 실제 결과를 기록
  • 해당 경로를 Swagger로 검증할 수 없으면 그 사실과 대체 검증 방법을 명시

2. Page 수가 0인 PDF 회귀 테스트 추가

PdfDocumentParserTest는 빈 Page만 있는 PDF의 DOCUMENT_OCR_REQUIRED만 검증합니다. Page 수가 0인 PDF는 DOCUMENT_CONTENT_EMPTY로 분기되는데 이 경로에는 회귀 테스트가 없습니다.

  • Page가 없는 PDF가 DOCUMENT_CONTENT_EMPTY를 반환하는지 검증하는 테스트 추가

3. FixedSizeChunker 중복 순회 정리

FixedSizeChunker.chunk(ParsedDocument)는 Segment 길이를 codePointCount(...)로 한 번 순회하고, 같은 Segment를 appendSegmentChunks에서 다시 codePoints().toArray()로 순회합니다. 큰 문서에서 불필요한 비용이 발생합니다.

  • appendSegmentChunks가 이미 마지막 Chunk의 charEnd를 Segment 끝으로 설정하므로, 그 값을 재사용해 추가 순회 없이 동일한 전역 offset을 계산
  • 기존 Chunk 경계와 page_no·section_title 메타데이터 결과가 바뀌지 않아야 하며 기존 테스트로 회귀 확인

제외 범위

  • OCR 도입
  • 파서 라이브러리 교체나 버전 상향
  • 청킹 정책 자체의 변경

완료 조건

  • 위 3개 항목 반영
  • 전체 회귀 테스트 통과

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions