Skip to content

[Feat] 문서 인덱싱 상태 조회 API 구현 #36

Description

@Gimini-3

📌 Description

업로드된 문서의 현재 검색 가능 버전과 처리 중 버전의 인덱싱 상태를 함께 조회하는 API를 구현합니다.

GET /api/documents/{documentId}/status
Authorization: Bearer {token}

최초 버전 처리 중에는 currentVersionnull로 반환하고, 새 버전 처리 중에는 기존 INDEXED 버전을 currentVersion으로 유지합니다.

✅ To-do

  • 읽기 권한(OWNER/PUBLIC/USER_CACHE/ROLE/DEPARTMENT) 검증
  • 문서·현재 버전·처리 중 버전·EmbeddingJob 상태 Projection 조회
  • DocumentStatusResponse 및 중첩 Version 상태 DTO 구현
  • DocumentQueryServiceDocumentQueryController 구현
  • GET /api/documents/{documentId}/status Swagger 명세 작성
  • 최초 Version 처리 중 currentVersion=null 계약 적용
  • 후속 Version 처리 중 기존 INDEXED currentVersion 유지
  • 처리 중 Version과 활성 Job 상태 불일치 예외 처리
  • Repository·Service·Controller 테스트 작성
  • 상세 설계 문서 작성

📦 응답 예시

{
  "documentId": 10,
  "documentStatus": "INDEXED",
  "currentVersion": {
    "versionNo": 1,
    "status": "INDEXED"
  },
  "processingVersion": {
    "versionNo": 2,
    "status": "PARSING",
    "jobStatus": "PROCESSING"
  }
}

🔒 상태 계약

  • currentVersion: INDEXED 상태인 경우에만 반환
  • processingVersion: UPLOADED, PARSING, CHUNKED, EMBEDDING 중 하나
  • 처리 중 Version의 Job 상태: PENDING 또는 PROCESSING
  • 상태 조회는 읽기 전용이며 Entity 상태를 변경하지 않음

🚫 제외 범위

  • Worker 및 파싱·청킹·임베딩 실행
  • 인덱싱 완료와 current_version_id 교체
  • 실패·자동 재시도
  • 수동 재처리
  • DB 스키마 변경

✅ 완료 기준

  • 읽기 권한이 있는 사용자가 문서 상태를 조회할 수 있다.
  • 최초 Version 처리 중 검색 가능 Version은 null이다.
  • 새 Version 처리 중 기존 INDEXED Version이 유지된다.
  • 처리 중 Version과 Job 상태가 함께 반환된다.
  • 권한 없음·문서 없음·상태 불일치가 구분된다.
  • 조회 과정에서 상태 변경이 발생하지 않는다.
  • 전체 테스트와 빌드가 통과한다.

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions