Skip to content

Feat: relationship delta 업로드 job화 및 Swagger v1 alias 숨김 - #138

Merged
ppp1969 merged 2 commits into
devfrom
agent/137-relationship-delta-job
Jul 9, 2026
Merged

ppp1969 merged 2 commits into
devfrom
agent/137-relationship-delta-job

Conversation

@ppp1969

@ppp1969 ppp1969 commented Jul 9, 2026 •

Copy link
Copy Markdown
Contributor

🧑🏻‍💻 PR 작업 내역 요약

Closes #137

Render 무료 티어 메모리 제한을 고려해 relationship delta 업로드를 비동기 job 방식으로 추가했습니다. 기존 sync 업로드 API는 유지하고, 새 job API는 업로드 파일을 private S3 staging prefix에 저장한 뒤 파일 단위로 stream 파싱/replace 저장합니다.

📋 변경 사항

  • POST /api/v2/admin/books/{bookId}/relationship-delta-jobs 추가: 202 Accepted와 job 정보를 반환하고 비동기 import를 시작합니다.
  • GET /api/v2/admin/relationship-delta-jobs/{jobId} 및 /logs 추가: job 상태와 로그를 조회합니다.
  • staging S3 경로: private/books/{bookId}/analysis/relationship-delta-jobs/{runId}/input/{file}
  • processing_job.artifactPath에는 books/{bookId}/analysis/relationship-delta-jobs/{runId}를 저장합니다.
  • processing_job, processing_job_log를 재사용하고 pipelineType은 AI_ANALYSIS로 기록합니다.
  • 같은 책의 활성 AI 분석 job이 있으면 중복 실행을 차단합니다.
  • S3 helper에 prefix list, object stream read, key delete 유틸을 추가했습니다.
  • multipart file-size-threshold: 0B를 명시해 요청 파일도 디스크 기반으로 다루도록 했습니다.
  • /api/v2/... 대응 경로가 있는 /api/... alias는 Swagger 문서에서 숨기도록 OpenAPI customizer를 추가했습니다.

🔍 Code Review

  • job 실행은 기존 normalizationJobExecutor를 공유합니다. queue capacity가 있어 일반적으로 한 작업씩 처리되어 Render 1GB RAM에서 동시 메모리 사용을 줄입니다.
  • import는 S3 input prefix의 파일을 하나씩 stream으로 읽고 AdminService.replaceRelationshipDeltaPayload(..., false)를 호출합니다.
  • 완료 시점에만 분석 상태를 refresh합니다.
  • staging 파일은 완료 후 자동 삭제하지 않습니다. 실패 분석/재시도 근거를 남기기 위해 S3에 보존됩니다.
  • 기존 POST /books/{bookId}/relationship-deltas sync 계약은 깨지지 않도록 유지했습니다.

✅ 검증

  • ./gradlew.bat test

📸 ScreenShot

N/A

@ppp1969 ppp1969 self-assigned this Jul 9, 2026
@ppp1969 ppp1969 added 🧹 chore 기타 작업 ✨ feature 신규 기능 labels Jul 9, 2026
@ppp1969
ppp1969 marked this pull request as ready for review July 9, 2026 14:05
@ppp1969
ppp1969 merged commit 47842bc into dev Jul 9, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🧹 chore 기타 작업 ✨ feature 신규 기능

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Feat: relationship delta 업로드 job화 및 Swagger v1 alias 숨김

1 participant