✅ 去重功能已添加!
🎉 功能已实现
我已经为系统添加了完整的去重功能,包括:
1. 自动去重(创建时)
当从报告生成新任务时,系统会自动检查是否存在重复任务并跳过。
2. 手动去重(已有任务)
可以一键清理现有的重复待审批任务。
3. Web UI 按钮
在审批页面添加了 "🗑️ 去重任务" 按钮。
🔍 去重逻辑
系统判断两个任务是否重复的依据:
✅ 相同的问题类型 (
issue.type)- 例如:slow_response, expert_switch
✅ 相同的修改类型 (
modification_type)- 例如:optimize, fix_bug
✅ 相同的目标文件 (
target_files)- 例如:src/core/engine.py, src/llm/base.py
✅ 只检查待审批状态
- 已批准/已完成的任务不算重复
🚀 如何使用
方法1: Web UI 一键去重(推荐)
访问审批页面:
http://localhost:8000/admin/tasks刷新页面:
Ctrl + Shift + R点击去重按钮: 点击页面顶部的 "🗑️ 去重任务" 按钮
确认操作: 弹出确认对话框,点击"确定"
查看结果:
- 系统会显示去重结果
- 例如:"去重完成:保留 4 个任务,移除 6 个重复"
方法2: API 调用
# PowerShell
Invoke-WebRequest -Uri "http://localhost:8000/api/feedback/auto/tasks/deduplicate" -Method POST
# curl (如果安装了)
curl -X POST http://localhost:8000/api/feedback/auto/tasks/deduplicate
响应示例:
{
"success": true,
"message": "去重完成:保留 4 个任务,移除 6 个重复",
"total": 10,
"kept": 4,
"removed": 6,
"duplicates": [
{
"id": "task_68a42e6a",
"title": "[HIGH] slow_response",
"original": "task_235defa6"
},
...
]
}
📊 对您当前的 11 个任务的影响
运行去重后,系统会:
保留(4个)
- ✅ task_235defa6 - [HIGH] slow_response(第一个创建的)
- ✅ task_1d814bc9 - [MEDIUM] expert_switch(第一个创建的)
- ✅ task_76326138 - [MEDIUM] unstable_response(第一个创建的)
- ✅ task_142274de - [CRITICAL] test_failure(第一个创建的)
移除(7个)
- ❌ task_68a42e6a - [HIGH] slow_response(重复)
- ❌ task_95e16182 - [HIGH] slow_response(重复)
- ❌ task_f43c3f61 - [MEDIUM] expert_switch(重复)
- ❌ task_222bb417 - [MEDIUM] expert_switch(重复)
- ❌ task_b8a31743 - [MEDIUM] unstable_response(重复)
- ❌ task_88562acb - [MEDIUM] unstable_response(重复)
- ❌ task_e7305436 - [CRITICAL] test_failure(重复)
重复任务会被自动拒绝,拒绝原因会注明是重复以及保留了哪个任务。
🎯 立即操作
第1步:刷新浏览器
Ctrl + Shift + R
第2步:点击去重按钮
在页面顶部找到 "🗑️ 去重任务" 按钮
第3步:确认操作
点击"确定"
第4步:查看结果
- 页面会显示去重结果通知
- 待审批任务从 11 个变为 4 个
- 重复任务被移到"已拒绝"状态
🔮 未来的自动去重
现在,每次生成新任务时:
自动跳过重复
📋 创建任务: task_abc123 - [HIGH] slow_response
⏭️ 跳过重复任务: [HIGH] slow_response (问题类型: slow_response)
⏭️ 跳过重复任务: [MEDIUM] expert_switch (问题类型: expert_switch)
✅ 去重完成: 创建 1 个任务,跳过 2 个重复
好处
- ✅ 不会再产生重复任务
- ✅ 保持任务列表整洁
- ✅ 减少审批工作量
- ✅ 提高系统效率
📝 日志示例
运行去重后,服务日志会显示:
✅ 保留任务: task_235defa6 - [HIGH] slow_response
🗑️ 拒绝重复: task_68a42e6a (保留了 task_235defa6)
🗑️ 拒绝重复: task_95e16182 (保留了 task_235defa6)
✅ 保留任务: task_1d814bc9 - [MEDIUM] expert_switch
🗑️ 拒绝重复: task_f43c3f61 (保留了 task_1d814bc9)
...
✨ 去重完成: 共 11 个待审批任务,保留 4 个,移除 7 个重复
⚡ 技术细节
代码改动
TaskManager.create_tasks_from_report()
- 添加去重检查逻辑
- 自动跳过重复任务
TaskManager._is_duplicate_task()
- 新增方法,检测重复任务
- 基于问题类型、修改类型、目标文件
TaskManager.deduplicate_pending_tasks()
- 新增方法,清理已有重复任务
- 保留最早创建的任务
API: POST /api/feedback/auto/tasks/deduplicate
- 新增端点,触发去重操作
Web UI: "🗑️ 去重任务" 按钮
- 添加按钮和 JavaScript 函数
- 用户友好的确认对话框
✅ 服务状态
- ✅ 代码已更新
- ✅ API 已添加
- ✅ Web UI 已更新
- ✅ 服务已重启
- ✅ 功能已生效
🎉 开始使用
现在刷新浏览器页面,点击"🗑️ 去重任务"按钮试试吧!
访问: http://localhost:8000/admin/tasks
一键清理所有重复任务! 🚀