### 1. 获取天风任务列表

#### 接口描述
获取系统中所有任务的列表信息，支持分页查询、条件筛选和排序。

#### 请求方式
- **HTTP方法**: GET
- **接口路径**: `/api/vwed-task/list`

#### 请求参数

| 参数名 | 类型 | 必填 | 描述 |
|-------|------|-----|------|
| pageNum | Integer | 否 | 页码，默认为1 |
| pageSize | Integer | 否 | 每页记录数，默认为10 |
| keyword | String | 否 | 关键字搜索（任务名称） |
| status | Integer | 否 | 任务状态筛选 |
| sortField | String | 否 | 排序字段 |
| sortOrder | String | 否 | 排序方式：asc（升序）、desc（降序） |

#### 响应参数

```json
{
  "code": 200,
  "message": "操作成功",
  "data": {
    "total": 3,
    "list": [
      {
        "id": "193f8412-fa0d-4b6d-9648-70bceacd6629",
        "label": "test1",
        "version": 19,
        "templateName": "userTemplate",
        "periodicTask": false,
        "ifEnable": 0,
        "status": 0,
        "createDate": "2023-05-10 14:30:22",
        "remark": "备注信息"
      },
      {
        "id": "734749d1-0fdf-4a06-9fb7-8f991953d5e5",
        "label": "test",
        "version": 3,
        "templateName": "userTemplate",
        "periodicTask": true,
        "ifEnable": 1,
        "status": 0,
        "createDate": "2023-05-15 09:45:18",
        "remark": "定时任务"
      },
      {
        "id": "7c6aac36-652b-4314-9433-f5788e9e7adb",
        "label": "test1-备份",
        "version": 1,
        "templateName": "userTemplate",
        "periodicTask": false,
        "ifEnable": 0,
        "status": 0,
        "createDate": "2023-05-16 11:22:36",
        "remark": "备份1"
      }
    ],
    "pageNum": 1,
    "pageSize": 10,
    "totalPages": 1
  }
}
```

### 2. 创建任务

#### 接口描述
创建一个新任务，设置任务的基本信息。创建任务时只需提供任务名称和任务类型两个必填项。系统会自动将新建任务与当前已激活的模板进行关联，系统中有且只有一个处于激活状态的模板。

#### 请求方式
- **HTTP方法**: POST
- **接口路径**: `/api/vwed-task/create`

#### 请求参数

| 参数名 | 类型 | 必填 | 描述 |
|-------|------|-----|------|
| label | String | 是 | 任务名称 |
| taskType | Integer | 是 | 任务类型：1-普通任务，2-定时任务 |
| mapId | String | 是 | 相关地图ID|
| remark | Integer | 否 | 任务备注 |
| period | Integer | 否 | 周期时间（毫秒） |
| delay | Integer | 否 | 延迟时间（毫秒），默认3000 |
| releaseSites | Boolean | 否 | 是否释放站点，默认true |
| token | String | 否 | 用户token值，用于认证 |
| tenantId | String | 否 | 租户ID，用于多租户隔离，默认为"default" |

#### 请求示例

```json
{
  "label": "新任务",
  "taskType": 1,
  "remark": "测试用任务",
  "token": "user_authentication_token",
  "tenantId": "tenant1"
}
```

#### 响应参数

```json
{
  "code": 200,
  "message": "操作成功",
  "data": {
    "id": "193f8412-fa0d-4b6d-9648-70bceacd6629",
    "label": "新任务",
    "version": 1,
    "templateName": "userTemplate",
    "periodicTask": false,
    "status": 0,
    "createDate": "2023-05-10 14:30:22"
  }
}

### 3. 删除任务

#### 接口描述
删除指定的一个或多个任务。

#### 请求方式
- **HTTP方法**: DELETE
- **接口路径**: `/api/vwed-task/delete`

#### 请求参数

| 参数名 | 类型 | 必填 | 描述 |
|-------|------|-----|------|
| ids | Array | 是 | 要删除的任务ID数组 |

#### 请求示例

```json
{
  "ids": ["193f8412-fa0d-4b6d-9648-70bceacd6629", "734749d1-0fdf-4a06-9fb7-8f991953d5e5"]
}
```

#### 响应参数

```json
{
  "code": 200,
  "message": "删除成功",
  "data": null
}
```


### 5. 批量导出任务

#### 接口描述
导出多个指定任务的配置，返回加密的专有格式文件(.vtex)。导出时会自动去除ID、创建时间、更新时间、版本和删除标记等系统相关字段，仅保留任务的功能性配置数据。

#### 请求方式
- **HTTP方法**: POST
- **接口路径**: `/api/vwed-task/export-batch`

#### 请求参数

| 参数名 | 类型 | 必填 | 描述 |
|-------|------|-----|------|
| ids | Array | 是 | 要导出的任务ID数组 |

#### 请求示例

```json
{
  "ids": ["193f8412-fa0d-4b6d-9648-70bceacd6629", "734749d1-0fdf-4a06-9fb7-8f991953d5e5"]
}
```

#### 响应参数
文件下载响应，Content-Type为application/octet-stream，文件为加密的二进制格式(.vtex)，包含以下自动去除系统相关字段的任务定义信息：
- 已移除：id, created_at, updated_at, version, deleted 等系统字段
- 保留：label(任务名称), detail(任务详情), period(周期时间), delay(延迟时间)等功能性字段

#### 响应头信息
```
Content-Disposition: attachment; filename=tasks_export_2.vtex
Content-Type: application/octet-stream
X-Content-Type-Options: nosniff
```

### 7. 导入任务

#### 接口描述
通过导入任务配置文件(.vtex)创建新任务。支持批量导入多个任务，系统会自动为每个任务生成唯一的名称以避免冲突。

#### 请求方式
- **HTTP方法**: POST
- **接口路径**: `/api/vwed-task/import`
- **Content-Type**: multipart/form-data

#### 请求参数

| 参数名 | 类型 | 必填 | 描述 |
|-------|------|-----|------|
| file | File | 是 | 任务配置文件，加密的专有格式(.vtex) |
| token | String | 否 | 用户token值，用于认证 |
| tenantId | String | 否 | 租户ID，用于多租户隔离，默认为"default" |

#### 响应参数

```json
{
  "code": 200,
  "message": "成功导入 2 个任务",
  "data": {
    "success_count": 2,
    "failed_count": 0,
    "failed_tasks": [],
    "imported_tasks": [
      {
        "id": "193f8412-fa0d-4b6d-9648-70bceacd6631",
        "name": "任务1-备份-16487239871234",
        "original_name": "任务1"
      },
      {
        "id": "734749d1-0fdf-4a06-9fb7-8f991953d5e6",
        "name": "任务2-备份-16487239875678",
        "original_name": "任务2"
      }
    ]
  }
}
```

#### 部分导入成功响应示例

```json
{
  "code": 200,
  "message": "部分导入成功: 成功 1 个, 失败 1 个",
  "data": {
    "success_count": 1,
    "failed_count": 1,
    "failed_tasks": [
      {
        "index": 1,
        "name": "任务2",
        "reason": "任务数据不完整"
      }
    ],
    "imported_tasks": [
      {
        "id": "193f8412-fa0d-4b6d-9648-70bceacd6631",
        "name": "任务1-备份-16487239871234",
        "original_name": "任务1"
      }
    ]
  }
}
```

#### 导入失败响应示例

```json
{
  "code": 400,
  "message": "解析任务数据失败: 文件格式无效或已损坏",
  "data": null
}
```

### 8. 获取单个任务详情

#### 接口描述
获取指定任务的详细信息，包括任务的基本信息、配置参数和详细定义。

#### 请求方式
- **HTTP方法**: GET
- **接口路径**: `/api/vwed-task/{task_id}`

#### 请求参数

| 参数名 | 类型 | 必填 | 描述 |
|-------|------|-----|------|
| task_id | String | 是 | 任务ID，路径参数 |

#### 响应参数

```json
{
  "code": 200,
  "message": "操作成功",
  "data": {
    "id": "193f8412-fa0d-4b6d-9648-70bceacd6629",
    "label": "test1",
    "version": 19,
    "detail": {
      "inputParams": [
        {
          "name": "from",
          "type": "String",
          "label": "起点",
          "required": false,
          "defaultValue": "",
          "remark": "起始位置"
        },
        {
          "name": "to",
          "type": "String",
          "label": "终点",
          "required": true,
          "defaultValue": "",
          "remark": "目标位置"
        }
      ],
      "outputParams": [],
      "rootBlock": {
        "id": -1,
        "name": "-1",
        "blockType": "RootBp",
        "inputParams": {},
        "children": {}
      }
    },
    "templateName": "userTemplate",
    "period": 3000,
    "periodicTask": false,
    "status": 0,
    "ifEnable": 0,
    "delay": 3000,
    "releaseSites": true,
    "createDate": "2023-05-10 14:30:22",
    "remark": "测试任务"
  }
}
```

#### 错误响应

```json
{
  "code": 404,
  "message": "任务不存在",
  "data": null
}
```

或

```json
{
  "code": 500,
  "message": "获取任务详情失败: 内部服务器错误",
  "data": null
}
```

### 9. 停止任务定义下的所有任务实例

#### 接口描述
停止指定任务定义下的所有正在运行的任务实例，同时如果该任务是定时任务，则会禁用定时任务功能。

#### 请求方式
- **HTTP方法**: POST
- **接口路径**: `/api/vwed-task/stop-all/{task_def_id}`

#### 请求参数

| 参数名 | 类型 | 必填 | 描述 |
|-------|------|-----|------|
| task_def_id | String | 是 | 任务定义ID，路径参数 |

#### 响应参数

```json
{
  "code": 200,
  "message": "已禁用定时任务并停止了 2/2 个运行中的任务实例",
  "data": {
    "taskDefId": "193f8412-fa0d-4b6d-9648-70bceacd6629",
    "isPeriodic": true,
    "totalRunning": 2,
    "stoppedCount": 2,
    "failedCount": 0,
    "failedTasks": []
  }
}
```

#### 部分成功响应示例

```json
{
  "code": 200,
  "message": "已禁用定时任务并停止了 1/2 个运行中的任务实例",
  "data": {
    "taskDefId": "193f8412-fa0d-4b6d-9648-70bceacd6629",
    "isPeriodic": true,
    "totalRunning": 2,
    "stoppedCount": 1,
    "failedCount": 1,
    "failedTasks": [
      {
        "id": "task-instance-001",
        "reason": "任务实例已处于终止状态"
      }
    ]
  }
}
```

#### 错误响应示例

```json
{
  "code": 400,
  "message": "停止任务失败: 任务定义不存在",
  "data": null
}
```

或

```json
{
  "code": 500,
  "message": "停止任务失败: 内部服务器错误",
  "data": null
}
```
