Commit Graph

25 Commits

Author SHA1 Message Date
xiaoxia 649420bd35 feat(viral-video): v1.6 单次Seedance出片+编导分镜脚本 #2124
CI/CD Pipeline / Check push changed paths (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 1s
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (pull_request) Successful in 2s
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 1m12s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 1m21s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 1m29s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 2m0s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Successful in 2m10s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 2m18s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m13s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 3m42s
AI Code Review / AI Code Review (pull_request) Successful in 6m41s
CI/CD Pipeline / Build Production API Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Web Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Deploy Production (pull_request) Has been cancelled
CI/CD Pipeline / Production Browser E2E (pull_request) Has been cancelled
CI/CD Pipeline / Canary Release to Production (pull_request) Has been cancelled
CI/CD Pipeline / CI Gate (pull_request) Has been cancelled
CI/CD Pipeline / Validate - Style (pull_request) Has been cancelled
CI/CD Pipeline / Validate - Security (pull_request) Has been cancelled
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Has been cancelled
CI/CD Pipeline / Unit Tests (pull_request) Has been cancelled
PR Automation / Auto Merge on CI Green + Approved (pull_request) Has been cancelled
- 输出从营销口播文案改为专业编导分镜脚本(CopyResult v1.6:overview/scene_and_lighting/shots/hard_constraints/negative_prompts/voiceover_script)
- 新 SCRIPT_GENERATION 阶段替代原 copy_fusion+storyboard+review,prompt 指导 LLM 输出严格 JSON 结构
- pipeline 简化为4步:图片分析 → 编导脚本 → TTS整段合成(上传OSS做reference_audios) → 单次Seedance出片 → 上传
- 删除:多段分镜拆分、ffmpeg concat拼接、placeholder占位视频、分段重试降级、BGM单独混音(Seedance generate_audio=true原生合成音效/BGM)
- ai_client/ai_service video_generation 支持 reference_images/reference_audios/reference_videos/generate_audio 参数
- duration 默认15秒,上限30秒;前端时长下拉 5/10/15/20/25/30s
- 首帧图模式不传 ratio(保持 #2110 修复)
- Alembic migration 088 幂等添加 voice_id/voice_source/video_ratio/video_model/copy_result 五列
- _step_image_analysis call_vision() 全路径 None 防护
- 向后兼容:final_copy=voiceover_script、storyboard=shots、老数据 _build_copy_result 降级拼装
- TS types 更新 CopyResult v1.6 结构 + ShotScript/Overview
- 96个 viral 相关单测全通过
2026-10-01 13:55:31 +08:00
xiaoxia 3a8ef857ac fix(vlm): call_vision 走视觉模型而非文本模型 + 图片分析 prompt 结构化强化
CI/CD Pipeline / Check push changed paths (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 1s
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (pull_request) Successful in 2s
CI/CD Pipeline / PR Build Web Image (pull_request) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Has been skipped
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 1m3s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m49s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 2m52s
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Successful in 2m54s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 2m56s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m34s
CI/CD Pipeline / Validate - Style (pull_request) Failing after 3m50s
CI/CD Pipeline / Validate - Security (pull_request) Has been cancelled
CI/CD Pipeline / Build Production API Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Web Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Deploy Production (pull_request) Has been cancelled
CI/CD Pipeline / Production Browser E2E (pull_request) Has been cancelled
CI/CD Pipeline / Canary Release to Production (pull_request) Has been cancelled
CI/CD Pipeline / CI Gate (pull_request) Has been cancelled
CI/CD Pipeline / Unit Tests (pull_request) Has been cancelled
AI Code Review / AI Code Review (pull_request) Has been cancelled
PR Automation / Auto Merge on CI Green + Approved (pull_request) Has been cancelled
根因(VLM 牛头不对马嘴):packages/shared/ai_service.call_vision() 之前误用
client.chat_completion(文本模型 doubao-seed-1.6-250615)发送多模态 content list。
文本模型不认图片 content type → 返回 None → _step_image_analysis 的 except
静默吞掉 → fallback 到占位结果 {name:'未识别'} → 后续 intent/copy/storyboard
完全没图信息,自然胡编。

修复:
1) call_vision 改用 client.vision_completion(模型 doubao-1-5-vision-pro-250915),
   走标准 OpenAI 多模态 chat/completions + image_url 格式
2) 超时提到 60s,温度降到 0.2,解析 ```json 代码块包裹
3) 增加详细 INFO 日志:打印 vision_model/image_url/prompt_len/原始返回前 400 字,
   方便下次直接在 worker 日志排查
4) 重写 _IMAGE_ANALYSIS_PROMPT:强制结构化 JSON schema(category/name/brand/colors/
   material_or_texture/key_features/visual_style/scene/target_audience_hint/
   text_on_image),明确『无法判断就填无法判断,不许编造』,key_features
   只能写外观可见特征、不许编功效
5) _step_image_analysis 健壮化:images 为空/None/文本返回/异常分别落 _source 标记;
   每张图独立 try/except,单张失败不影响其他图
6) 下游 intent_parsing/copy_fusion/storyboard 兼容新字段 key_features/brand/
   category/colors/visual_style(同时向后兼容旧 features 字段)
2026-10-01 10:06:59 +08:00
xiaoxia cdce1b2e10 fix(viral-video): fix 6 E2E bugs — fusion_level alias, concat silent segments, ingest lookup, duplicated URL, TTS voice/format, Seedance first-frame ratio
CI/CD Pipeline / Check push changed paths (pull_request) Has been skipped
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (pull_request) Successful in 4s
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 4s
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / PR Build Web Image (pull_request) Has been skipped
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 35s
CI/CD Pipeline / Retag skipped Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 53s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 2m33s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m46s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 4m52s
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Has been cancelled
CI/CD Pipeline / Build Production API Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Web Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Deploy Production (pull_request) Has been cancelled
CI/CD Pipeline / Production Browser E2E (pull_request) Has been cancelled
CI/CD Pipeline / Canary Release to Production (pull_request) Has been cancelled
CI/CD Pipeline / CI Gate (pull_request) Has been cancelled
CI/CD Pipeline / Validate - Style (pull_request) Has been cancelled
CI/CD Pipeline / Validate - Security (pull_request) Has been cancelled
CI/CD Pipeline / Unit Tests (pull_request) Has been cancelled
AI Code Review / AI Code Review (pull_request) Has been cancelled
PR Automation / Auto Merge on CI Green + Approved (pull_request) Has been cancelled
Bug1 (P0): schema accepts 'full_ai' as alias for 'ai_full' (Pydantic field_validator normalizes)
Bug2 (P0): concat_video_files probes each segment audio stream; Seedance gen_audio=False
       segments now marked has_audio=False so concat filter uses aevalsrc silence instead
       of failing with ffmpeg exit 234
Bug3 (P1): find_by_storage_key now queries (storage_key OR file_url) to cover historical
       data where the legacy file_url column held assets/<project>/<date>/... paths
Bug4 (P1): duplicated-hit response no longer accesses non-existent domain Asset.file_url;
       new helper _get_existing_asset_url uses storage_key (fallback file_url) through
       storage_service.get_url()
Bug5 (P1): _step_tts passes job.persona_id as voice_id (default longxiaochun_v3) and
       forces format='mp3' so downstream ffmpeg -map 1:a:0 works regardless of provider
Bug6 (P1): call_video_generation omits ratio param in first-frame (image_url) mode;
       ai_client.video_generation ratio becomes Optional[str] and is omitted from payload
       when None, fixing 400 InvalidParameter from Seedance
2026-10-01 04:10:06 +08:00
xiaoxia d08835ec9f fix(viral-video): #2106 P0 渲染阻塞修复 + Seedance 2.5 对接 + image_analysis 持久化
P0-1: Seedance 2.5 视频生成对接
- packages/shared/ai_client.py: DoubaoClient 新增 video_generation(prompt, image_url, duration, ratio, ...)
  方法:走方舟 /contents/generations/tasks 异步任务(submit→poll→download),返回本地 MP4 路径
- packages/shared/ai_service.py: 新增 call_video_generation() 高层封装
- packages/config/base.py: 新增 doubao_video_model/doubao_video_timeout/doubao_video_poll_interval 配置
- apps/worker/.../viral_video.py _step_render 重写:按 storyboard 分镜逐段调 Seedance 生成短视频
  → ffmpeg concat 拼接 → 混入 TTS 音频(-map 0:v/1:a -shortest -c:v copy)
- 单分镜失败自动用 ffmpeg color 源占位片段兜底,保证 concat 不中断
- 新增 _normalize_storyboard/_fallback_storyboard/_build_segment_prompt/_probe_ok/_make_placeholder_clip
  等辅助函数

P0-2: _step_video_analysis import 路径修复
- from worker_app.tasks.viral_video_analyzer → from viral_video.video_analyzer import analyze_video_style
  (文件在 apps/worker/viral_video/video_analyzer.py,worker PYTHONPATH 包含 apps/worker)
- ImportError 仍兜底返回占位 style_guide,不阻塞流水线

P0-3: image_analysis 持久化
- packages/domain/viral_video.py: ViralVideoJob 新增 image_analysis: dict|None 字段
- packages/adapters/sqlalchemy_impl/models.py: viral_video_jobs 加 image_analysis JSON 列
- packages/adapters/sqlalchemy_impl/viral_video_repository.py: _to_domain/save/update 同步该字段
- alembic/versions/087_viral_video_image_analysis.py: migration 087
- run_viral_video_pipeline: step1 后立即 job.image_analysis = image_analysis 并 _save_job
- resume_viral_video_pipeline: 从 job.image_analysis 读取,不再硬编码空 dict

P1 顺手修复:
- _step_tts: 返回值统一为 Path|None,Path 不存在/ImportError/synthesize 失败均返回 None
- _step_bgm_select: BGM 素材未就绪前统一返回 None,渲染时跳过 BGM 混音
- _step_musetalk: GPU 端点未就绪前(即使有 persona_id)也直接跳过,不发 HTTP 请求
- TTS 工厂 import 路径修正: worker_app.services.tts_service_factory → services.tts_service_factory
- credits_cost 赋值保留 TODO(等 credits.deduct() 总开关)
- tests/unit/test_viral_video.py: BGM/TTS mock 对齐新返回语义
- tests/unit/test_viral_video_p0.py: 新增 15 个单测覆盖 video_analysis/storyboard 规范化/
  TTS Path 处理/BGM None/MuseTalk 跳过/call_video_generation 委托/placeholder clip/resume 读 job
2026-09-30 19:06:33 +08:00
xiaoxia 6636dc45f7 feat(#2039): viral video domain + repository + REST API + Celery orchestrator(PR2/2)
PR Automation / Auto Approve on CI Green (pull_request) Successful in 2m44s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Has been skipped
ACR Cleanup / ACR Image Cleanup (pull_request_target) Has been cancelled
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 53s
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (pull_request) Successful in 2s
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 2s
CI/CD Pipeline / Check push changed paths (pull_request) Has been skipped
AI Code Review / AI Code Review (pull_request) Successful in 29s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 3m3s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 2m32s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 2m4s
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Successful in 6m19s
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Successful in 6m7s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Successful in 3m30s
CI/CD Pipeline / Unit Tests (pull_request) Has been cancelled
CI/CD Pipeline / PR Build Web Image (pull_request) Has been cancelled
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been cancelled
CI/CD Pipeline / Retag skipped Staging API Image (pull_request) Has been cancelled
CI/CD Pipeline / Retag skipped Staging Web Image (pull_request) Has been cancelled
CI/CD Pipeline / Retag skipped Staging Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been cancelled
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been cancelled
CI/CD Pipeline / Build Production API Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Web Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Deploy Production (pull_request) Has been cancelled
CI/CD Pipeline / Production Browser E2E (pull_request) Has been cancelled
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been cancelled
CI/CD Pipeline / Canary Release to Production (pull_request) Has been cancelled
CI/CD Pipeline / CI Gate (pull_request) Has been cancelled
CI/CD Pipeline / Validate - Style (pull_request) Has been cancelled
CI/CD Pipeline / Validate - Security (pull_request) Has been cancelled
CI/CD Pipeline / PR Build Worker Image (pull_request) Has been cancelled
- domain: ViralVideoJob 状态机(PENDING/RUNNING/WAIT_USER_CONFIRM/COMPLETED/FAILED/CANCELLED)、
  11 阶段枚举、PromptType 7 值(含 v1.3 video_style_integration/style_constraint)
- repository: 接口 + SQLAlchemy 实现(jobs/style_templates/prompt_templates)
- API: 6 个 REST 端点(generate/history/detail/retry/confirm-intent/analyze-style/style-templates)
- Celery: ViralVideoOrchestrator 10 步流水线,WS viral_video:progress 进度推送,
  Credits CREDITS_VIRAL_VIDEO_COST=50 扣点/失败自动回滚
- ai_service: 新增 call_llm/call_vision(复用现有豆包客户端)
- 测试 40 个单测(domain/schema/repository/流水线/集成)
2026-09-29 22:22:04 +08:00
xiaoxia 53fb25efcf fix(#1834): 批量修复 UP 系列静态分析警告(UP007/UP006/UP017/UP035) (#1928)
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (push) Successful in 2s
CI/CD Pipeline / Check push changed paths (push) Successful in 19s
CI/CD Pipeline / Build Staging API Image (push) Successful in 41s
CI/CD Pipeline / Build Staging Worker Image (push) Successful in 48s
CI/CD Pipeline / Integration Tests (push) Successful in 3m10s
CI/CD Pipeline / Validate - Python (mypy + alembic) (push) Successful in 3m17s
CI/CD Pipeline / Build Staging Web Image (push) Successful in 3m30s
CI/CD Pipeline / Validate - Style (push) Successful in 4m17s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (push) Successful in 59s
CI/CD Pipeline / Frontend Unit Tests (push) Failing after 5m33s
CI/CD Pipeline / Validate - Security (push) Successful in 7m12s
CI/CD Pipeline / ACR Image Cleanup (push) Successful in 2m38s
CI/CD Pipeline / Staging API Integration Tests (push) Successful in 3m13s
CI/CD Pipeline / Unit Tests (push) Successful in 10m11s
CI/CD Pipeline / Production Browser E2E (push) Has been skipped
CI/CD Pipeline / Staging E2E Tests (push) Has been cancelled
CI/CD Pipeline / Build Production Worker Image (push) Failing after 26h14m3s
CI/CD Pipeline / PR Build Worker Image (push) Failing after 26h24m21s
CI/CD Pipeline / Retag skipped Staging API Image (push) Failing after 26h19m47s
CI/CD Pipeline / PR Build Web Image (push) Failing after 26h23m44s
CI/CD Pipeline / PR Build API Image (push) Failing after 26h23m44s
CI/CD Pipeline / Deploy Production (push) Failing after 26h13m23s
CI/CD Pipeline / Build Production Web Image (push) Failing after 26h13m26s
CI/CD Pipeline / CI Gate (push) Failing after 26h13m25s
CI/CD Pipeline / Build Production API Image (push) Failing after 26h13m26s
CI/CD Pipeline / Canary Release to Production (push) Failing after 26h13m23s
CI/CD Pipeline / Retag skipped Staging Web Image (push) Failing after 26h19m46s
CI/CD Pipeline / Frontend Lint (push) Failing after 26h23m37s
CI/CD Pipeline / Check if frontend-only change (push) Failing after 26h23m45s
CI/CD Pipeline / Retag skipped Staging Worker Image (push) Failing after 26h19m46s
Co-authored-by: xiaoxia <dev@xiaoxiajianji.com>
Co-committed-by: xiaoxia <dev@xiaoxiajianji.com>
2026-09-15 12:59:17 +08:00
xiaoxia 0301370dd8 refactor: 统一封面生成管道 — 从渲染后视频抽帧作为封面 (#1371)
CI/CD Pipeline / Frontend Unit Tests (push) Successful in 1m32s
CI/CD Pipeline / Validate - Type Check (mypy) (push) Successful in 1m45s
CI/CD Pipeline / Validate - Migration (alembic) (push) Successful in 2m20s
CI/CD Pipeline / Build Staging Web Image (push) Successful in 2m22s
CI/CD Pipeline / Build Staging Worker Image (push) Successful in 5m2s
CI/CD Pipeline / Validate - Code Quality (push) Successful in 6m19s
CI/CD Pipeline / Integration Tests (push) Successful in 2m0s
CI/CD Pipeline / Unit Tests (push) Successful in 9m9s
CI/CD Pipeline / Build Staging API Image (push) Successful in 20m32s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (push) Successful in 1m2s
CI/CD Pipeline / ACR Image Cleanup (push) Successful in 41s
CI/CD Pipeline / Staging E2E Tests (push) Successful in 1m53s
CI/CD Pipeline / Staging API Integration Tests (push) Successful in 2m50s
CI/CD Pipeline / Canary Release to Production (push) Failing after 784h46m17s
CI/CD Pipeline / Deploy Production (push) Failing after 785h1m33s
CI/CD Pipeline / CI Gate (push) Failing after 785h1m33s
CI/CD Pipeline / Build Production Web Image (push) Failing after 785h1m34s
CI/CD Pipeline / Build Production API Image (push) Failing after 785h1m34s
CI/CD Pipeline / PR Build Web Image (push) Failing after 785h10m41s
CI/CD Pipeline / PR Build API Image (push) Failing after 785h10m42s
CI/CD Pipeline / Check if frontend-only change (push) Failing after 785h10m44s
CI/CD Pipeline / Production Browser E2E (push) Failing after 785h35m3s
CI/CD Pipeline / Build Production Worker Image (push) Failing after 785h35m5s
CI/CD Pipeline / PR Build Worker Image (push) Failing after 785h44m11s
CI/CD Pipeline / Frontend Lint (push) Failing after 785h44m14s
Co-authored-by: xiaoxia <dev@xiaoxiajianji.com>
Co-committed-by: xiaoxia <dev@xiaoxiajianji.com>
2026-08-14 22:16:00 +08:00
xiaoxia 21e84c71c4 perf: render-time cover frame pre-extraction + FFmpeg fallback, remove MediaKit (#1360)
CI/CD Pipeline / Validate - Migration (alembic) (push) Successful in 1m52s
CI/CD Pipeline / Validate - Type Check (mypy) (push) Successful in 2m10s
CI/CD Pipeline / Build Staging Web Image (push) Successful in 2m23s
CI/CD Pipeline / Frontend Unit Tests (push) Successful in 2m29s
CI/CD Pipeline / Build Staging Worker Image (push) Successful in 4m35s
CI/CD Pipeline / Validate - Code Quality (push) Successful in 7m2s
CI/CD Pipeline / Unit Tests (push) Successful in 9m47s
CI/CD Pipeline / Build Staging API Image (push) Successful in 13m45s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (push) Successful in 43s
CI/CD Pipeline / Integration Tests (push) Successful in 7m28s
CI/CD Pipeline / ACR Image Cleanup (push) Successful in 38s
CI/CD Pipeline / Staging E2E Tests (push) Failing after 1m6s
CI/CD Pipeline / Staging API Integration Tests (push) Successful in 2m50s
CI/CD Pipeline / Canary Release to Production (push) Failing after 810h18m24s
CI/CD Pipeline / Production Browser E2E (push) Failing after 810h25m14s
CI/CD Pipeline / Deploy Production (push) Failing after 810h25m16s
CI/CD Pipeline / Build Production Web Image (push) Failing after 810h25m16s
CI/CD Pipeline / Build Production API Image (push) Failing after 810h25m16s
CI/CD Pipeline / PR Build Worker Image (push) Failing after 810h34m50s
CI/CD Pipeline / PR Build Web Image (push) Failing after 810h34m52s
CI/CD Pipeline / Frontend Lint (push) Failing after 810h35m3s
CI/CD Pipeline / Check if frontend-only change (push) Failing after 810h35m47s
CI/CD Pipeline / CI Gate (push) Failing after 810h54m44s
CI/CD Pipeline / Build Production Worker Image (push) Failing after 810h58m46s
CI/CD Pipeline / PR Build API Image (push) Failing after 811h8m24s
Co-authored-by: xiaoxia <dev@xiaoxiajianji.com>
Co-committed-by: xiaoxia <dev@xiaoxiajianji.com>
2026-08-13 20:51:02 +08:00
xiaoxia 68fa7fd163 fix(cover): 修复 OSS 路径双斜杠导致 MediaKit 404 (#1357)
CI/CD Pipeline / Validate - Migration (alembic) (push) Successful in 2m15s
CI/CD Pipeline / Validate - Type Check (mypy) (push) Successful in 2m41s
CI/CD Pipeline / Build Staging Web Image (push) Successful in 2m53s
CI/CD Pipeline / Frontend Unit Tests (push) Successful in 3m40s
CI/CD Pipeline / Build Staging Worker Image (push) Successful in 5m20s
CI/CD Pipeline / Validate - Code Quality (push) Successful in 6m42s
CI/CD Pipeline / Unit Tests (push) Successful in 10m9s
CI/CD Pipeline / Integration Tests (push) Successful in 3m38s
CI/CD Pipeline / Build Staging API Image (push) Successful in 14m40s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (push) Successful in 46s
CI/CD Pipeline / ACR Image Cleanup (push) Successful in 39s
CI/CD Pipeline / Staging E2E Tests (push) Failing after 2m10s
CI/CD Pipeline / Staging API Integration Tests (push) Successful in 2m50s
CI/CD Pipeline / Canary Release to Production (push) Failing after 813h17m29s
CI/CD Pipeline / CI Gate (push) Failing after 813h25m25s
CI/CD Pipeline / Production Browser E2E (push) Failing after 813h25m35s
CI/CD Pipeline / Deploy Production (push) Failing after 813h25m36s
CI/CD Pipeline / Build Production API Image (push) Failing after 813h25m38s
CI/CD Pipeline / Build Production Worker Image (push) Failing after 813h25m37s
CI/CD Pipeline / PR Build Worker Image (push) Failing after 813h35m45s
CI/CD Pipeline / PR Build Web Image (push) Failing after 813h35m45s
CI/CD Pipeline / Frontend Lint (push) Failing after 813h35m47s
CI/CD Pipeline / Check if frontend-only change (push) Failing after 813h35m49s
CI/CD Pipeline / Build Production Web Image (push) Failing after 813h59m9s
CI/CD Pipeline / PR Build API Image (push) Failing after 814h9m18s
Co-authored-by: xiaoxia <dev@xiaoxiajianji.com>
Co-committed-by: xiaoxia <dev@xiaoxiajianji.com>
2026-08-13 17:51:00 +08:00
xiaoxia 7ba46cb9c0 fix(cover): 封面生成前校验视频URL可达性,避免MediaKit超时120秒 (#1356)
CI/CD Pipeline / Frontend Unit Tests (push) Successful in 1m41s
CI/CD Pipeline / Validate - Migration (alembic) (push) Successful in 2m14s
CI/CD Pipeline / Validate - Type Check (mypy) (push) Successful in 2m42s
CI/CD Pipeline / Build Staging Web Image (push) Successful in 2m42s
CI/CD Pipeline / Build Staging Worker Image (push) Successful in 4m36s
CI/CD Pipeline / Validate - Code Quality (push) Successful in 6m40s
CI/CD Pipeline / Unit Tests (push) Successful in 10m23s
CI/CD Pipeline / Integration Tests (push) Successful in 4m27s
CI/CD Pipeline / Build Staging API Image (push) Successful in 12m35s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (push) Successful in 1m30s
CI/CD Pipeline / ACR Image Cleanup (push) Successful in 38s
CI/CD Pipeline / Staging E2E Tests (push) Failing after 1m5s
CI/CD Pipeline / Staging API Integration Tests (push) Successful in 2m46s
CI/CD Pipeline / Canary Release to Production (push) Failing after 815h33m54s
CI/CD Pipeline / CI Gate (push) Failing after 815h39m39s
CI/CD Pipeline / Build Production Worker Image (push) Failing after 815h40m23s
CI/CD Pipeline / Build Production Web Image (push) Failing after 815h40m23s
CI/CD Pipeline / Production Browser E2E (push) Failing after 815h40m22s
CI/CD Pipeline / PR Build Worker Image (push) Failing after 815h50m45s
CI/CD Pipeline / PR Build Web Image (push) Failing after 815h50m46s
CI/CD Pipeline / PR Build API Image (push) Failing after 815h50m47s
CI/CD Pipeline / Check if frontend-only change (push) Failing after 815h50m49s
CI/CD Pipeline / Deploy Production (push) Failing after 816h13m54s
CI/CD Pipeline / Build Production API Image (push) Failing after 816h13m55s
CI/CD Pipeline / Frontend Lint (push) Failing after 816h24m19s
Co-authored-by: xiaoxia <dev@xiaoxiajianji.com>
Co-committed-by: xiaoxia <dev@xiaoxiajianji.com>
2026-08-13 15:36:00 +08:00
xiaoxia cd6fde790a perf(#1341): 封面生成改用 TimeInterval 策略(避免 OOM,提高稳定性) (#1351)
CI/CD Pipeline / Validate - Type Check (mypy) (push) Successful in 1m37s
CI/CD Pipeline / Validate - Migration (alembic) (push) Successful in 2m9s
CI/CD Pipeline / Frontend Unit Tests (push) Successful in 3m13s
CI/CD Pipeline / Build Staging Web Image (push) Successful in 3m20s
CI/CD Pipeline / Build Staging Worker Image (push) Successful in 3m20s
CI/CD Pipeline / Validate - Code Quality (push) Successful in 6m7s
CI/CD Pipeline / Build Staging API Image (push) Successful in 6m19s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (push) Successful in 34s
CI/CD Pipeline / ACR Image Cleanup (push) Successful in 42s
CI/CD Pipeline / Integration Tests (push) Successful in 2m12s
CI/CD Pipeline / Staging E2E Tests (push) Successful in 2m12s
CI/CD Pipeline / Unit Tests (push) Successful in 9m17s
CI/CD Pipeline / Staging API Integration Tests (push) Successful in 2m52s
CI/CD Pipeline / Canary Release to Production (push) Failing after 830h41m0s
CI/CD Pipeline / CI Gate (push) Failing after 830h41m28s
CI/CD Pipeline / Build Production Worker Image (push) Failing after 830h41m29s
CI/CD Pipeline / Build Production API Image (push) Failing after 830h41m29s
CI/CD Pipeline / Production Browser E2E (push) Failing after 830h41m27s
CI/CD Pipeline / PR Build Worker Image (push) Failing after 830h50m46s
CI/CD Pipeline / PR Build API Image (push) Failing after 830h50m48s
CI/CD Pipeline / Frontend Lint (push) Failing after 830h50m49s
CI/CD Pipeline / Check if frontend-only change (push) Failing after 830h50m52s
CI/CD Pipeline / Deploy Production (push) Failing after 831h14m59s
CI/CD Pipeline / Build Production Web Image (push) Failing after 831h15m0s
CI/CD Pipeline / PR Build Web Image (push) Failing after 831h24m18s
Co-authored-by: xiaoxia <dev@xiaoxiajianji.com>
Co-committed-by: xiaoxia <dev@xiaoxiajianji.com>
2026-08-13 00:36:00 +08:00
xiaoxia 7b9e803603 fix(#1341): 增强封面生成错误日志和前端提示 + ESLint 修复 + prettier 格式化 (#1347)
CI/CD Pipeline / Validate - Migration (alembic) (push) Successful in 2m11s
CI/CD Pipeline / Validate - Type Check (mypy) (push) Successful in 2m28s
CI/CD Pipeline / Build Staging Web Image (push) Successful in 2m58s
CI/CD Pipeline / Frontend Unit Tests (push) Successful in 2m3s
CI/CD Pipeline / Build Staging Worker Image (push) Successful in 6m17s
CI/CD Pipeline / Validate - Code Quality (push) Successful in 9m21s
CI/CD Pipeline / Unit Tests (push) Failing after 10m23s
CI/CD Pipeline / Integration Tests (push) Successful in 5m40s
CI/CD Pipeline / Build Staging API Image (push) Successful in 15m14s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (push) Successful in 46s
CI/CD Pipeline / ACR Image Cleanup (push) Successful in 35s
CI/CD Pipeline / Staging E2E Tests (push) Successful in 1m45s
CI/CD Pipeline / Staging API Integration Tests (push) Successful in 2m48s
CI/CD Pipeline / Canary Release to Production (push) Failing after 832h38m47s
CI/CD Pipeline / Production Browser E2E (push) Failing after 832h45m29s
CI/CD Pipeline / Deploy Production (push) Failing after 832h45m29s
CI/CD Pipeline / Build Production Web Image (push) Failing after 832h45m30s
CI/CD Pipeline / Build Production API Image (push) Failing after 832h45m30s
CI/CD Pipeline / PR Build Worker Image (push) Failing after 832h55m33s
CI/CD Pipeline / PR Build Web Image (push) Failing after 832h55m35s
CI/CD Pipeline / PR Build API Image (push) Failing after 832h55m37s
CI/CD Pipeline / Frontend Lint (push) Failing after 832h55m45s
CI/CD Pipeline / Check if frontend-only change (push) Failing after 832h58m9s
CI/CD Pipeline / CI Gate (push) Failing after 833h16m34s
CI/CD Pipeline / Build Production Worker Image (push) Failing after 833h19m0s
2026-08-12 22:28:38 +08:00
CI Bot 6c14170b94 style: auto-format with black + isort + prettier [skip ci-format-check]
CI/CD Pipeline / Validate - Migration (alembic) (push) Successful in 1m57s
CI/CD Pipeline / Validate - Type Check (mypy) (push) Successful in 2m21s
CI/CD Pipeline / Build Staging Worker Image (push) Successful in 2m21s
CI/CD Pipeline / Frontend Unit Tests (push) Successful in 3m8s
CI/CD Pipeline / Build Staging Web Image (push) Successful in 4m12s
CI/CD Pipeline / Validate - Code Quality (push) Successful in 5m39s
CI/CD Pipeline / Integration Tests (push) Successful in 2m22s
CI/CD Pipeline / Unit Tests (push) Failing after 9m19s
CI/CD Pipeline / Build Staging API Image (push) Successful in 11m26s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (push) Successful in 49s
CI/CD Pipeline / ACR Image Cleanup (push) Successful in 41s
CI/CD Pipeline / Staging E2E Tests (push) Successful in 47s
CI/CD Pipeline / Staging API Integration Tests (push) Successful in 2m49s
CI/CD Pipeline / Canary Release to Production (push) Failing after 860h44m59s
CI/CD Pipeline / Deploy Production (push) Failing after 860h50m46s
CI/CD Pipeline / CI Gate (push) Failing after 860h50m46s
CI/CD Pipeline / Build Production Web Image (push) Failing after 860h50m46s
CI/CD Pipeline / Build Production API Image (push) Failing after 860h50m46s
CI/CD Pipeline / PR Build Web Image (push) Failing after 861h0m4s
CI/CD Pipeline / PR Build API Image (push) Failing after 861h0m4s
CI/CD Pipeline / Check if frontend-only change (push) Failing after 861h0m6s
CI/CD Pipeline / Production Browser E2E (push) Failing after 861h24m13s
CI/CD Pipeline / Build Production Worker Image (push) Failing after 861h24m14s
CI/CD Pipeline / PR Build Worker Image (push) Failing after 861h33m32s
CI/CD Pipeline / Frontend Lint (push) Failing after 861h33m33s
2026-08-11 10:26:49 +00:00
CI Bot 3d5438a3af fix: cover generation full-chain fix — bare URL, remove stub fallback, clean dead code
CI/CD Pipeline / Validate - Migration (alembic) (push) Successful in 1m42s
CI/CD Pipeline / Validate - Type Check (mypy) (push) Successful in 1m48s
CI/CD Pipeline / Build Staging Web Image (push) Successful in 2m23s
CI/CD Pipeline / Frontend Unit Tests (push) Successful in 2m56s
CI/CD Pipeline / Validate - Code Quality (push) Has been cancelled
CI/CD Pipeline / Unit Tests (push) Has been cancelled
CI/CD Pipeline / Integration Tests (push) Has been cancelled
CI/CD Pipeline / Build Staging API Image (push) Has been cancelled
CI/CD Pipeline / Build Staging Worker Image (push) Has been cancelled
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (push) Has been cancelled
CI/CD Pipeline / Staging E2E Tests (push) Has been cancelled
CI/CD Pipeline / Staging API Integration Tests (push) Has been cancelled
CI/CD Pipeline / Build Production API Image (push) Has been cancelled
CI/CD Pipeline / Build Production Web Image (push) Has been cancelled
CI/CD Pipeline / Build Production Worker Image (push) Has been cancelled
CI/CD Pipeline / Deploy Production (push) Has been cancelled
CI/CD Pipeline / Production Browser E2E (push) Has been cancelled
CI/CD Pipeline / ACR Image Cleanup (push) Has been cancelled
CI/CD Pipeline / Canary Release to Production (push) Has been cancelled
CI/CD Pipeline / CI Gate (push) Has been cancelled
CI/CD Pipeline / PR Build Worker Image (push) Failing after 861h4m24s
CI/CD Pipeline / PR Build Web Image (push) Failing after 861h4m24s
CI/CD Pipeline / Frontend Lint (push) Failing after 861h4m24s
CI/CD Pipeline / Check if frontend-only change (push) Failing after 861h4m27s
CI/CD Pipeline / PR Build API Image (push) Failing after 861h37m53s
- cover.py: use get_url() (bare URL) instead of get_download_url() (signed URL)
  to avoid OSS sign_url encoding / as %2F causing 403
- ai_service.py: remove SVG stub fallback in _call_ai_cover_service(),
  raise RuntimeError with clear error message instead
- cover.py: wrap run_generate_cover() in try/except RuntimeError → HTTPException
- schemas.py: remove unused CoverGenerateResponse class
- Note: rendered/* OSS public read must be configured for bare URL to work
2026-08-11 18:22:23 +08:00
CI Bot 7b534c950b fix(cover): increase MediaKit timeout + use public URL + extend frontend timeout
CI/CD Pipeline / Validate - Migration (alembic) (push) Successful in 2m9s
CI/CD Pipeline / Validate - Type Check (mypy) (push) Successful in 2m37s
CI/CD Pipeline / Build Staging Web Image (push) Successful in 3m5s
CI/CD Pipeline / Frontend Unit Tests (push) Successful in 3m24s
CI/CD Pipeline / Build Staging Worker Image (push) Successful in 5m35s
CI/CD Pipeline / Validate - Code Quality (push) Successful in 6m19s
CI/CD Pipeline / Unit Tests (push) Successful in 9m49s
CI/CD Pipeline / Integration Tests (push) Successful in 3m42s
CI/CD Pipeline / Build Staging API Image (push) Successful in 13m48s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (push) Successful in 55s
CI/CD Pipeline / ACR Image Cleanup (push) Successful in 36s
CI/CD Pipeline / Staging E2E Tests (push) Successful in 1m39s
CI/CD Pipeline / Staging API Integration Tests (push) Successful in 3m42s
CI/CD Pipeline / Canary Release to Production (push) Failing after 862h59m13s
CI/CD Pipeline / Production Browser E2E (push) Failing after 863h7m48s
CI/CD Pipeline / Deploy Production (push) Failing after 863h7m49s
CI/CD Pipeline / Build Production Worker Image (push) Failing after 863h7m50s
CI/CD Pipeline / Build Production API Image (push) Failing after 863h7m50s
CI/CD Pipeline / PR Build Worker Image (push) Failing after 863h17m39s
CI/CD Pipeline / Frontend Lint (push) Failing after 863h17m40s
CI/CD Pipeline / PR Build Web Image (push) Failing after 863h17m39s
CI/CD Pipeline / Check if frontend-only change (push) Failing after 863h17m42s
CI/CD Pipeline / CI Gate (push) Failing after 863h41m7s
CI/CD Pipeline / Build Production Web Image (push) Failing after 863h41m19s
CI/CD Pipeline / PR Build API Image (push) Failing after 863h51m9s
Three fixes for cover generation:
1. cover.py: get_download_url -> get_url for video URL (OSS public read)
2. ai_service.py: extract_frames poll_interval=3.0, max_poll_attempts=60 (180s)
3. aiFeatures.ts: generateCover axios timeout 10s -> 180s
2026-08-11 16:09:07 +08:00
CI Bot ebd67c1b7d fix: 封面URL回退为裸URL,OSS已开公开读
CI/CD Pipeline / Validate - Migration (alembic) (push) Successful in 1m9s
CI/CD Pipeline / Frontend Unit Tests (push) Successful in 1m39s
CI/CD Pipeline / Validate - Type Check (mypy) (push) Successful in 1m58s
CI/CD Pipeline / Build Staging Web Image (push) Successful in 2m47s
CI/CD Pipeline / Build Staging Worker Image (push) Successful in 5m21s
CI/CD Pipeline / Validate - Code Quality (push) Successful in 5m46s
CI/CD Pipeline / Integration Tests (push) Successful in 2m12s
CI/CD Pipeline / Unit Tests (push) Successful in 8m52s
CI/CD Pipeline / Build Staging API Image (push) Successful in 13m0s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (push) Has been cancelled
CI/CD Pipeline / Staging E2E Tests (push) Has been cancelled
CI/CD Pipeline / Staging API Integration Tests (push) Has been cancelled
CI/CD Pipeline / ACR Image Cleanup (push) Has been cancelled
CI/CD Pipeline / Canary Release to Production (push) Has been cancelled
CI/CD Pipeline / Production Browser E2E (push) Failing after 865h44m19s
CI/CD Pipeline / CI Gate (push) Failing after 865h44m19s
CI/CD Pipeline / Build Production Worker Image (push) Failing after 865h44m19s
CI/CD Pipeline / Build Production API Image (push) Failing after 865h44m19s
CI/CD Pipeline / PR Build Worker Image (push) Failing after 865h53m11s
CI/CD Pipeline / Check if frontend-only change (push) Failing after 865h53m15s
CI/CD Pipeline / PR Build Web Image (push) Failing after 865h53m11s
CI/CD Pipeline / PR Build API Image (push) Failing after 865h53m11s
CI/CD Pipeline / Deploy Production (push) Failing after 866h17m47s
CI/CD Pipeline / Build Production Web Image (push) Failing after 866h17m47s
CI/CD Pipeline / Frontend Lint (push) Failing after 866h26m39s
OSS桶 xiaoxia-autocut 已对 covers/ 路径开放公开读权限,
封面URL不再需要签名,回退 storage.get_url(cover_key)。

 revert 3e14a0d4
2026-08-11 13:33:36 +08:00
CI Bot 3e14a0d462 fix: 封面URL改用签名URL,OSS桶非公开读
CI/CD Pipeline / Validate - Migration (alembic) (push) Successful in 1m36s
CI/CD Pipeline / Build Staging Web Image (push) Successful in 2m32s
CI/CD Pipeline / Validate - Type Check (mypy) (push) Successful in 2m38s
CI/CD Pipeline / Frontend Unit Tests (push) Successful in 3m26s
CI/CD Pipeline / Build Staging Worker Image (push) Successful in 5m15s
CI/CD Pipeline / Validate - Code Quality (push) Successful in 5m27s
CI/CD Pipeline / Integration Tests (push) Successful in 1m45s
CI/CD Pipeline / Unit Tests (push) Successful in 8m47s
CI/CD Pipeline / Build Staging API Image (push) Successful in 12m16s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (push) Successful in 49s
CI/CD Pipeline / ACR Image Cleanup (push) Successful in 39s
CI/CD Pipeline / Staging E2E Tests (push) Successful in 48s
CI/CD Pipeline / Staging API Integration Tests (push) Successful in 2m52s
CI/CD Pipeline / Canary Release to Production (push) Failing after 866h0m22s
CI/CD Pipeline / Deploy Production (push) Failing after 866h7m37s
CI/CD Pipeline / CI Gate (push) Failing after 866h7m37s
CI/CD Pipeline / Build Production Web Image (push) Failing after 866h7m37s
CI/CD Pipeline / Build Production API Image (push) Failing after 866h7m37s
CI/CD Pipeline / PR Build Web Image (push) Failing after 866h16m25s
CI/CD Pipeline / PR Build API Image (push) Failing after 866h16m25s
CI/CD Pipeline / Check if frontend-only change (push) Failing after 866h16m27s
CI/CD Pipeline / Production Browser E2E (push) Failing after 866h41m4s
CI/CD Pipeline / Build Production Worker Image (push) Failing after 866h41m5s
CI/CD Pipeline / PR Build Worker Image (push) Failing after 866h49m52s
CI/CD Pipeline / Frontend Lint (push) Failing after 866h49m53s
storage.get_url() 只拼接裸URL,浏览器无法访问。
改用 storage.get_download_url(cover_key, expires_seconds=86400)
生成24小时有效的签名URL。
2026-08-11 13:10:28 +08:00
CI Bot cfea86e25a style: auto-format with black + isort + prettier [skip ci-format-check]
CI/CD Pipeline / Validate - Code Quality (push) Has been cancelled
CI/CD Pipeline / Validate - Type Check (mypy) (push) Has been cancelled
CI/CD Pipeline / Validate - Migration (alembic) (push) Has been cancelled
CI/CD Pipeline / Unit Tests (push) Has been cancelled
CI/CD Pipeline / Integration Tests (push) Has been cancelled
CI/CD Pipeline / Frontend Unit Tests (push) Has been cancelled
CI/CD Pipeline / Build Staging API Image (push) Has been cancelled
CI/CD Pipeline / Build Staging Web Image (push) Has been cancelled
CI/CD Pipeline / Build Staging Worker Image (push) Has been cancelled
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (push) Has been cancelled
CI/CD Pipeline / Staging E2E Tests (push) Has been cancelled
CI/CD Pipeline / Staging API Integration Tests (push) Has been cancelled
CI/CD Pipeline / Build Production API Image (push) Has been cancelled
CI/CD Pipeline / Build Production Web Image (push) Has been cancelled
CI/CD Pipeline / Build Production Worker Image (push) Has been cancelled
CI/CD Pipeline / Deploy Production (push) Has been cancelled
CI/CD Pipeline / Production Browser E2E (push) Has been cancelled
CI/CD Pipeline / ACR Image Cleanup (push) Has been cancelled
CI/CD Pipeline / Canary Release to Production (push) Has been cancelled
CI/CD Pipeline / CI Gate (push) Has been cancelled
CI/CD Pipeline / PR Build Worker Image (push) Failing after 867h31m33s
CI/CD Pipeline / PR Build Web Image (push) Failing after 867h31m33s
CI/CD Pipeline / Frontend Lint (push) Failing after 867h31m34s
CI/CD Pipeline / Check if frontend-only change (push) Failing after 867h31m36s
CI/CD Pipeline / PR Build API Image (push) Failing after 868h5m1s
2026-08-11 03:55:19 +00:00
CI Bot 759a7e0508 fix: 封面预览 broken image — MediaKit帧图转存OSS返回公开URL
CI/CD Pipeline / Validate - Migration (alembic) (push) Successful in 2m15s
CI/CD Pipeline / Build Staging Web Image (push) Successful in 2m30s
CI/CD Pipeline / Validate - Type Check (mypy) (push) Successful in 2m33s
CI/CD Pipeline / Frontend Unit Tests (push) Successful in 3m0s
CI/CD Pipeline / Build Staging Worker Image (push) Successful in 5m4s
CI/CD Pipeline / Validate - Code Quality (push) Has been cancelled
CI/CD Pipeline / Unit Tests (push) Has been cancelled
CI/CD Pipeline / Integration Tests (push) Has been cancelled
CI/CD Pipeline / Build Staging API Image (push) Has been cancelled
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (push) Has been cancelled
CI/CD Pipeline / Staging E2E Tests (push) Has been cancelled
CI/CD Pipeline / Staging API Integration Tests (push) Has been cancelled
CI/CD Pipeline / Build Production API Image (push) Has been cancelled
CI/CD Pipeline / Build Production Web Image (push) Has been cancelled
CI/CD Pipeline / Build Production Worker Image (push) Has been cancelled
CI/CD Pipeline / Deploy Production (push) Has been cancelled
CI/CD Pipeline / Production Browser E2E (push) Has been cancelled
CI/CD Pipeline / ACR Image Cleanup (push) Has been cancelled
CI/CD Pipeline / Canary Release to Production (push) Has been cancelled
CI/CD Pipeline / CI Gate (push) Has been cancelled
CI/CD Pipeline / PR Build API Image (push) Failing after 867h36m38s
CI/CD Pipeline / PR Build Worker Image (push) Failing after 867h36m38s
CI/CD Pipeline / Frontend Lint (push) Failing after 867h36m38s
CI/CD Pipeline / Check if frontend-only change (push) Failing after 867h36m42s
CI/CD Pipeline / PR Build Web Image (push) Failing after 868h10m6s
根因:MediaKit extract_frames 返回的 image_url 是内部临时 URL,
浏览器无法直接访问,导致封面预览显示 broken image。

修复:新增 _transfer_cover_frame_to_storage(),在 MediaKit 抽帧
成功后下载帧图并重新上传到 OSS,返回公开可访问的 URL。
失败时降级返回原始 URL(不影响流程)。

78个相关单测全部通过。
2026-08-11 11:50:10 +08:00
CI Bot b155db260a fix: 封面生成 stub 返回 SVG data URI 占位图替代不存在的 placeholder API
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 47s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 55s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m1s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m23s
AI Code Review / AI Code Review (pull_request) Failing after 1m37s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m40s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 1m49s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 1m49s
CI/CD Pipeline / Validate - Code Quality (pull_request) Has been cancelled
CI/CD Pipeline / Unit Tests (pull_request) Has been cancelled
CI/CD Pipeline / Integration Tests (pull_request) Has been cancelled
CI/CD Pipeline / Build Production API Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Web Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Deploy Production (pull_request) Has been cancelled
CI/CD Pipeline / Production Browser E2E (pull_request) Has been cancelled
CI/CD Pipeline / Canary Release to Production (pull_request) Has been cancelled
CI/CD Pipeline / CI Gate (pull_request) Has been cancelled
PR Automation / Auto Approve on CI Green (pull_request) Has been cancelled
CI/CD Pipeline / PR Build Web Image (pull_request) Failing after 887h28m41s
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 887h28m42s
CI/CD Pipeline / ACR Image Cleanup (pull_request) Failing after 887h29m26s
CI/CD Pipeline / Staging E2E Tests (pull_request) Failing after 887h29m26s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Failing after 887h29m28s
CI/CD Pipeline / Build Staging API Image (pull_request) Failing after 887h29m30s
CI/CD Pipeline / Build Staging Worker Image (pull_request) Failing after 887h29m30s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Failing after 888h2m8s
CI/CD Pipeline / Staging API Integration Tests (pull_request) Failing after 888h2m52s
CI/CD Pipeline / Build Staging Web Image (pull_request) Failing after 888h2m56s
根因:_call_ai_cover_service 降级到 stub 时,image_url 返回
/api/v1/assets/placeholder/cover?plan={plan_id},该端点不存在,
浏览器 404 加载失败,显示 broken image。

修复:
- manual 模式和 AI stub 模式的 image_url 改为 SVG data URI
  占位图(1080x1920,深色背景 + 提示文字),前端可直接渲染
- 不依赖任何后端端点,无需网络请求
2026-08-10 15:57:07 +08:00
xiaoxia 3e24f8de4a fix: MediaKit 重试逻辑 + TimeInterval默认策略 + 错误日志增强 (#1227)
CI/CD Pipeline / Validate - Migration (alembic) (push) Successful in 52s
CI/CD Pipeline / Validate - Type Check (mypy) (push) Successful in 1m11s
CI/CD Pipeline / Build Staging Web Image (push) Successful in 2m33s
CI/CD Pipeline / Frontend Unit Tests (push) Successful in 3m25s
CI/CD Pipeline / Validate - Code Quality (push) Successful in 4m23s
CI/CD Pipeline / Build Staging Worker Image (push) Successful in 4m52s
CI/CD Pipeline / Integration Tests (push) Successful in 1m32s
CI/CD Pipeline / Unit Tests (push) Successful in 9m8s
CI/CD Pipeline / Frontend Lint (push) Failing after 13m58s
CI/CD Pipeline / Build Staging API Image (push) Successful in 14m6s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (push) Successful in 33s
CI/CD Pipeline / Staging API Integration Tests (push) Failing after 17s
CI/CD Pipeline / ACR Image Cleanup (push) Successful in 36s
CI/CD Pipeline / Staging E2E Tests (push) Failing after 44s
CI/CD Pipeline / Canary Release to Production (push) Failing after 1057h20m54s
CI/CD Pipeline / CI Gate (push) Failing after 1057h21m55s
CI/CD Pipeline / Production Browser E2E (push) Failing after 1057h21m54s
CI/CD Pipeline / Build Production Worker Image (push) Failing after 1057h21m55s
CI/CD Pipeline / Build Production API Image (push) Failing after 1057h21m55s
CI/CD Pipeline / PR Build Worker Image (push) Failing after 1057h35m50s
CI/CD Pipeline / PR Build API Image (push) Failing after 1057h35m54s
CI/CD Pipeline / Check if frontend-only change (push) Failing after 1057h35m56s
CI/CD Pipeline / Deploy Production (push) Failing after 1057h55m10s
CI/CD Pipeline / Build Production Web Image (push) Failing after 1057h55m10s
CI/CD Pipeline / PR Build Web Image (push) Failing after 1058h9m7s
2026-08-03 13:51:27 +08:00
xiaoxia 82bc193693 feat: #1209 AI智能选片段接入MediaKit视频理解
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 40s
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 45s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 49s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m35s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m51s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 2m51s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m39s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 2m30s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 4m47s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 4m47s
AI Code Review / AI Code Review (pull_request) Failing after 6m38s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 8m29s
CI/CD Pipeline / CI Gate (pull_request) Successful in 12s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 51s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 1m1s
CI/CD Pipeline / Production Browser E2E (pull_request) Failing after 1061h33m41s
CI/CD Pipeline / Deploy Production (pull_request) Failing after 1061h33m41s
CI/CD Pipeline / Build Production Worker Image (pull_request) Failing after 1061h33m42s
CI/CD Pipeline / PR Build Web Image (pull_request) Failing after 1061h42m12s
CI/CD Pipeline / Build Production Web Image (pull_request) Failing after 1061h33m42s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Failing after 1061h42m12s
CI/CD Pipeline / ACR Image Cleanup (pull_request) Failing after 1061h42m56s
CI/CD Pipeline / Staging API Integration Tests (pull_request) Failing after 1061h42m56s
CI/CD Pipeline / Staging E2E Tests (pull_request) Failing after 1061h42m56s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Failing after 1061h42m58s
CI/CD Pipeline / Build Staging Worker Image (pull_request) Failing after 1061h43m0s
CI/CD Pipeline / Build Staging Web Image (pull_request) Failing after 1061h43m0s
CI/CD Pipeline / Build Staging API Image (pull_request) Failing after 1061h43m0s
CI/CD Pipeline / Canary Release to Production (pull_request) Failing after 1062h6m55s
CI/CD Pipeline / Build Production API Image (pull_request) Failing after 1062h6m57s
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 1062h15m26s
- MediaKitClient 新增 analyze_videos() 方法,调用视频理解智能策略 API
- _call_ai_recommend_service 支持 asset_analyses 参数,将视频内容分析注入 prompt
- API 路由层自动获取素材 URL 并调用 MediaKit 分析视频内容
- LLM 可根据视频实际内容做智能编排(叙事连贯、场景匹配等)
- 降级策略:MediaKit 不可用时保持原有 fallback 行为
- 15 个新单元测试全部通过
2026-08-03 09:43:34 +08:00
xiaoxia 92b29de511 feat: #1208 AI封面接入MediaKit视频截帧 (#1214)
CI/CD Pipeline / Validate - Migration (alembic) (push) Successful in 54s
CI/CD Pipeline / Validate - Type Check (mypy) (push) Successful in 1m27s
CI/CD Pipeline / Build Staging Web Image (push) Successful in 2m22s
CI/CD Pipeline / Build Staging Worker Image (push) Successful in 4m44s
CI/CD Pipeline / Validate - Code Quality (push) Successful in 4m45s
CI/CD Pipeline / Integration Tests (push) Successful in 1m16s
CI/CD Pipeline / Unit Tests (push) Successful in 8m25s
CI/CD Pipeline / Frontend Unit Tests (push) Failing after 11m23s
CI/CD Pipeline / Build Staging API Image (push) Successful in 11m38s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (push) Successful in 31s
CI/CD Pipeline / ACR Image Cleanup (push) Successful in 37s
CI/CD Pipeline / Staging E2E Tests (push) Failing after 1m44s
CI/CD Pipeline / Staging API Integration Tests (push) Successful in 4m20s
CI/CD Pipeline / Canary Release to Production (push) Failing after 1093h56m51s
CI/CD Pipeline / Build Production Web Image (push) Failing after 1094h1m58s
CI/CD Pipeline / Build Production API Image (push) Failing after 1094h1m58s
CI/CD Pipeline / Production Browser E2E (push) Failing after 1094h1m56s
CI/CD Pipeline / Deploy Production (push) Failing after 1094h1m57s
CI/CD Pipeline / PR Build Web Image (push) Failing after 1094h13m21s
CI/CD Pipeline / PR Build API Image (push) Failing after 1094h13m22s
CI/CD Pipeline / CI Gate (push) Failing after 1094h1m57s
CI/CD Pipeline / Check if frontend-only change (push) Failing after 1094h13m26s
CI/CD Pipeline / Build Production Worker Image (push) Failing after 1094h35m12s
CI/CD Pipeline / PR Build Worker Image (push) Failing after 1094h46m34s
CI/CD Pipeline / Frontend Lint (push) Failing after 1094h46m37s
2026-08-02 01:14:02 +08:00
xiaoxia 30457629da fix(ci): fix preview deploy frontend build - remove DooD, use direct runner (#919)
CI/CD Pipeline / Validate - Code Quality (push) Failing after 1m20s
CI/CD Pipeline / Validate - Type Check (mypy) (push) Successful in 48s
CI/CD Pipeline / Validate - Migration (alembic) (push) Successful in 51s
CI/CD Pipeline / Unit Tests (push) Successful in 4m54s
CI/CD Pipeline / Integration Tests (push) Successful in 2m6s
CI/CD Pipeline / Frontend Lint (push) Successful in 28s
CI/CD Pipeline / Frontend Unit Tests (push) Successful in 55s
CI/CD Pipeline / Build Staging API Image (push) Successful in 12m7s
CI/CD Pipeline / Build Staging Web Image (push) Successful in 1m15s
CI/CD Pipeline / Build Staging Worker Image (push) Successful in 4m6s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (push) Successful in 1m34s
CI/CD Pipeline / Staging E2E Tests (push) Successful in 1m29s
CI/CD Pipeline / ACR Image Cleanup (push) Failing after 5s
CI/CD Pipeline / Staging API Integration Tests (push) Successful in 3m50s
CI/CD Pipeline / Canary Release to Production (push) Has been cancelled
CI/CD Pipeline / Production Browser E2E (push) Failing after 1249h54m44s
CI/CD Pipeline / Deploy Production (push) Failing after 1250h11m28s
CI/CD Pipeline / Build Production Worker Image (push) Failing after 1250h15m55s
CI/CD Pipeline / Build Production API Image (push) Failing after 1250h15m59s
CI/CD Pipeline / PR Build Worker Image (push) Failing after 1250h17m5s
CI/CD Pipeline / Check if frontend-only change (push) Failing after 1250h18m50s
CI/CD Pipeline / PR Build Web Image (push) Failing after 1250h17m7s
CI/CD Pipeline / Build Production Web Image (push) Failing after 1250h48m35s
CI/CD Pipeline / PR Build API Image (push) Failing after 1250h49m47s
2026-07-26 12:58:22 +08:00
xiaoxia 389d1e4401 refactor(#775): 禁止API直接调用Worker任务函数,必须走Celery队列或shared层 (#786)
CI/CD Pipeline / Check if frontend-only change (push) Has been cancelled
CI/CD Pipeline / Validate - Code Quality (push) Has been cancelled
CI/CD Pipeline / Validate - Type Check (mypy) (push) Has been cancelled
CI/CD Pipeline / Validate - Migration (alembic) (push) Has been cancelled
CI/CD Pipeline / Unit Tests (push) Has been cancelled
CI/CD Pipeline / Integration Tests (push) Has been cancelled
CI/CD Pipeline / Frontend Lint (push) Has been cancelled
CI/CD Pipeline / Frontend Unit Tests (push) Has been cancelled
CI/CD Pipeline / PR Build API Image (push) Has been cancelled
CI/CD Pipeline / PR Build Web Image (push) Has been cancelled
CI/CD Pipeline / PR Build Worker Image (push) Has been cancelled
CI/CD Pipeline / Build Staging API Image (push) Has been cancelled
CI/CD Pipeline / Build Staging Web Image (push) Has been cancelled
CI/CD Pipeline / Build Staging Worker Image (push) Has been cancelled
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (push) Has been cancelled
CI/CD Pipeline / Staging E2E Tests (push) Has been cancelled
CI/CD Pipeline / Staging API Integration Tests (push) Has been cancelled
CI/CD Pipeline / Build Production API Image (push) Has been cancelled
CI/CD Pipeline / Build Production Web Image (push) Has been cancelled
CI/CD Pipeline / Build Production Worker Image (push) Has been cancelled
CI/CD Pipeline / Deploy Production (push) Has been cancelled
CI/CD Pipeline / Production Browser E2E (push) Has been cancelled
CI/CD Pipeline / ACR Image Cleanup (push) Has been cancelled
2026-07-23 22:34:51 +08:00