- VideoGenerationJob: 최종 합성 후 GCS 업로드, gcs_path 저장
- Veo3Controller: download/preview GCS 서명URL 사용, destroy GCS 파일 삭제
- VideoGeneration 모델: gcs_path fillable 추가
- GCS 불가 시 로컬 파일로 폴백
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Gemini 프롬프트: visual_prompt에 한국인 여성(20대) 등장인물 규칙 추가
- Veo 프롬프트: 모든 클립에 "Korean woman in her 20s" 프리픽스 자동 추가
- 싱크 버그: activeNarrationPaths 인덱스 off-by-one ($num-1→$num) 수정
- 나레이션이 영상보다 1장면 앞서 재생되던 근본 원인
- concatNarrations: atrim+apad로 나레이션을 장면 길이에 정확히 매칭
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- VeoVideoService.waitAndSave() 반환값을 array로 변경 (실패 원인 포함)
- 클립 생성 실패 시 프롬프트 수정 후 자동 재시도
- 재시도 실패 시 해당 장면 건너뛰고 나머지로 합성 진행
- 성공 클립이 절반 미만일 때만 전체 실패 처리
- 건너뛴 장면의 나레이션/자막 자동 필터링
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- GeminiScriptService: 트렌딩 제목/시나리오 생성
- VeoVideoService: Veo 3.1 영상 클립 생성
- TtsService: Google TTS 나레이션 생성
- BgmService: 분위기별 BGM 선택
- VideoAssemblyService: FFmpeg 영상 합성
- VideoGenerationJob: 백그라운드 처리
- Veo3Controller: API 엔드포인트
- React 프론트엔드 (5단계 위저드)
- GoogleCloudService.getAccessToken() public 변경
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>