任务去重说明

❌ 当前状态:不会自动去重

系统目前不会自动排除重复任务

为什么会有重复任务?

  1. 多次运行示例脚本: generate_sample_tasks.py 每次运行都会基于同一个示例报告创建新任务
  2. 任务ID唯一: 每次创建都生成新的 task_xxx ID
  3. 无去重机制: TaskManager.create_tasks_from_report() 不检查是否已存在相同内容的任务

当前的任务创建逻辑

def create_tasks_from_report(self, report: Dict) -> List[ModificationTask]:
    """从报告创建任务"""
    tasks = self.extractor.extract_tasks(report)
    
    for task in tasks:
        self._tasks[task.id] = task  # 直接添加,不检查重复
        self._save_task(task)
        logger.info(f"📋 创建任务: {task.id} - {task.title}")
    
    return tasks

🎯 您目前有 11 个任务的原因

根据之前的分析,这 11 个任务来自:

  • 3次运行示例脚本,每次基于同一个报告生成 4 个任务
  • 部分任务可能来自其他报告

任务分布

  • task_235defa6, task_68a42e6a, task_95e16182 - 响应速度优化(3个重复)
  • task_1d814bc9, task_f43c3f61, task_222bb417 - 专家匹配优化(3个重复)
  • task_76326138, task_b8a31743, task_88562acb - 响应稳定性(3个重复)
  • task_142274de, task_e7305436 - Bug修复(2个重复)

✅ 解决方案

方案1: 手动拒绝重复任务(推荐)

优点: 保持灵活性,可以人工判断 操作: 按照快速指南的建议

  1. 批准核心任务(去重后的4个):

    • ✅ task_235defa6 - 响应速度
    • ✅ task_1d814bc9 - 专家匹配
    • ✅ task_76326138 - 响应稳定性
    • ✅ task_142274de - Bug修复
  2. 拒绝重复任务(6个):

    • ❌ task_68a42e6a, task_95e16182
    • ❌ task_f43c3f61, task_222bb417
    • ❌ task_b8a31743, task_88562acb
  3. 可选保留(1个):

    • ⏸️ task_e7305436 (备用Bug修复任务)

方案2: 添加自动去重功能

我可以为系统添加去重功能,基于以下维度:

去重策略:

def _is_duplicate_task(self, new_task: ModificationTask) -> bool:
    """检查是否为重复任务"""
    for existing_task in self._tasks.values():
        if (
            existing_task.source_issue.get('type') == new_task.source_issue.get('type')
            and existing_task.modification_type == new_task.modification_type
            and existing_task.status == TaskStatus.PENDING  # 只检查待审批的
            and set(existing_task.target_files) == set(new_task.target_files)
        ):
            return True
    return False

添加去重后的效果:

  • ✅ 相同类型和目标的任务只保留一个
  • ✅ 避免重复工作
  • ✅ 减少审批负担

方案3: 清空所有任务重新开始

如果想从头开始:

# 删除所有任务文件
rm -rf data/tasks/*.json

# 或在 PowerShell 中
Remove-Item data/tasks/*.json

# 然后重启服务
docker-compose -f docker-compose.prod.yml restart mbe-api

🤔 推荐使用哪种方案?

当前情况(已有11个任务)

推荐方案1: 手动拒绝重复任务

  • ✅ 最快速
  • ✅ 不需要修改代码
  • ✅ 保持审批记录

未来使用

推荐方案2: 添加自动去重

  • ✅ 防止重复任务产生
  • ✅ 提升系统智能化
  • ✅ 减少人工干预

💡 立即操作建议

现在就处理重复任务

  1. 刷新浏览器: Ctrl + Shift + R
  2. 访问页面: http://localhost:8000/admin/tasks
  3. 按推荐方案操作:
    • 勾选 4 个核心任务 → 点击"批准选中"
    • 勾选 6 个重复任务 → 点击"拒绝选中"

这样做的好处

  • ✅ 快速清理重复任务
  • ✅ 保留最有价值的任务
  • ✅ 记录决策过程
  • ✅ 可以随时查看已拒绝的任务

🔮 是否需要添加自动去重功能?

如果您希望我添加自动去重功能,我可以:

  1. 修改 TaskManager.create_tasks_from_report()
  2. 添加去重检查逻辑
  3. 保留或合并重复任务
  4. 重启服务使更改生效

请告诉我是否需要添加这个功能?


📋 总结

问题 答案
会自动去重吗? ❌ 不会
为什么有重复? 多次运行脚本,每次生成新ID
如何处理重复? 方案1: 手动拒绝
方案2: 添加去重功能
方案3: 清空重来
推荐方案? 现在: 手动拒绝
未来: 添加去重

现在可以开始手动处理这些任务了! 🚀