32c3d2f263
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (pull_request) Successful in 1s
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 1s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 27s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 1m43s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m55s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 2m44s
AI Code Review / AI Code Review (pull_request) Successful in 6m34s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 8m17s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 8m45s
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 / 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 Merge on CI Green + Approved (pull_request) Has been cancelled
CI/CD Pipeline / Staging E2E Tests (pull_request) Failing after 112h13m34s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Failing after 112h13m49s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Failing after 112h13m21s
CI/CD Pipeline / Retag skipped Staging Worker Image (pull_request) Failing after 112h13m26s
CI/CD Pipeline / Retag skipped Staging Web Image (pull_request) Failing after 112h13m27s
CI/CD Pipeline / Retag skipped Staging API Image (pull_request) Failing after 112h13m27s
CI/CD Pipeline / Build Staging Worker Image (pull_request) Failing after 112h13m32s
CI/CD Pipeline / Build Staging API Image (pull_request) Failing after 112h13m32s
CI/CD Pipeline / Staging API Integration Tests (pull_request) Failing after 112h13m16s
CI/CD Pipeline / ACR Image Cleanup (pull_request) Failing after 112h13m15s
CI/CD Pipeline / PR Build Web Image (pull_request) Failing after 112h13m32s
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 112h13m33s
CI/CD Pipeline / Check push changed paths (pull_request) Failing after 112h13m36s
CI/CD Pipeline / Build Staging Web Image (pull_request) Failing after 112h48m43s
根因分析(退出码 234 = Invalid argument): 1) drawtext 使用了无效参数 font=bold,导致整个 filter_complex 解析失败 —— FFmpeg drawtext 没有 bold 参数;改为通过 borderw 模拟粗体视觉效果 2) DRAWTEXT_FONT_SEARCH_PATHS 未包含 Dockerfile 中 COPY 的 NotoSansSC-VF.ttf 路径,且把不支持中文的 DejaVuSans 放在 fallback 首位, 导致字体 fallback 到拉丁字体,中文渲染乱码/方框 3) build_broll_overlay_filter 硬编码 1280:720 横屏尺寸,AI 数字人是 9:16 竖屏 4) B-roll PIP 输入索引错误(用 len(sorted_segments) 而非原始下标映射), PIP 标签链断裂([pip0]→[vout0] 而非 [vout]) 5) 渲染命令缺 -map 0:a?,合成后音频丢失 6) 标题滤镜与 B-roll 输出标签拼接用分号有缺陷,末尾分号处理偶发问题 修复内容(packages/domain/video_filter_builder.py): - DRAWTEXT_FONT_SEARCH_PATHS: VF 字体置顶、移除 DejaVuSans、加 Bold.ttc 路径 - DRAWTEXT_FONT_MAP: 思源黑体等关键字改为 NotoSansSC(匹配 VF 文件名) - 删除 font=bold 无效参数;bold 无显式描边时自动用 borderw=3+同色描边模拟粗体 - build_broll_overlay_filter 返回 (filter_str, final_label) 元组,解决标签问题 - 重写 fullscreen/PIP 拆分:原始列表下标决定 -i 输入序号,sorted 只用于时序处理 - PIP overlay 正确基于 fullscreen 输出([vout_fs])或主视频([0:v])链接 - output_width/output_height 贯穿所有 scale/pad/overlay,默认 1280x720 兼容旧调用 修复内容(apps/api/app/services/ai_avatar_render_service.py): - 新增 _probe_video_resolution() 用 ffprobe 探测输入视频实际分辨率 - AI 数字人默认竖屏 720x1280,探测失败兜底不阻断渲染 - build_broll_overlay_filter 调用传实际 output_width/output_height - 标题滤镜传实际尺寸,保证位置/坐标计算正确 - filter_complex 拼接重写:broll+title/broll-only/title-only/无滤镜四分支清晰 - _build_ffmpeg_command 补 -map 0:a? + -c:a aac,音频不再丢失 - 清理冗余内联 import 测试: - 更新 test_ai_avatar_render_routes.py / test_video_filter_builder.py 适配新元组签名 - 新增 test_bold_true_does_not_use_font_bold_param 防回归 - 本地 ffmpeg 实测中文标题+B-roll+竖屏720x1280合成成功 - 相关 3524 个单测全通过
xiaoxia-saas API
结构
app/core/:配置与基础能力app/api/:路由组织app/schemas/:请求响应模型app/dependencies.py:依赖注入入口main.py:FastAPI 启动入口
当前可用接口
GET /api/healthGET /api/projects?workspace_id=...POST /api/projects