Skip to content

[Feat] RAGOps Dashboard 관리자 재처리 API #148

Description

@kangcheolung

📌 Description

FAILED 작업을 관리자가 버튼 클릭으로 재처리 요청합니다. FAILED 목록 조회 화면(F-OPS-03)은 A 담당자가 이미 제공한 GET /admin/indexing-jobs?status=FAILED를 그대로 재사용하고, 이 이슈에서는 재처리 트리거만 구현합니다.

POST /admin/embedding-jobs/{jobId}/retry     (단건)
POST /admin/embedding-jobs/retry-all         (전체)
  • 내부적으로 A의 EmbeddingJobManualRetryService.retry()를 호출한 직후 sendDashboardUpdate() 호출
  • embedding_jobs를 직접 update하지 않고 A 서비스를 경유해서만 상태 변경

✅ To-do

  • 단건 재처리 컨트롤러/서비스 구현 (A 서비스 호출 + push)
  • 전체 재처리 서비스 구현 (EmbeddingJobRepository.findAllByStatus(FAILED)로 직접 조회 → 순차 재처리 → 재처리 건수 집계)
  • retry-all 엔드포인트 구현
  • 개별 job 재처리 실패 시 예외를 catch하고 계속 진행 (성공 건수만 retriedCount로 집계)
  • 예외 처리: FAILED 아닌 job 재처리 시도(409), 없는 jobId(404), FAILED 0건(200, retriedCount: 0)
  • 단위 테스트 작성

✅ 완료 기준

  • 단건 재처리 클릭 시 FAILED→PENDING 전환과 즉시 대시보드 push가 확인된다
  • 전체 재처리 시 정확한 재처리 건수를 반환한다 (개별 실패는 skip하고 성공 건수만 집계)
  • ADMIN이 아닌 사용자 요청은 403

📒 기타

  • 선행 이슈: #이슈2 (WebSocket 인프라)
  • FAILED 목록 조회는 A 담당자의 기존 API를 재사용하므로 이 이슈에서 별도 구현 없음
  • 전체 재처리의 FAILED 목록 조회는 A의 REST 엔드포인트를 내부 호출하지 않고 EmbeddingJobRepository를 직접 읽는다 (쓰기만 A 서비스 경유, 조회는 Repository 직접 접근)

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions