Description 관련 이슈
변경 내용
L1 — 자막 추출 실패 분류 정밀화
YoutubeTranscriptClient 단일 게이트웨이 + ProxyYoutubeClient 가 HTTP status (429/403/5xx) 로 분류해 LinktripException throw
모호 실패는 sentinel 영상 ping 으로 "프록시 차단" vs "영상 고유 문제" 구분 → INVALID 오분류 제거
L2 — webshare 프록시 라운드로빈
usernames: List<String> 으로 확장, 429/403 시 같은 호출 안에서 다음 프록시로 swap (KR → JP → TW → ...)
환경변수 YOUTUBE_PROXY_USERNAME → YOUTUBE_PROXY_USERNAMES (콤마 구분), CI/CD + docker-compose 동일 적용
L4 — POST 응답에 결과 인라인 반환
POST /video/analyze 가 COMPLETED 면 결과 데이터 포함해 반환 (GET 과 동일 shape) → 추가 폴링 불필요
HTTP status: COMPLETED/INVALID = 200, PENDING/PROCESSING = 202
L5 — USER/BATCH 우선순위 큐 + source 영속화
Source enum 신규 + PriorityBlockingQueue + sequence tiebreaker → priority 보장 & 동일 source 내 FIFO
video_analysis_task.source 컬럼 추가 (audit + 재시도 priority 보존), 모든 호출처가 source 명시 (default 제거)
L6 — 미처리 영상 자동 분석 스케줄러
youtube_video 에 있지만 video_analysis_task 가 없는 영상을 LEFT JOIN anti-join 으로 조회 → 10분마다 5건씩 BATCH 로 enqueue
@ConditionalOnProperty 로 prod 만 활성 (dev 자동 실행 차단)
체크리스트
Reactions are currently unavailable
You can’t perform that action at this time.
관련 이슈
변경 내용
L1 — 자막 추출 실패 분류 정밀화
YoutubeTranscriptClient단일 게이트웨이 +ProxyYoutubeClient가 HTTP status (429/403/5xx) 로 분류해LinktripExceptionthrowL2 — webshare 프록시 라운드로빈
usernames: List<String>으로 확장, 429/403 시 같은 호출 안에서 다음 프록시로 swap (KR → JP → TW → ...)YOUTUBE_PROXY_USERNAME→YOUTUBE_PROXY_USERNAMES(콤마 구분), CI/CD + docker-compose 동일 적용L4 — POST 응답에 결과 인라인 반환
POST /video/analyze가 COMPLETED 면 결과 데이터 포함해 반환 (GET 과 동일 shape) → 추가 폴링 불필요L5 — USER/BATCH 우선순위 큐 + source 영속화
Sourceenum 신규 +PriorityBlockingQueue+ sequence tiebreaker → priority 보장 & 동일 source 내 FIFOvideo_analysis_task.source컬럼 추가 (audit + 재시도 priority 보존), 모든 호출처가 source 명시 (default 제거)L6 — 미처리 영상 자동 분석 스케줄러
youtube_video에 있지만video_analysis_task가 없는 영상을 LEFT JOIN anti-join 으로 조회 → 10분마다 5건씩 BATCH 로 enqueue@ConditionalOnProperty로 prod 만 활성 (dev 자동 실행 차단)체크리스트