feat: 素材批量操作接口(软删除/打标签/改分类/智能视图标记) #290
Reference in New Issue
Block a user
Delete Branch "feat/asset-batch-operations"
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?
素材批量操作
完成内容
4个批量接口,单操作上限200个素材,返回成功/失败明细:
POST /assets/batch-delete— 标记status=deleted(素材库删除场景保留硬删除)POST /assets/batch-tag— 支持add/replace两种模式POST /assets/batch-classify— 批量设置内容分类POST /assets/batch-mark— 批量标记推荐/慎用/高风险关键设计
测试
🔍 代码审计结论:有条件通过(1 P1 + 1 P2)
✅ 做得好的地方
🔴 P1 - 批量操作无数量上限(必须修复)
PR描述说"单操作上限200个素材",但代码中4个批量接口(batch-delete/batch-tag/batch-classify/batch-mark)均未校验 asset_ids 的数量。
恶意用户可以传上万个ID打满DB连接。
修复方式:在每个接口入口处加
if len(request.asset_ids) > 200: raise HTTPException(400, "batch size exceeds limit 200")。🟡 P2 - 软删除后列表是否过滤需确认
batch_delete从硬删除改为软删除(status=deleted),请确认list_assets接口是否已过滤status=deleted的素材。如果没有,已删除素材会出现在列表中。如果
list_assets还没加过滤,建议同步加一个默认过滤:只返回 status != deleted 的素材(回收站场景可单独加参数控制)。0e36799938to1cd54beb1b【代码审计】PR #290 素材批量操作接口 审查结论:通过
总览
复审验证(P1问题:4个批量接口无数量上限)
亮点
代码规范,P1问题修复到位,可直接合并。