feat: 成片库添加「重新查重」按钮,触发存量视频查重率重算 #1685
Reference in New Issue
Block a user
Delete Branch "feature/recompute-dedup-button"
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?
背景
后端已修复查重流程(PR #1884),新增
POST /api/v1/videos/recompute-dedup接口。前端需要调用此接口让存量缺少查重率的视频触发重新计算。改动
recomputeDedup()函数和RecomputeDedupResponse类型交互
POST /videos/recompute-dedup(不带 video_ids,后端扫描当前用户所有视频)已提交 N 个视频的查重任务,后台处理中或所有视频查重率已是最新,无需重算查重任务提交失败,请稍后重试【阻塞级判定】
📊 审查概览
🔴 阻塞级问题(必须修复)
无
💡 改进建议(不阻塞合并)
[apps/web/src/pages/products/hooks/product-actions/useRecomputeDedup.ts:10] 缺少参数支持导致功能不完整
recomputeDedup定义了可选参数videoIds,支持对特定视频进行查重。但在 Hook 的mutationFn中调用时未传递任何参数,导致该功能目前只能全量重新计算,无法针对选中视频进行操作。如果用户期望选中部分视频后点击按钮只处理选中项,当前逻辑会导致行为不符。videoIds参数,或者从上下文中获取当前选中的视频 ID 列表传递给 API。[apps/web/src/pages/products/hooks/product-actions/useRecomputeDedup.ts:13] 无效的数据刷新策略
onSuccess回调中直接调用了queryClient.invalidateQueries({ queryKey: ["products"] })。根据 API 返回的提示信息“后台处理中”,这是一个异步耗时任务。此时立即刷新列表不仅无法获取到最新的查重结果(因为任务还在排队或处理中),还会造成不必要的网络请求和页面闪烁。invalidateQueries调用,或者改为提示用户稍后手动刷新。如果必须自动更新,应考虑实现轮询或由后端推送更新状态。✅ 良好实践
RecomputeDedupResponse完整。onError)中包含了用户友好的提示信息。loading状态(isRecomputing),防止重复提交。✅ 格式检查通过 | ⚠️ 逻辑审查需关注 | ⚠️ 建议关注性能
🤖 由 AI 代码审查机器人自动生成 | 2026-09-04 05:50:16 | 模型:
🚀 预览环境已部署
CI全绿,自动审批通过。
CI全绿,自动审批通过。
🗑️ 预览环境已清理
PR #1685 已关闭或合并,对应的预览环境已被清理。