任务去重说明
❌ 当前状态:不会自动去重
系统目前不会自动排除重复任务。
为什么会有重复任务?
- 多次运行示例脚本:
generate_sample_tasks.py每次运行都会基于同一个示例报告创建新任务 - 任务ID唯一: 每次创建都生成新的
task_xxxID - 无去重机制:
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: 手动拒绝重复任务(推荐)
优点: 保持灵活性,可以人工判断 操作: 按照快速指南的建议
批准核心任务(去重后的4个):
- ✅ task_235defa6 - 响应速度
- ✅ task_1d814bc9 - 专家匹配
- ✅ task_76326138 - 响应稳定性
- ✅ task_142274de - Bug修复
拒绝重复任务(6个):
- ❌ task_68a42e6a, task_95e16182
- ❌ task_f43c3f61, task_222bb417
- ❌ task_b8a31743, task_88562acb
可选保留(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: 添加自动去重
- ✅ 防止重复任务产生
- ✅ 提升系统智能化
- ✅ 减少人工干预
💡 立即操作建议
现在就处理重复任务
- 刷新浏览器:
Ctrl + Shift + R - 访问页面: http://localhost:8000/admin/tasks
- 按推荐方案操作:
- 勾选 4 个核心任务 → 点击"批准选中"
- 勾选 6 个重复任务 → 点击"拒绝选中"
这样做的好处
- ✅ 快速清理重复任务
- ✅ 保留最有价值的任务
- ✅ 记录决策过程
- ✅ 可以随时查看已拒绝的任务
🔮 是否需要添加自动去重功能?
如果您希望我添加自动去重功能,我可以:
- 修改
TaskManager.create_tasks_from_report() - 添加去重检查逻辑
- 保留或合并重复任务
- 重启服务使更改生效
请告诉我是否需要添加这个功能?
📋 总结
| 问题 | 答案 |
|---|---|
| 会自动去重吗? | ❌ 不会 |
| 为什么有重复? | 多次运行脚本,每次生成新ID |
| 如何处理重复? | 方案1: 手动拒绝 方案2: 添加去重功能 方案3: 清空重来 |
| 推荐方案? | 现在: 手动拒绝 未来: 添加去重 |
现在可以开始手动处理这些任务了! 🚀