- naver.py: AI 브리핑이 하단 lazy-load 되는 특성 반영 — 섹션을 뷰에 올려
본문 불릿이 실제 로드될 때까지 스크롤·폴링(간헐 빈결과 수정).
리뷰 크롤·요약 함수(fetch_reviews/summarize_reviews) 추가.
- main.py(3): AI 브리핑이 없는 가게는 방문자 리뷰를 긁어 Gemini로 요약해
소재로 사용하는 폴백 추가.
- 각 엔진 fonts/brand_logo.png 추가(상단 밴드 제목 옆 로고 — 렌더에 필요).
- emile 잔여물(generator/data/emile_*) 제거.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Ken Burns 떨림 제거: zoompan 입력 업스케일 1.2→4배 + flags=lanczos.
정수픽셀 반올림 흔들림 소멸(측정: 세로 튐 47→0회/60f).
- 자막 자동 축소: 나레이션이 밴드 높이를 넘치면 폰트를 NARR_MIN_SIZE(30)까지
단계 축소 후 흰 밴드 안에만 렌더(아래 그림 침범 방지).
- 폰트 경로 견고화(_find_font): per-engine fonts/ 우선, 없으면 상위 공유
generator/fonts/ 사용 → ssulbox 공유폰트 레이아웃에서도 주아체 정상 로드.
(shorts_all/ssulbox render.py 3종 동일 유지)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- naver.py: span.GHAhO 난독 클래스 변경으로 가게명이 'AI 브리핑'으로
잘못 잡히던 버그 수정. og:title 메타 우선 추출(_store_name/_clean_store),
섹션명·'네이버' 포함값 배제. 브리핑·사진 크롤 양쪽 적용.
- 뷰어: 하단 제목/설명 오버레이가 네이티브 재생바를 가리던 문제 →
56px 위로 올리고 pointer-events:none 으로 탐색바 조작 가능하게.
- 생성 진행: 시나리오/가게/로그 등 제거, '영상 생성 중' + 진행바 + 퍼센트만.
step(0~4)→% (완료 전 96% 상한, 완성 100%), shimmer 애니메이션.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- blob_client: SDK 없이 aiohttp+SAS로 PUT 업로드, 공개 URL 반환(실패 시 None)
- content_sync: 새 영상 발견 시 블롭 업로드 → Content.video에 공개 URL,
DB 커밋 성공 후 로컬 output job 폴더 삭제(OUTPUT_DIR 하위 안전장치)
- SAS 미설정 시 기존 로컬 /videos fallback 유지
- 경로 ssulbox/ 프리픽스로 ADO2 콘텐츠와 격리
- config/.env.example: AZURE_BLOB_BASE_URL/SAS_TOKEN/PREFIX 추가(실 SAS는 .env, 미커밋)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>