refactor(assets): 拆分 batchOperations 为4个子Hook(238→8行, -97%) #1168
Reference in New Issue
Block a user
Delete Branch "refactor/batch-operations-split"
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?
拆分内容
将
asset-operations/batchOperations.ts(238行)拆分为4个独立的子Hook + 统一入口:batch/useBatchDelete.ts(40行) - 批量删除batch/useBatchTag.ts(86行) - 批量打标签batch/useBatchClassify.ts(58行) - 批量改分类batch/useBatchMark.ts(53行) - 批量智能标记batch/index.ts- 子模块统一出口batchOperations.ts改为 re-export,保持路径向后兼容主文件变化
影响范围
useAssetOperations.ts已有引用无需修改(路径不变)🚀 预览环境已部署
【阻塞级判定】
📊 审查概览
🔴 阻塞级问题(必须修复)
无
💡 改进建议(不阻塞合并)
[useBatchDelete.ts, useBatchClassify.ts, useBatchMark.ts, useBatchTag.ts] 缺少选中项数量校验
handleBatch函数的最开始增加对selectedIds.size === 0的判断。虽然后端 API 可能支持处理空数组,但前端提前拦截可以避免发起无效的网络请求,防止出现“成功 0 个素材”的非预期提示,提升用户体验。[useBatchDelete.ts, useBatchClassify.ts, useBatchMark.ts, useBatchTag.ts] 建议增加防重复提交逻辑
handleBatch函数中增加if (batchLoading) return;的前置判断。尽管通常 UI 层会通过禁用按钮来防止重复点击,但在 Hook 层增加双重校验可以防止极端情况下的并发请求(如网络延迟时的快速点击),增强代码的健壮性。✅ 良好实践
try-catch-finally结构,确保了loading状态在任何情况下都能正确重置,避免 UI 卡死。useBatchTag中对空标签进行了前置校验,逻辑严谨。Set管理选中 ID,保证了 ID 的唯一性,Array.from转换操作使用正确。🤖 由 AI 代码审查机器人自动生成 | 2026-07-29 16:20:30 | 模型:
CI全绿,自动审批通过。
CI全绿,自动审批通过。
🗑️ 预览环境已清理
PR #1168 已关闭或合并,对应的预览环境已被清理。