Skip to content

#519 [Fix] 썸네일 후보를 제목 기반 장면으로 생성하고 안전 필터 거절 구분 - #520

Merged
si-zero merged 1 commit into
devfrom
fix/#519
Oct 4, 2026
Merged

si-zero merged 1 commit into
devfrom
fix/#519

Conversation

@si-zero

@si-zero si-zero commented Oct 4, 2026 •

Copy link
Copy Markdown
Member

#️⃣ 연관된 이슈

📝 작업 내용

✨ Feat

내용 파일
배틀 제목을 상징적인 장면 묘사 3개로 바꾸는 단계 추가 (gpt-4o-mini, 위해 직접 묘사 금지, 찬반 분할 구도 금지) ThumbnailSceneWriter.java
후보마다 서로 다른 장면으로 생성, 장면 묘사 실패 시 제목·요약·설명 원문으로 대체 BattleThumbnailCandidateService.java

♻️ Refactor

내용 파일
썸네일이 A/B 입장이 아닌 제목(주제)을 그리도록 요청에서 A/B 제거 AdminBattleThumbnailCandidateRequest.java
프롬프트 템플릿 자리표시자를 {scene} 하나로 정리 prompt.txt, BattleThumbnailStyleSource.java

🐛 Fix

내용 파일
민감한 주제(안락사 등)의 배틀 원문이 그대로 들어가 OpenAI 입력 안전 필터(moderation_blocked)에 3장 모두 막히던 문제 ThumbnailSceneWriter.java, BattleThumbnailCandidateService.java
안전 필터 거절을 일반 실패와 구분해 안내 메시지 반환 (BATTLE_422_THUMB) OpenAiImageClient.java, ImageModerationBlockedException.java, ErrorCode.java

📌 공유 사항

  1. 어드민은 아직 A/B 입장을 함께 보내지만 서버가 무시합니다(알 수 없는 필드 무시). 어드민 쪽 정리는 별도로 진행하면 됩니다.
  2. 장면 묘사 단계가 추가되어 후보 생성 시간이 수 초 늘어납니다.
  3. 장면이 안전 필터에 걸리면 로그에 해당 프롬프트가 남아 원인 파악이 가능합니다.

✅ 체크리스트

  • Reviewer에 팀원들을 선택했나요?
  • Assignees에 본인을 선택했나요?
  • 컨벤션에 맞는 Type을 선택했나요?
  • Development에 이슈를 연동했나요?
  • Merge 하려는 브랜치가 올바르게 설정되어 있나요?
  • 컨벤션을 지키고 있나요?
  • 로컬에서 실행했을 때 에러가 발생하지 않나요?
  • 팀원들에게 PR 링크 공유를 했나요?

📸 스크린샷

  • ./gradlew test 전체 통과 (366개)

💬 리뷰 요구사항

  1. 장면 묘사 프롬프트(ThumbnailSceneWriter.SYSTEM)의 규칙이 썸네일 의도에 맞는지 봐주세요.

@si-zero si-zero self-assigned this Oct 4, 2026
@si-zero si-zero added the 🐛 Fix (버그 수정) 버그를 수정할 때 사용합니다. label Oct 4, 2026
@si-zero
si-zero merged commit 4bb85ab into dev Oct 4, 2026
1 check passed
@si-zero
si-zero deleted the fix/#519 branch October 4, 2026 13:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🐛 Fix (버그 수정) 버그를 수정할 때 사용합니다.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

🐛 Fix: 민감한 배틀 주제에서 썸네일 후보 생성이 안전 필터에 막힘

1 participant