feat: 成片 duplicate_rate 百分比 + 素材高频使用自动排除 #1573
Reference in New Issue
Block a user
Delete Branch "feat/duplicate-rate-and-high-use-exclusion"
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?
任务一:生成视频补 duplicate_rate 百分比
任务二:素材级自动排除高频使用素材
测试
🚀 预览环境已部署
32d4c53fb9toa40de0338eCI全绿,自动审批通过。
CI全绿,自动审批通过。
【阻塞级判定】
📊 审查概览
🔴 阻塞级问题(必须修复)
无
💡 改进建议(不阻塞合并)
[apps/worker/video_processing/dedup.py: 335] 访问受保护方法
video_repo._to_domain(m)调用了 Repository 类的下划线开头方法(受保护方法)。虽然在 Python 中可以这样做,但跨包/跨层级调用受保护方法违反了封装原则。建议检查SQLAlchemyGeneratedVideoRepository是否有公开的查询方法可以直接返回 Domain 对象,或者将该转换逻辑内聚到 Repository 内部。[apps/worker/video_processing/dedup.py: 314] 导入位置
from packages.adapters.sqlalchemy_impl.models import GeneratedVideoModel被放置在函数compute_duplicate_rate内部。除非是为了解决特定的循环依赖问题,否则建议遵循 Python 惯例,将所有 import 语句置于文件顶部。✅ 良好实践
routes/assets.py和dedup_helpers.py中,对新增的非核心逻辑(高频排除、重复率计算)均使用了try-except块进行包裹,确保辅助功能的异常不会阻塞主流程。dedup.py的compute_duplicate_rate方法中,对查询结果使用了limit(100),有效防止了随着项目视频数量增加导致的内存溢出或计算耗时过长问题。asset_segment_tracker.py中,对created_at缺失的情况使用了or ""处理,避免了排序时可能出现的 NoneType 错误。test_duplicate_rate.py和test_high_use_exclusion.py,覆盖了边界条件(如无数据、MD5精确匹配、自身排除等),测试编写较为规范。🤖 由 AI 代码审查机器人自动生成 | 2026-08-31 08:41:51 | 模型:
🗑️ 预览环境已清理
PR #1573 已关闭或合并,对应的预览环境已被清理。