fix(smart-match): limit 算法取 segments.length 下限,保证每片段至少 1 个素材 #1600
Reference in New Issue
Block a user
Delete Branch "fix/smart-match-limit-algorithm"
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?
问题
computeLimitFromSegments使用Math.ceil(totalSeconds / 15)估算素材数量。14 秒模板(4 个片段)算出
Math.ceil(14/15) = 1,前端只向后端要 1 个素材,导致后端 4 个片段无法分配。修复
L30 改为
Math.max(segments.length, Math.ceil(totalSeconds / SECONDS_PER_ASSET)),保证每个片段至少能分到 1 个素材。改动
apps/web/src/pages/generate/hooks/step2-materials/useSmartMatch.ts:一行代码 + 注释更新【阻塞级判定】
📊 审查概览
🔴 阻塞级问题(必须修复)
无
💡 改进建议(不阻塞合并)
无
✅ 良好实践
Math.max(segments.length, ...)很好地解决了极端情况(如片段数量多于基于时长估算的素材数),确保了每个片段至少能分配到一个素材,避免了素材分配不足导致的功能异常。Math.max(1, Math.min(limit, 200))的钳制逻辑,有效防止了超出后端限制(200)或非法值(0/负数)的请求。🤖 由 AI 代码审查机器人自动生成 | 2026-09-01 04:16:17 | 模型:
🚀 预览环境已部署
🗑️ 预览环境已清理
PR #1600 已关闭或合并,对应的预览环境已被清理。