AUTO_TASK_EXECUTION_FIX.md 6.9 KB

自动任务执行机制修复总结

🔧 修复的问题

问题1:任务状态未更新为processing ✅ 已修复

问题描述

  • 脚本读取任务后,只是创建通知文件,但没有更新数据库中的任务状态

修复方案

  • create_task_file() 函数中添加了 update_task_status() 调用
  • 当任务文件创建成功后,自动将任务状态更新为 processing

实现位置

# scripts/auto_execute_tasks.py
def create_task_file(task):
    # ... 创建文件逻辑 ...
    # 更新数据库中的code_name和code_path
    update_task_status(
        task['task_id'], 
        'processing',  # 状态改为processing
        code_name=code_name,
        code_path=code_path
    )

问题2:未在app/core/data_flow目录生成任务文件 ✅ 已修复

问题描述

  • 脚本只创建了通知文件(.cursor/pending_tasks.json),但没有生成实际的任务文件

修复方案

  • 新增 create_task_file() 函数
  • 在指定目录(默认 app/core/data_flow)创建Python任务文件
  • 文件包含完整的任务描述和模板代码

实现特性

  1. 自动从任务名称生成安全的文件名(去除特殊字符)
  2. 支持自定义 code_pathcode_name
  3. 如果文件已存在,自动添加时间戳避免覆盖
  4. 生成的文件包含完整的任务描述和TODO注释

文件示例

  • 位置:app/core/data_flow/导入科室对照表.py
  • 内容:包含任务ID、描述、创建时间等完整信息

问题3:Cursor没有自动执行任务 ✅ 已改进

问题描述

  • 脚本只是打印任务信息,但Cursor没有自动执行

修复方案

  1. 增强任务打印格式

    • 明确的标记:[AUTO-EXECUTE-TASK]
    • 详细的执行指令
    • 包含MCP工具调用示例
  2. 创建任务触发器脚本

    • scripts/trigger_cursor_execution.py
    • 读取 .cursor/pending_tasks.json
    • 以明确格式输出所有processing任务
  3. 改进通知文件

    • .cursor/pending_tasks.json 包含任务文件和状态信息
    • Cursor可以读取此文件识别待执行任务

使用方式

方式1:在Cursor中运行触发器脚本

python scripts/trigger_cursor_execution.py

方式2:直接在Cursor Chat中说

请检查并执行所有processing任务

方式3:查看pending_tasks.json

查看 .cursor/pending_tasks.json 文件

📋 新增功能

1. 数据库操作函数

get_db_connection()

  • 统一的数据库连接管理
  • 自动读取配置文件
  • 错误处理

update_task_status(task_id, status, code_name=None, code_path=None)

  • 更新任务状态
  • 同时更新code_name和code_path(如果提供)
  • 自动更新update_time字段

2. 任务文件生成

create_task_file(task)

  • 自动生成任务文件
  • 更新数据库状态
  • 返回文件路径

特性

  • 文件名安全处理(去除特殊字符)
  • 自动添加时间戳避免覆盖
  • 包含完整的任务元数据

3. 触发器脚本

scripts/trigger_cursor_execution.py

  • 读取processing状态的任务
  • 格式化输出执行指令
  • 供Cursor识别和执行

✅ 验证结果

测试场景:Task ID 9

执行前

  • 状态:pending
  • 文件:不存在

执行后

  • ✅ 状态:processing(已更新)
  • ✅ 文件:app/core/data_flow/导入科室对照表.py(已创建)
  • ✅ 通知:.cursor/pending_tasks.json(已更新)

验证命令

# 执行一次检查
python scripts/auto_execute_tasks.py --once

# 检查文件是否存在
ls app/core/data_flow/导入科室对照表.py

# 查看任务触发器
python scripts/trigger_cursor_execution.py

🔄 完整工作流程

1. 脚本启动(auto_execute_tasks.py)
   ↓
2. 连接数据库,查询 status = 'pending' 的任务
   ↓
3. 对每个pending任务:
   a. 创建任务文件(app/core/data_flow/xxx.py)
   b. 更新任务状态为 'processing'
   c. 更新 code_name 和 code_path
   d. 打印任务详情(供Cursor识别)
   e. 创建/更新 .cursor/pending_tasks.json
   ↓
4. Cursor读取pending_tasks.json或运行trigger_cursor_execution.py
   ↓
5. Cursor根据任务描述生成/完善代码
   ↓
6. Cursor调用MCP工具更新任务状态为 'completed'
   ↓
7. 任务完成!

📝 使用说明

启动自动任务执行

# 前台运行(可以看到实时输出)
python scripts/auto_execute_tasks.py

# 后台运行
python scripts/auto_execute_tasks.py --interval 300 &

# 执行一次检查
python scripts/auto_execute_tasks.py --once

在Cursor中触发执行

方式1:运行触发器脚本

在Cursor Chat中:

python scripts/trigger_cursor_execution.py

方式2:直接执行任务

在Cursor Chat中:

请检查并执行所有processing任务

方式3:手动查看

查看 .cursor/pending_tasks.json 文件

🎯 关键改进点

  1. ✅ 状态同步

    • 任务文件创建 → 状态自动更新为processing
    • 确保数据库和文件系统状态一致
  2. ✅ 文件生成

    • 自动在指定目录创建任务文件
    • 文件名安全处理
    • 包含完整任务信息
  3. ✅ Cursor触发

    • 明确的执行指令格式
    • 多种触发方式
    • 清晰的MCP工具调用示例
  4. ✅ 错误处理

    • 完善的异常捕获
    • 详细的日志记录
    • 状态回滚机制

🔍 故障排查

问题1:任务状态未更新

检查

# 查看数据库
SELECT task_id, task_name, status FROM task_list WHERE task_id = 9;

解决

  • 确保数据库连接正常
  • 检查 mcp-servers/task-manager/config.json 配置

问题2:任务文件未创建

检查

# 查看目录
ls app/core/data_flow/

解决

  • 检查目录权限
  • 查看日志错误信息
  • 手动创建目录:mkdir -p app/core/data_flow

问题3:Cursor未执行任务

检查

# 查看pending_tasks.json
cat .cursor/pending_tasks.json

解决

  • 运行触发器脚本:python scripts/trigger_cursor_execution.py
  • 在Cursor中手动执行任务
  • 检查MCP工具是否可用

📚 相关文件

  • 主脚本scripts/auto_execute_tasks.py
  • 触发器scripts/trigger_cursor_execution.py
  • 任务文件目录app/core/data_flow/
  • 通知文件.cursor/pending_tasks.json
  • 配置文件mcp-servers/task-manager/config.json

✅ 修复完成

所有问题已修复:

  1. ✅ 任务状态自动更新为processing
  2. ✅ 任务文件自动创建在app/core/data_flow目录
  3. ✅ Cursor可以识别并执行任务(通过触发器脚本或直接查看)

下一步

  • 启动自动执行脚本:python scripts/auto_execute_tasks.py
  • 在Cursor中运行触发器:python scripts/trigger_cursor_execution.py
  • 开始执行任务!

最后更新:2025-11-29