Skip to content

#69 [Feat] S3 보안 처리 및 TTS 재사용 전략 도입, 관리자 폼 개편 및 N+1 개선#77

Merged
jucheonsu merged 8 commits intodevfrom
feat/#69
Mar 29, 2026
Merged

#69 [Feat] S3 보안 처리 및 TTS 재사용 전략 도입, 관리자 폼 개편 및 N+1 개선#77
jucheonsu merged 8 commits intodevfrom
feat/#69

Conversation

@jucheonsu
Copy link
Copy Markdown
Member

@jucheonsu jucheonsu commented Mar 29, 2026

#️⃣ 연관된 이슈

📌 공유 사항

  1. S3 이미지 URLPresigned URL 방식으로 변경되어 기존 하드코딩된 S3 URL은 더 이상 동작하지 않습니다.

  2. FFmpeg 다운로드 받으셔야 TTS 관련 코드가 작동합니다.
    터미널에서 밑의 명령어로 꼭 다운로드 받으시길 부탁드리겠습니다!

- 맥
brew install ffmpeg

- 윈도우
win install ffmpeg
ffmpeg -version
  1. 환경변수 APP_BASE_URL, FFMPEG_PATH, FFPROBE_PATH 노션 환경 설정 파일 확인 부탁드립니다. (개인 경로에 맞게 수정 필요)

https://www.notion.so/30c383619265807d9110c1e7711196ac

✅ 체크리스트

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

📸 스크린샷

HomeServiceTest 화면

image

홈 API 화면 (api/v1/home)

image

AWS S3 TTS 화면

image image

AWS S3 이미지 화면

image image

더미데이터 적재 (배틀, 퀴즈, 투표)

image image image

💬 리뷰 요구사항

  1. TTS 호출 비용을 최소화하기 위해서 재사용 전략을 구현했는데 적절한지 의견 부탁드립니다.
  2. DRAFT는 구현 상 필요가 없을 것 같다고 생각이 들어 삭제하였는데 다른 의견 있으신지 말씀 부탁드립니다.

📝 작업 내용

✨ Feat

내용 파일
S3 Presigned URL 생성 / 파일 삭제 / 다운로드 기능 추가 S3UploadService.java, S3UploadServiceImpl.java
TTS 재사용 전략 도입 - 변경된 대사만 재생성, 나머지 S3 조각 재활용 ScenarioAudioPipelineService.java, Script.java
스마트 대본 업데이트 로직 적용 - 노드/대사 변경 시 S3 파일 자동 정리 Scenario.java, ScenarioNode.java, ScenarioServiceImpl.java
시나리오 생성 시 status 필드 추가 및 오디오 파이프라인 자동 트리거 ScenarioCreateRequest.java, ScenarioController.java
배틀 생성/수정 시 status 직접 지정 및 이미지 변경 시 기존 S3 파일 자동 삭제 AdminBattleCreateRequest.java, BattleServiceImpl.java
BATTLE_CANNOT_REVERT_TO_PENDING 에러코드 추가 ErrorCode.java

♻️ Refactor

내용 파일
N+1 개선 - findByBattleIn 배치 쿼리로 옵션/태그 일괄 조회 BattleOptionRepository.java, BattleTagRepository.java, BattleServiceImpl.java
홈 화면 조회 시 limit 파라미터 적용 및 Presigned URL 처리 BattleRepository.java, BattleService.java, HomeService.java
BattleConverterS3UploadService 주입 및 응답 이미지 보안 처리 BattleConverter.java
loadContent 데이터 소스를 battleInfo로 고정 및 저장 action 분기 처리 api-load.js, api-save.js
관리자 폼 인물 필드 구조 개편 및 미리보기 동기화 수정 form-battle.html, preview.html, picke-create.html, chat-editor.js, chat-preview.js, ui-sync.js
HomeServiceTest S3PresignedUrlService Mock 추가 HomeServiceTest.java

🔨 Chore

내용 파일
FFmpeg 경로 환경변수 주입 및 UTF-8 인코딩 처리 FFmpegService.java
app.baseUrl 환경변수 기반으로 변경 및 FFmpeg 경로 설정 추가 application.yml
BASE_URL 하드코딩 제거 및 DRAFT 배지 제거 picke-list.html

기타

  • 더미데이터 적재 (관리자 페이지 이용) : 썸네일, 철학자 이미지 - 디자이너

@jucheonsu jucheonsu self-assigned this Mar 29, 2026
@jucheonsu jucheonsu added the ✨ Feat (기능 추가) 새로운 기능을 추가할 때 사용합니다. label Mar 29, 2026
Copy link
Copy Markdown
Contributor

@si-zero si-zero left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

고생하셨습니다. 양이 엄청난데 고생많으십니다!

@jucheonsu jucheonsu changed the title Feat/#69 #69 [Feat] S3 보안 처리 및 TTS 재사용 전략 도입, 관리자 폼 개편 및 N+1 개선 Mar 29, 2026
@jucheonsu jucheonsu merged commit 8fa6b6e into dev Mar 29, 2026
@jucheonsu jucheonsu deleted the feat/#69 branch March 29, 2026 14:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

✨ Feat (기능 추가) 새로운 기능을 추가할 때 사용합니다.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

✨ Feat: S3 보안 처리 및 TTS 재사용 전략 도입, 관리자 폼 개편 및 N+1 개선

2 participants