refactor(dedup): 查重模块优化 — XOR 汉明距离 + 简化判定逻辑 #148
Reference in New Issue
Block a user
Delete Branch "feature/duplication-optimization"
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?
变更内容
算法优化
bin(h1^h2).count("1")),正确处理不等长哈希round(x, 4),保留完整浮点精度文档补充
测试结果
- hamming_distance: 替换 zfill+字符比较为 XOR bit 计数 (bin(h1^h2).count('1')) - check_duplicate: 移除直方图融合和 best_match,返回第一个匹配 - compute_phash: 补充详细中文算法注释(DCT 步骤说明) - 修复 similarity 精度:移除 round(x, 4) 保留完整浮点精度 所有 74 个测试通过(8 个 cv2 依赖跳过)。🔍 代码审查报告 — PR #148
结论:✅ 通过,建议合并
查重模块优化质量良好。XOR 汉明距离实现正确,check_duplicate 简化逻辑清晰(MD5 精确匹配 + pHash 相似度两级判定),域模型新增
can_retry()/reset_for_retry()方法封装重试逻辑,仓储删除顺序修正为先删片段再删主记录。74 个测试全部通过。P2(建议修复,不阻塞合并)
1.
_average_histogram_similarity静态方法已定义但未使用dedup.pyVideoDeduplicator 类_average_histogram_similarity辅助方法(余弦相似度计算),但check_duplicate中并未调用,属于死代码# TODO: 待集成注释说明用途;否则移除避免混淆2.
check_duplicate从 best_match 改为 first-match 策略,可能影响查重质量dedup.pycheck_duplicate 方法P3(微小建议,无需修改)
1. 集成测试
test_retry_completed_record_still_resets可能与新 use case 逻辑不一致RetryDuplicationUseCase.execute()对非 failed 状态会抛出 ValueError2. 列表分页
offset/limit参数已添加到路由,但集成测试中未见分页测试用例list_duplication_records新增了 offset 和 limit 参数test_list_with_pagination)亮点
bin(h1 ^ h2).count("1")天然支持不等长哈希can_retry()+reset_for_retry()将重试逻辑内聚到领域层