Skip to content

Feat: GPT Image 2 Batch 기반 캐릭터 이미지 fan-out - #150

Merged
ppp1969 merged 2 commits into
devfrom
codex/issue-149-gpt-image-2-batch-fanout
Jul 16, 2026
Merged

ppp1969 merged 2 commits into
devfrom
codex/issue-149-gpt-image-2-batch-fanout

Conversation

@ppp1969

@ppp1969 ppp1969 commented Jul 14, 2026 •

Copy link
Copy Markdown
Contributor

🧑🏻‍💻 PR 작업 내역 요약

도서별 대표 이미지를 canonical style reference로 고정하고, 나머지 캐릭터 이미지를 GPT Image 2 Image Edit Batch로 생성하도록 변경했습니다.

관리자는 4개의 대표 후보만 동기 생성해 하나를 선택하고, 이후 fan-out은 처리 상태와 로그를 남기는 비동기 Batch job으로 수행합니다. 새 스타일 재생성 시에는 이미지 URL을 버전화하고 교체된 S3 객체를 정리합니다.

Closes #149

📋 변경 사항

  • 이미지 생성·편집 기본 모델을 gpt-image-2로 변경
  • 선택된 CloudFront reference URL과 series-lock 프롬프트로 fan-out 요청 통일
  • OpenAI Files/Batch API 연동, 30초 상태 조회, JSONL 결과 스트리밍 처리
  • 기존 processing_job / processing_job_log 구조를 활용해 상태와 로그 저장
  • 앱 재시작 후 QUEUED job 제출 및 진행 중 job 상태 조회 재개
  • 동일 도서의 활성 fan-out 중 후보 생성·선택·개별 재생성 차단
  • fan-out job·로그 조회 API와 Swagger 명세 추가
  • V9__character_image_batch_jobs.sql 마이그레이션 추가
  • 후보 이미지를 reference/attempt-{attemptNo}/slot-{slotNo}.png 경로로 버전화
  • 최종 이미지를 {characterId}/reference-v{referenceVersion}/attempt-{attemptNo}.png 경로로 버전화
  • 새 이미지 URL이 DB에 커밋된 뒤 교체된 character-images/ S3 객체 삭제
  • 현재 활성 대표 이미지는 새 후보 선택 전까지 보존하고 공용 기본 이미지는 삭제 대상에서 제외
  • Batch 계약, 상태 전이, 재개·실패 처리, CDN 변환, 버전 경로와 S3 정리 테스트 추가

🔍 Code Review

  • POST /api/v2/admin/image-generation/books/{bookId}/reference-candidates/{candidateId}/select 응답 직후 fanoutJob.status=QUEUED인지 확인해주세요.
  • 작업 완료는 GET /api/v2/admin/image-generation/fanout-jobs/{jobId}의 status=READY를 기준으로 판단합니다.
  • 모든 Batch 요청의 images[].image_url이 동일한 CloudFront URL인지 확인해주세요.
  • 교체 이미지 삭제는 DB 트랜잭션 커밋 이후에만 실행되며 character-images/ 경로로 제한됩니다.
  • S3 버킷 버저닝이 활성화된 환경은 이전 버전 비용 정리를 위한 Lifecycle 규칙이 별도로 필요합니다.
  • 로컬 검증: .\gradlew.bat test 통과
  • OpenAI Batch 문서: https://developers.openai.com/api/docs/guides/batch
  • Image Edit 문서: https://developers.openai.com/api/reference/resources/images/methods/edit

📸 ScreenShot

Swagger에서 fan-out job 상태 조회 및 로그 조회 API를 확인할 수 있습니다.

@ppp1969 ppp1969 self-assigned this Jul 15, 2026
@ppp1969
ppp1969 marked this pull request as ready for review July 16, 2026 12:44
@ppp1969
ppp1969 merged commit 0233040 into dev Jul 16, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Feat: GPT Image 2 Batch 기반 캐릭터 이미지 fan-out 전환

1 participant