fix(#462): 修复直通模式下水印静默失效 - 配置格式不兼容 #739
Reference in New Issue
Block a user
Delete Branch "fix/462-pass-through-watermark"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
fix #462 水印配置格式不兼容
根因: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 个单测覆盖两种格式及边界情况🚀 预览环境已部署
CI全绿,自动审批通过。
CI全绿,自动审批通过。
代码审查结果 - PR #739
⚠️ 问题(1个需要修改)
export字段)的水印配置时,直接使用float()和int()强制转换watermark_opacity和watermark_font_size。如果配置中这些字段的值是非数字字符串(如"high"、"large")或None,将抛出ValueError或TypeError,导致 Worker 进程崩溃。相比之下,嵌套格式使用from_dict通常具备更好的容错性。WatermarkConfig的代码块外层添加try...except ValueError, TypeError,捕获异常时记录警告日志并返回None,或者封装一个安全的类型转换辅助函数。💡 建议(2个可选)
apps/worker/video_processing/unified_render_service.py 第1行(推测):确认模块级导入是否存在。
_can_use_pass_through方法内部有from video_processing.watermark_engine import WatermarkConfig的局部导入,新代码将其移除并改为调用静态方法。如果文件顶部没有导入WatermarkConfig,新代码将无法运行。from video_processing.watermark_engine import WatermarkConfig。apps/worker/video_processing/unified_render_service.py 第865行:布尔值校验不够严谨。
enabled = export_cfg.get("watermark_enabled", False)直接获取值。如果配置源(如某些 YAML 或非严格 JSON 解析器)传入了字符串"false",Python 会将其视为真值(非空字符串),导致本应关闭的水印被意外开启。enabled = export_cfg.get("watermark_enabled") is True或bool(export_cfg.get("watermark_enabled"))(取决于业务对弱类型的需求),确保逻辑严格符合预期。✅ 格式检查通过 | ❌ 逻辑审查需修改 | ⚠️ 建议关注性能
🤖 由 AI 代码审查机器人自动生成 | 2026-07-22 20:16:23 | 模型:
🗑️ 预览环境已清理
PR #739 已关闭或合并,对应的预览环境已被清理。