fix(P0): 一键生成接入BGM/ASR字幕/标题 - 修复模板plan config读取 #565
Reference in New Issue
Block a user
Delete Branch "fix/p1-oneclick-bgm-subtitles"
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?
背景
一键生成功能的BGM、ASR自动字幕、标题效果层始终不生效。
根因
_load_template_plan_config读取不存在的template.config字段,实际上 TemplateModel 的 BGM/字幕/标题配置分别存在三个独立字段:
title_configsubtitle_configbgm_config修复
从三个独立字段组装成
plan.config格式{title, subtitle, bgm},注入到 virtual_plan.config 中,UnifiedRenderService 即可正常消费。
验证
根因:_load_template_plan_config读取不存在的template.config字段, 实际上TemplateModel的bgm/subtitle/title配置存在三个独立字段。 修复:从title_config/subtitle_config/bgm_config三个字段 组装成plan.config格式{title, subtitle, bgm}注入到virtual_plan。🚀 预览环境已部署
CI全绿,自动审批通过。
CI全绿,自动审批通过。
代码审查结果 - PR #565
⚠️ 问题(2个需要修改)
apps/worker/worker_app/tasks/generation.py 第952-960行:移除了对JSON字符串的反序列化处理,存在数据类型兼容性风险。
if isinstance(config, str): json.loads(config)的逻辑,用于兼容数据库中存储为JSON字符串的配置。新代码直接使用template.title_config等字段,假设它们已经是字典类型。如果数据库迁移未完全执行,或者该字段在某些情况下仍以JSON字符串形式返回,下游代码在尝试访问字典内容(如config['title']['enabled'])时将抛出TypeError或KeyError,导致生成任务失败。apps/worker/worker_app/tasks/generation.py 第976行:异常捕获范围过大。
except Exception as e捕获所有异常。虽然函数设计为“不阻塞主流程”,但捕获所有异常(包括SystemExit、KeyboardInterrupt等)是不良实践。此外,如果此处未打印详细的异常堆栈(diff中未显示e的处理),将导致数据库连接错误、模型定义错误等严重问题被静默吞掉,极大增加排查难度。💡 建议(1个可选)
tests/unit/test_oneclick_gen_p0_fixes.py中增加一个测试用例,模拟template.title_config等字段为 JSON 字符串(例如'{"text": "abc"}')的场景,以验证代码是否具备向后兼容性或是否能正确处理异常。✅ 格式检查通过 | ❌ 逻辑审查需修改 | ✅ 性能无明显问题
🤖 由 AI 代码审查机器人自动生成 | 2026-07-19 09:43:30 | 模型:
🗑️ 预览环境已清理
PR #565 已关闭或合并,对应的预览环境已被清理。