Commit Graph

12 Commits

Author SHA1 Message Date
김보곤
b00fd45650 fix:트렌딩 키워드 가져오기 실패 개선 (빈 결과 캐시 방지 + 리프레이밍 폴백)
- 빈 결과를 30분간 캐시하는 문제 수정 (성공 결과만 캐시)
- 건강 키워드가 없을 때 리프레이밍 폴백 추가 (트렌드를 건강 관점으로 재해석)
- 최종 폴백: 원본 인기 키워드 표시
- 프론트엔드 에러/안내 메시지 분리 (오류 vs 건강 키워드 없음)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 06:16:13 +09:00
김보곤
0f162d1df9 fix:건강 트렌드 필터에서 연예인/인물 키워드 제외
- 프롬프트에 엄격한 제외 규칙 추가 (연예인/정치인/스포츠선수/드라마 등)
- "간접 연결 가능하면 포함" 조건 삭제 (억지 건강 앵글 방지)
- 컨트롤러: 필터 결과가 비면 원본 대신 빈 배열 반환

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 14:39:58 +09:00
김보곤
0859a14e33 feat:생성 이력 상세보기 모달 + YouTube Shorts 텍스트 생성
- Veo3Controller에 show 엔드포인트 추가 (시나리오/프롬프트 상세 데이터 반환)
- YouTube Shorts 제목/설명/해시태그 자동 생성 (완료된 영상)
- DetailModal 컴포넌트: 탭 UI (시나리오/프롬프트 | YouTube 텍스트)
- 이력 테이블 행 클릭 시 상세 모달 표시
- 복사 버튼으로 YouTube 텍스트 클립보드 복사

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 13:58:56 +09:00
김보곤
ed1967405c feat:트렌드 키워드를 건강 채널용으로 필터링
건강 채널 전용 트렌딩 시스템:
- Gemini로 실시간 트렌드에서 건강 관련 키워드만 필터링
- 간접적 키워드도 건강 앵글로 리프레이밍 (예: 김치 → 장건강)
- 필터 결과 30분 캐싱 (Gemini 호출 최소화)
- 필터 실패 시 원본 키워드 폴백

제목 생성 건강 앵글 반영:
- generateTrendingHookTitles 프롬프트에 건강 채널 명시
- trending_context에 health_angle, suggested_topic 추가
- 모든 제목이 건강/웰빙 관점으로 생성되도록 가이드

UI 건강 테마 적용:
- 버튼/칩 색상: orange/indigo → green 테마
- 칩에 건강 앵글 태그 배지 표시
- 칩 클릭 시 건강 주제(suggested_topic)가 인풋에 채워짐

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 13:08:57 +09:00
김보곤
0be763b05a feat:트렌딩 키워드 수집 + Veo 3.1 프롬프트 강화 파이프라인
- Google Trends RSS 기반 실시간 급상승 키워드 수집 서비스 추가
- 트렌딩 컨텍스트 활용 후킹 제목 생성 (5패턴: 충격/비교/숫자/질문/반전)
- Veo 3.1 공식 가이드 기반 visual_prompt 5요소 프레임워크 적용
- GET /video/veo3/trending 엔드포인트 추가

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 12:36:36 +09:00
김보곤
3f4cd88c20 feat:영상 파일 GCS 저장 및 삭제 연동
- 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>
2026-02-15 11:11:18 +09:00
김보곤
5e4a9c9291 fix:이력 삭제 시 로컬 영상 파일도 함께 삭제
- DB 레코드만 삭제하던 것을 storage/app/video_gen/{id}/ 디렉토리도 삭제
- 클립, 나레이션, BGM, 최종 영상 등 모든 작업 파일 정리

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 11:04:58 +09:00
김보곤
5985b88398 feat:생성이력에 서울시간 표기 + 제작시간 열 추가
- 날짜→생성일시: KST(Asia/Seoul) 기준 MM/DD HH:mm 형식
- 제작시간 열 추가: created_at~updated_at 차이 계산 (완료/실패 시)
- 진행 중인 항목은 "진행 중" 표시
- history API에 updated_at 추가 반환

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 11:03:37 +09:00
김보곤
8d8fa2da0a feat:생성 이력 체크박스 선택 삭제 기능 추가
- 이력 테이블 첫 열에 체크박스 추가 (전체 선택/해제)
- 선택 시 상단에 빨간색 삭제 버튼 표시
- DELETE /video/veo3/history API 엔드포인트 추가
- 삭제 후 이력 목록 자동 새로고침

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 10:26:37 +09:00
김보곤
5ed10104e3 fix:영상 생성 진행 상태 UI 대폭 개선
- 경과 시간 실시간 표시 (초 단위 타이머)
- 단계별 타임라인 (Queue 대기 → TTS → 영상 → BGM → 합성)
- 프로그레스 바 shimmer 애니메이션 (작동 중 표시)
- 2분간 변화 없으면 경고 배너 표시
- 폴링 횟수 & 서버 마지막 업데이트 시간 표시
- status API에 updated_at/created_at 추가

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 09:05:09 +09:00
김보곤
0c8b1c8f60 fix:Veo3Controller tenant_id를 session 기반으로 변경
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 08:52:40 +09:00
김보곤
6ab93aedd2 feat:YouTube Shorts AI 자동 생성 시스템 구현 (Veo 3.1 + Gemini)
- 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>
2026-02-15 08:46:28 +09:00