✅ 去重功能已添加!

🎉 功能已实现

我已经为系统添加了完整的去重功能,包括:

1. 自动去重(创建时)

当从报告生成新任务时,系统会自动检查是否存在重复任务并跳过。

2. 手动去重(已有任务)

可以一键清理现有的重复待审批任务。

3. Web UI 按钮

在审批页面添加了 "🗑️ 去重任务" 按钮。


🔍 去重逻辑

系统判断两个任务是否重复的依据:

  1. 相同的问题类型 (issue.type)

    • 例如:slow_response, expert_switch
  2. 相同的修改类型 (modification_type)

    • 例如:optimize, fix_bug
  3. 相同的目标文件 (target_files)

    • 例如:src/core/engine.py, src/llm/base.py
  4. 只检查待审批状态

    • 已批准/已完成的任务不算重复

🚀 如何使用

方法1: Web UI 一键去重(推荐)

  1. 访问审批页面:

    http://localhost:8000/admin/tasks
    
  2. 刷新页面: Ctrl + Shift + R

  3. 点击去重按钮: 点击页面顶部的 "🗑️ 去重任务" 按钮

  4. 确认操作: 弹出确认对话框,点击"确定"

  5. 查看结果:

    • 系统会显示去重结果
    • 例如:"去重完成:保留 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 个重复

⚡ 技术细节

代码改动

  1. TaskManager.create_tasks_from_report()

    • 添加去重检查逻辑
    • 自动跳过重复任务
  2. TaskManager._is_duplicate_task()

    • 新增方法,检测重复任务
    • 基于问题类型、修改类型、目标文件
  3. TaskManager.deduplicate_pending_tasks()

    • 新增方法,清理已有重复任务
    • 保留最早创建的任务
  4. API: POST /api/feedback/auto/tasks/deduplicate

    • 新增端点,触发去重操作
  5. Web UI: "🗑️ 去重任务" 按钮

    • 添加按钮和 JavaScript 函数
    • 用户友好的确认对话框

✅ 服务状态

  • ✅ 代码已更新
  • ✅ API 已添加
  • ✅ Web UI 已更新
  • ✅ 服务已重启
  • ✅ 功能已生效

🎉 开始使用

现在刷新浏览器页面,点击"🗑️ 去重任务"按钮试试吧!

访问: http://localhost:8000/admin/tasks

一键清理所有重复任务! 🚀