25c9af5daa
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 1m11s
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 25s
CI/CD Pipeline / Validate - Code Quality (pull_request) Failing after 2m20s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 11s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 8s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 25s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 35s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Failing after 33s
AI Code Review / AI Code Review (pull_request) Successful in 5m40s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 24s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 9m17s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 1m0s
CI/CD Pipeline / Integration Tests (pull_request) Failing after 2m51s
CI/CD Pipeline / PR Build 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 / 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 / Frontend Unit Tests (pull_request) Failing after 1339h21m57s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Failing after 1339h22m58s
CI/CD Pipeline / Build Production API Image (pull_request) Failing after 1339h23m0s
CI/CD Pipeline / Build Production Worker Image (pull_request) Failing after 1339h22m58s
CI/CD Pipeline / Build Staging Worker Image (pull_request) Failing after 1339h31m33s
CI/CD Pipeline / Build Staging API Image (pull_request) Failing after 1339h31m37s
CI/CD Pipeline / Build Staging Web Image (pull_request) Failing after 1340h3m51s
CI/CD Pipeline / Build Production Web Image (pull_request) Failing after 1339h55m15s
根因:API层水印配置存在 config.export.watermark_enabled/text(扁平格式),
但渲染引擎只从 config.watermark(嵌套格式)读取,两套格式不兼容导致
水印配置永远读不到,所有模式下水印都静默失效,单clip直通模式更隐蔽。
修复:
1. 新增 _resolve_watermark_config 静态方法,统一解析水印配置
2. 同时支持两种存储格式:
- 嵌套格式(优先):config.watermark = {enabled, mode, ...}
- 扁平格式:config.export.watermark_enabled + watermark_text
3. _can_use_pass_through 和 _build_filter_complex 两处均使用统一方法
4. 补充 9 个单测覆盖两种格式及边界情况