定时任务

定时任务调度智体 API 文档

概述

定时任务调度智体是一个基于自然语言指令的任务调度系统,支持通过AI解析自然语言指令创建定时任务,并自动执行任务。系统提供完整的任务管理功能,包括任务创建、列表查询、取消、状态查询以及定时检查器管理。

目录

  1. 基础信息
  2. API端点列表
  3. 任务管理API
  4. 定时检查器管理API
  5. 数据结构说明
  6. 自然语言指令格式
  7. 错误码说明

基础信息

基础URL

/rtagent/task_scheduler/

请求方式

所有API均支持 GETPOST 方法

通用请求头

Content-Type: application/x-www-form-urlencoded

通用响应格式

{
    "ret": true/false,
    "msg": "操作结果描述",
    "data": {} // 具体数据,根据接口不同而变化
}

通用参数

参数名 类型 必填 说明
user_id string 用户ID,用于标识用户身份
s_id string 会话ID,用于关联会话上下文

API端点列表

任务管理API

  1. 调度定时任务
  2. 列出所有任务
  3. 取消任务
  4. 获取任务状态

定时检查器管理API

  1. 配置定时检查器
  2. 启动定时检查器
  3. 停止定时检查器
  4. 获取检查器状态

任务管理API

调度定时任务

端点: /rtagent/task_scheduler/schedule

功能: 通过自然语言指令创建定时任务

请求参数:

参数名 类型 必填 说明 示例
user_id string 用户ID "user123"
s_id string 会话ID "session_abc"
instruction string 自然语言任务指令 "每天上午10点提醒我开会"

自然语言指令示例:

  • "每天上午10点提醒我开会"
  • "每周一上午9点发送周报"
  • "每月1号凌晨2点备份数据库"
  • "每小时的第30分钟检查系统状态"
  • "明天下午3点提醒我打电话给客户"
  • "从现在开始,每隔2小时检查一次邮件,到明天晚上8点结束"
  • "每周一、三、五上午10点发送日报,执行10次后停止"

响应成功示例:

{
    "ret": true,
    "msg": "定时任务调度成功",
    "data": {
        "task_id": "plantask_1691234567890_abc123def",
        "schedule_type": "daily",
        "cron_expression": "0 0 10 * * *",
        "next_run": "根据调度规则计算"
    }
}

响应失败示例:

{
    "ret": false,
    "msg": "任务指令不能为空"
}

列出所有任务

端点: /rtagent/task_scheduler/list

功能: 获取用户的所有定时任务列表

请求参数:

参数名 类型 必填 说明 示例
user_id string 用户ID(为空则返回所有用户的任务) "user123"

响应成功示例:

{
    "ret": true,
    "data": {
        "tasks": [
            {
                "task_id": "plantask_1691234567890_abc123def",
                "task_description": "每天上午10点提醒我开会",
                "schedule_type": "daily",
                "cron_expression": "0 0 10 * * *",
                "created_at": "2023-08-05T10:00:00.000Z",
                "active": true
            },
            {
                "task_id": "plantask_1691234567891_xyz789ghi",
                "task_description": "每周一上午9点发送周报",
                "schedule_type": "weekly",
                "cron_expression": "0 0 9 * * 1",
                "created_at": "2023-08-04T15:30:00.000Z",
                "active": false
            }
        ],
        "total": 2
    }
}

取消任务

端点: /rtagent/task_scheduler/cancel

功能: 取消指定的定时任务

请求参数:

参数名 类型 必填 说明 示例
user_id string 用户ID "user123"
task_id string 任务ID "plantask_1691234567890_abc123def"

响应成功示例:

{
    "ret": true,
    "msg": "任务已取消"
}

响应失败示例:

{
    "ret": false,
    "msg": "任务不存在"
}

获取任务状态

端点: /rtagent/task_scheduler/status

功能: 获取指定任务的详细状态信息

请求参数:

参数名 类型 必填 说明 示例
task_id string 任务ID "plantask_1691234567890_abc123def"

响应成功示例:

{
    "ret": true,
    "data": {
        "task_id": "plantask_1691234567890_abc123def",
        "task_description": "每天上午10点提醒我开会",
        "schedule_type": "daily",
        "cron_expression": "0 0 10 * * *",
        "active": true,
        "created_at": "2023-08-05T10:00:00.000Z",
        "last_executed": "2023-08-06T10:00:00.000Z",
        "next_run": "根据调度规则计算"
    }
}

定时检查器管理API

配置定时检查器

端点: /rtagent/task_scheduler/checker/configure

功能: 配置定时任务检查器的参数

请求参数:

参数名 类型 必填 说明 默认值 取值范围
interval integer 检查间隔(毫秒) 60000 30000-300000
enabled boolean 是否启用检查器 true true/false
immediate_start boolean 是否立即开始检查 true true/false

响应成功示例:

{
    "ret": true,
    "msg": "定时检查配置已更新",
    "data": {
        "enabled": true,
        "interval": 60000,
        "minInterval": 30000,
        "maxInterval": 300000,
        "immediateStart": true,
        "lastCheckTime": "2023-08-06T10:00:00.000Z",
        "checkCount": 15
    }
}

启动定时检查器

端点: /rtagent/task_scheduler/checker/start

功能: 启动定时任务检查器

请求参数: 无

响应成功示例:

{
    "ret": true,
    "msg": "定时检查器已启动",
    "data": {
        "enabled": true,
        "interval": 60000,
        "intervalFormatted": "60秒",
        "minInterval": 30000,
        "maxInterval": 300000,
        "immediateStart": true,
        "lastCheckTime": "2023-08-06T10:00:00.000Z",
        "checkCount": 15,
        "isRunning": true,
        "nextCheckIn": 60000
    }
}

停止定时检查器

端点: /rtagent/task_scheduler/checker/stop

功能: 停止定时任务检查器

请求参数: 无

响应成功示例:

{
    "ret": true,
    "msg": "定时检查器已停止",
    "data": {
        "enabled": true,
        "interval": 60000,
        "intervalFormatted": "60秒",
        "minInterval": 30000,
        "maxInterval": 300000,
        "immediateStart": true,
        "lastCheckTime": "2023-08-06T10:00:00.000Z",
        "checkCount": 15,
        "isRunning": false,
        "nextCheckIn": null
    }
}

获取检查器状态

端点: /rtagent/task_scheduler/checker/status

功能: 获取定时检查器的当前状态

请求参数: 无

响应成功示例:

{
    "ret": true,
    "data": {
        "enabled": true,
        "interval": 60000,
        "intervalFormatted": "60秒",
        "minInterval": 30000,
        "maxInterval": 300000,
        "immediateStart": true,
        "lastCheckTime": "2023-08-06T10:00:00.000Z",
        "checkCount": 15,
        "isRunning": true,
        "nextCheckIn": 45000
    }
}

数据结构说明

任务数据结构

{
    "task_id": "plantask_1691234567890_abc123def",
    "user_id": "user123",
    "s_id": "session_abc",
    "task_description": "任务描述",
    "schedule_type": "daily",
    "schedule_value": "10:30",
    "cron_expression": "0 30 10 * * *",
    "end_time": 1691234567890,
    "max_executions": 10,
    "execution_count": 3,
    "created_at": "2023-08-05T10:00:00.000Z",
    "active": true,
    "status": "scheduled",
    "last_executed": "2023-08-06T10:30:00.000Z",
    "last_result": {},
    "failure_count": 0,
    "ai_analysis": {
        "reason": "cron表达式匹配当前时间",
        "should_complete_after_execution": false,
        "analyzed_at": "2023-08-06T10:29:55.000Z",
        "analysis_summary": "基于cron表达式的自动匹配"
    }
}

字段说明:

字段名 类型 说明
task_id string 任务唯一标识符
user_id string 创建任务的用户ID
s_id string 会话ID
task_description string 任务描述(不含定时信息)
schedule_type string 调度类型:hourly/daily/weekly/monthly/cron/once
schedule_value string 调度值(如:"10:30")
cron_expression string cron表达式(如:"0 30 10 * * *")
end_time integer 任务结束时间戳(毫秒)
max_executions integer 最大执行次数
execution_count integer 已执行次数
created_at string 创建时间(ISO格式)
active boolean 是否活跃
status string 任务状态:scheduled/executed/completed/cancelled/failed/expired
last_executed string 上次执行时间
last_result object 上次执行结果
failure_count integer 失败次数
ai_analysis object AI分析结果
job object 调度任务对象(内部使用)

定时检查器配置

{
    "enabled": true,
    "interval": 60000,
    "minInterval": 30000,
    "maxInterval": 300000,
    "immediateStart": true,
    "lastCheckTime": "2023-08-06T10:00:00.000Z",
    "checkCount": 15,
    "isRunning": true,
    "nextCheckIn": 45000
}

字段说明:

字段名 类型 说明
enabled boolean 是否启用定时检查
interval integer 检查间隔(毫秒)
minInterval integer 最小检查间隔(毫秒)
maxInterval integer 最大检查间隔(毫秒)
immediateStart boolean 是否立即开始检查
lastCheckTime string 上次检查时间
checkCount integer 检查次数统计
isRunning boolean 检查器是否正在运行
nextCheckIn integer 距离下次检查的毫秒数

自然语言指令格式

支持的调度类型

  1. 一次性任务

    • "明天下午3点提醒我开会"
    • "2023年12月25日早上8点发送圣诞祝福"
    • "1小时后提醒我休息"
  2. 每日任务

    • "每天上午9点打卡"
    • "每天晚上10点备份数据"
    • "每日凌晨2点清理缓存"
  3. 每周任务

    • "每周一上午10点开周会"
    • "每周五下午5点发送周报"
    • "每周三、周六晚上8点健身提醒"
  4. 每月任务

    • "每月1号凌晨0点生成月报"
    • "每月15号上午9点发工资提醒"
    • "每月最后一天下午6点结算"
  5. 每小时任务

    • "每小时的第30分钟检查系统"
    • "每小时的0分0秒记录日志"
    • "每小时执行一次数据同步"

时间限定词

系统支持以下时间限定词:

  1. 结束时间限定

    • "到12月31日结束"
    • "截止到今天晚上8点"
    • "执行到明天早上"
  2. 执行次数限定

    • "只执行3次"
    • "最多执行10次"
    • "执行5次后停止"
  3. 组合限定

    • "每天上午9点提醒,执行7天后停止"
    • "每小时检查一次,到今晚12点结束"
    • "每周一提醒,共提醒4次"

指令解析示例

自然语言指令 解析结果
"每天上午10点提醒我开会" schedule_type: daily, schedule_value: 10:00
"每周一上午9点发送周报,执行4周" schedule_type: weekly, max_executions: 4
"每小时的第15分钟检查邮件,到今晚8点结束" schedule_type: hourly, end_time: 今晚8点
"明天下午3点打电话给客户" schedule_type: once, max_executions: 1
"每月1号凌晨2点备份,执行12次" schedule_type: monthly, max_executions: 12

错误码说明

通用错误码

错误码 说明 可能原因
400 请求参数错误 缺少必要参数或参数格式错误
401 权限不足 用户无权操作该任务
404 资源不存在 任务ID不存在
500 服务器内部错误 系统内部异常

特定错误信息

  1. 任务调度相关

    • "任务指令不能为空":instruction参数为空
    • "无法解析定时任务指令":AI无法解析自然语言指令
    • "保存任务计划失败":文件系统写入失败
    • "任务不存在":指定的task_id不存在
    • "无权取消此任务":用户ID与任务创建者不匹配
  2. 定时检查器相关

    • "配置定时检查器失败":配置参数验证失败
    • "启动定时检查器失败":检查器启动过程中出错
    • "停止定时检查器失败":检查器停止过程中出错
  3. 系统状态相关

    • "API应用未初始化":系统未正确初始化
    • "API端点不存在":请求的API路径不存在

使用注意事项

  1. 任务限制

    • 所有任务默认有30天的最大执行期限(防止无限循环)
    • 一次性任务必须设置结束时间或最大执行次数
    • 任务失败超过3次会自动停用
  2. 性能考虑

    • 定时检查器默认每分钟检查一次
    • 可配置检查间隔(30秒-5分钟)
    • 建议根据任务数量调整检查频率
  3. 存储说明

    • 任务数据存储在 task_scheduler_agent/plan/ 目录
    • 已完成/取消的任务移动到 task_scheduler_agent/timeout/ 目录
    • 所有数据以JSON格式存储
  4. 安全性

    • 用户只能操作自己创建的任务
    • 所有API调用需要user_id参数
    • 建议在生产环境中添加额外的认证机制