# 配置 mm Task 定时任务

## 规则（Rules）

- task.json 位于 `app/{模块名}/plugin/{插件名}/task/{任务名}/task.json`
- `name` 全局唯一，与目录名一致
- `interval` 单位为毫秒
- 需先在 `config.json` 中启用 `sys.task: true`

## 方法（Methods）

### 步骤1：确定任务参数

| 参数 | 说明 | 示例 |
|:----|:-----|:------|
| 执行间隔 | 多久执行一次（毫秒） | `3600000`（1小时） |
| 首次延迟 | 启动后多久执行第一次（毫秒） | `60000`（1分钟后） |
| 指定时间 | 每天的固定执行时间 | `"02:00"`（凌晨2点） |

### 步骤2：编写 task.json

```json
{
    "name": "auto_task",
    "title": "自动任务",
    "description": "每小时执行一次的数据同步任务",
    "state": 1,
    "interval": 3600000,
    "wait": 60000,
    "time": "",
    "main": "./index.js",
    "func_name": "main",
    "scope": "sys",
    "sort": 100,
    "show": 0,
    "end": false
}
```

### 步骤3：配置时间策略

```json
// 按间隔执行（每小时一次）
{ "interval": 3600000, "wait": 0, "time": "" }

// 按指定时间执行（每天凌晨2点）
{ "interval": 0, "wait": 0, "time": "02:00" }

// 启动后延迟5分钟再首次执行，之后每小时一次
{ "interval": 3600000, "wait": 300000, "time": "" }
```

## 技巧（Tips）

- `interval: 3600000` = 1小时，`60000` = 1分钟，`86400000` = 1天
- `wait` 设置首次延迟，避免服务刚启动时资源竞争
- `time` 与 `interval` 同时设置时，以 `time` 为准
- `date_start` 和 `date_end` 可设置任务有效期（格式：`"2024-01-01"`）
