feat(from-assets): 按模板segment创建片段,忽略前端required_clips_count #1524
Reference in New Issue
Block a user
Delete Branch "feat/from-assets-by-template-segments"
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?
改动说明
from-assets 端点不再根据前端传的 required_clips_count 创建片段,而是:
测试
🚀 预览环境已部署
CI全绿,自动审批通过。
CI全绿,自动审批通过。
【阻塞级判定】
📊 审查概览
🔴 阻塞级问题(必须修复)
clips_data字典仅包含order,asset_id,start_time,duration四个字段。旧代码中明确使用了body.clip_type or "main"来设置片段类型。新代码完全忽略了该字段,导致replace_all_clips_transactional创建的片段可能丢失类型信息(如 "overlay", "audio" 等),或者如果服务层没有默认值,可能导致数据错误。clips_data的字典中补充clip_type字段,例如"clip_type": body.clip_type or "main"。💡 改进建议(不阻塞合并)
[apps/api/app/api/routes/templates_editor/clips.py: 398, 418] 异常捕获范围过大
_get_template_segments函数中使用了except Exception捕获所有异常。虽然意图是作为回退机制(Fallback),但这可能会掩盖数据库连接错误、超时等严重系统问题,导致错误难以排查。建议捕获更具体的异常(如ServiceUnavailableError或特定的 Repository 异常),或者在日志中记录更详细的堆栈信息以便排查。[apps/api/app/api/routes/templates_editor/clips.py: 640-650] 确认服务层对缺失字段的默认值处理
create_clip时传入了多个字段(如text_content,transition_effect,playback_speed等),新代码的clips_data仅传入了 4 个字段。请确保replace_all_clips_transactional方法内部对这些缺失字段有完善的默认值处理逻辑,否则可能导致数据库字段为 NULL 或默认值不符合预期。✅ 良好实践
_safe_segment_duration统一处理时长数据的边界情况(None、负数、NaN),增强了健壮性。replace_all_clips_transactional调用前进行全量的内存数据校验和计算,避免部分成功导致的数据不一致状态。🤖 由 AI 代码审查机器人自动生成 | 2026-08-27 16:59:45 | 模型:
🗑️ 预览环境已清理
PR #1524 已关闭或合并,对应的预览环境已被清理。