You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
현재 Chunk Embedding 생성은 Job에 고정된 Model로 Version의 전체 Vector Set을 원자 저장한 뒤에도
Document Version을 EMBEDDING, Embedding Job을 PROCESSING, Attempt를 STARTED로 유지합니다.
이번 기능은 현재 실행 Context의 마지막 짧은 Transaction에서 Embedding Set의 완전성과 실행 소유권을
재검증하고, Attempt·Job·Version·Document 및 검색 가능 Version 포인터를 함께 완료 처리합니다.
새 Version이 활성화되면 이전 current Version의 ACTIVE Embedding은 STALE로 전환합니다.
최초 완료와 응답 유실 후 같은 실행의 재요청은 중복 이벤트나 상태 변경 없이 같은 완료 결과로 수렴해야
합니다. 이미 완료된 같은 Attempt의 재생은 최종 결과 확인이므로 Lease 만료 여부와 무관하게 허용하되,
Job·Attempt·Worker·Claim Token이 모두 기존 완료 실행과 일치해야 합니다.
✅ To-do
완료 API 계약
POST /admin/indexing-jobs/{jobId}/attempts/{attemptId}/complete 추가
요청 Body는 Worker ID와 canonical UUID Claim Token만 입력
📌 Description
현재 Chunk Embedding 생성은 Job에 고정된 Model로 Version의 전체 Vector Set을 원자 저장한 뒤에도
Document Version을
EMBEDDING, Embedding Job을PROCESSING, Attempt를STARTED로 유지합니다.이번 기능은 현재 실행 Context의 마지막 짧은 Transaction에서 Embedding Set의 완전성과 실행 소유권을
재검증하고, Attempt·Job·Version·Document 및 검색 가능 Version 포인터를 함께 완료 처리합니다.
새 Version이 활성화되면 이전 current Version의
ACTIVEEmbedding은STALE로 전환합니다.최초 완료와 응답 유실 후 같은 실행의 재요청은 중복 이벤트나 상태 변경 없이 같은 완료 결과로 수렴해야
합니다. 이미 완료된 같은 Attempt의 재생은 최종 결과 확인이므로 Lease 만료 여부와 무관하게 허용하되,
Job·Attempt·Worker·Claim Token이 모두 기존 완료 실행과 일치해야 합니다.
✅ To-do
완료 API 계약
POST /admin/indexing-jobs/{jobId}/attempts/{attemptId}/complete추가200 OK/admin/**ADMIN 정책 재사용 및 Swagger 성공·오류 계약 문서화잠금과 실행 Context 검증
PROCESSINGJob에 대해 Worker, Claim Token과 유효 Lease 검증STARTEDAttempt 및 Worker와 일치하는지 검증Job → Version → Document로 고정하고 향후 완료·실패·복구 흐름도 동일하게 유지Embedding Set 완료 조건
EMBEDDING상태인지 검증active + searchable인지 검증해 검색 불가능한 Version 활성화 차단ACTIVE상태인지 검증원자적 상태 전환
SUCCESS로 종료ended_at과duration_ms기록INDEXED로 전환하고completed_at기록INDEXED로 전환하고indexed_at기록current_version_id를 완료 Version으로 교체INDEXED로 전환ACTIVEEmbedding을STALE로 일괄 전환STALE로 바꾸지 않음INDEXED이벤트를 정확히 한 건 기록멱등 재생과 오래된 완료 차단
INDEXED이면 완료 재생 경로로 분기SUCCESSAttempt만 허용409로 거부409로 거부FAILED,CANCELED등 종료 상태 Job은 완료 처리하지 않음Repository·Domain·오류 계약
ACTIVE → STALE일괄 갱신 쿼리 추가검증
200, ADMIN/USER/미인증 계약 테스트STALE검증INDEXED이벤트 한 건으로 수렴하는지 검증./gradlew clean build및git diff --check통과docs/design/에 실제 구현 기준 상세 설계 문서 작성🔒 핵심 불변식
Embedding Job → Document Version → Document입니다.active + searchableModel이어야 합니다.ACTIVEEmbedding 수는 완료 시 정확히 같습니다.STALE처리하지 않습니다.ACTIVEEmbedding만 대상으로 합니다.🚫 제외 범위
✅ 완료 기준
📒 기타
documents.status = INDEXED,documents.current_version_id = embeddings.document_version_id,embeddings.status = ACTIVE를 모두 요구합니다.