chore: 删除素材选取 random 模式,保持代码干净 #1542
Reference in New Issue
Block a user
Delete Branch "chore/remove-random-asset-mode"
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?
改动说明
素材选取模式后端支持 all/random/smart 三种,但前端只用了 all 和 smart(smart 走独立接口 POST /assets/smart-match)。random 模式从未被使用,且纯随机无质量下限,删除保持代码干净。
改动文件
apps/api/app/api/routes/generation_tasks.py (-11行)
apps/api/app/schemas/generation_task.py (+2/-2)
tests/unit/test_asset_select_mode.py (-20行)
tests/unit/domain/test_generation_task.py (+2/-2)
tests/unit/test_wave77_generation_task.py (+2/-2)
未改动
测试
服务器本地 130 tests passed(test_asset_select_mode + test_smart_match + domain + wave77)
- generation_tasks.py: 删除 import random、if mode==random 分支、docstring 中 random 描述 - generation_task.py schema: description 移除 random=随机选取,count 描述仅保留 smart - 选取入口条件 in ("random","smart") 改为 in ("smart",) - test_asset_select_mode.py: 删除 TestSelectAssetsRandomMode 类(3个用例) - domain/test_generation_task.py + test_wave77_generation_task.py: random→smart 不改:_calc_random_start_time(片段级随机)、smart_match.py、前端🚀 预览环境已部署
代码审查结果 - PR #1542
⚠️ 问题(1个需要修改)
all模式,导致功能失效。in ("random", "smart")修改为in ("smart",)。由于 Schema 中asset_select_mode的默认值为"all",且描述中明确包含all=全部ready视频,这意味着用户期望在默认或不指定 ID 的情况下能自动选取所有素材。当前的修改导致当mode为"all"时,该elif分支不执行,resolved_asset_ids保持为空,从而导致任务创建失败或素材列表为空。all模式创建任务时,无法自动选取项目素材,属于功能性破坏。if project_id and not resolved_asset_ids:(假设函数内部处理了所有模式)或显式包含all,即in ("all", "smart")。💡 建议(1个可选)
_select_assets_from_library函数对all模式的处理是否显式。random分支,仅保留了smart分支。虽然测试文件中保留了TestSelectAssetsAllMode,暗示函数可能通过末尾的默认返回语句处理all模式,但为了代码清晰性和健壮性,建议在函数内部显式增加if mode == "all":的处理逻辑,而不是依赖隐式的控制流。✅ 格式检查通过 | ❌ 逻辑审查需修改 | ✅ 性能良好
🤖 由 AI 代码审查机器人自动生成 | 2026-08-29 10:08:59 | 模型:
🗑️ 预览环境已清理
PR #1542 已关闭或合并,对应的预览环境已被清理。