## 2 任务服务接口文档
SimOne Web Task Server
### 2.1 服务状态接口
#### 2.1.1 获取服务健康状态
**Path:** /api-task/health
**Method:** GET
**Headers:**[Headers](#headers)
##### 请求参数
无
##### 返回码
| Code | 说明 |
| ---- | ----------- |
| 200 | Ok |
##### 返回数据
| 字段名 | 说明 | 是否必填 | 类型 |
| -------- | ----------- | -------- | ------ |
| version | 版本 | Yes | string |
| current | 当前状态 | Yes | number |
| maximum | 最大状态 | No | number |
| message | 当前状态信息 | No | string |
| level | 服务当前等级 | No | "info" \| "error" \| "warning" |
| code | 服务错误代码 | No | number |
### 2.2 任务接口
#### 2.2.1 获取运行的任务或回放的任务id
**Path:** /api-task/sessions/isPlay
**Method:** GET
**Headers:**[Headers](#headers)
##### 请求参数
无
##### 返回码
| Code | 说明 |
| ---- | ----------- |
| 200 | Ok |
##### 返回数据
| 字段名 | 说明 | 是否必填 | 类型 |
| -------- | ----------- | -------- | ------ |
| testingSessionIds | 运行的任务id | Yes | string[] |
| replaySessionIds | 回放的任务id | Yes | string[] |
#### 2.2.2 获取回放任务状态
**Path:** /api-task/sessions/replayTasks
**Method:** GET
**Headers:**[Headers](#headers)
##### 请求参数
无
##### 返回码
| Code | 说明 |
| ---- | ----------- |
| 200 | Ok |
##### 返回数据
| 字段名 | 说明 | 是否必填 | 类型 |
| -------- | ----------- | -------- | ------ |
| replayTasks | 回放任务状态 | Yes | Record |
#### 2.2.3 获取任务队列
**Path:** /api-task/sessions/queue
**Method:** GET
**Headers:**[Headers](#headers)
##### 请求参数
无
##### 返回码
| Code | 说明 |
| ---- | ----------- |
| 200 | Ok |
##### 返回数据
| 字段名 | 说明 | 是否必填 | 类型 |
| -------- | ----------- | -------- | ------ |
| queue | 排队信息 | Yes | Record |
#### 2.2.4 恢复暂停任务集
**Path:** /api-task/sessions/:id/resume
**Method:** POST
**Headers:**[Headers](#headers)
##### 请求参数
| 字段名 | 传参格式 | 说明 | 是否必填 | 类型 |
| -------- | ---------- | ----------- | -------- | ------ |
| id | path | 任务id | Yes | string |
##### 返回码
| Code | 说明 |
| ---- | ----------- |
| 202 | Ok |
##### 返回数据
无
#### 2.2.5 暂停任务
**Path:** /api-task/sessions/:id/pause
**Method:** POST
**Headers:**[Headers](#headers)
##### 请求参数
| 字段名 | 传参格式 | 说明 | 是否必填 | 类型 |
| -------- | ---------- | ----------- | -------- | ------ |
| id | path | 任务id | Yes | string |
##### 返回码
| Code | 说明 |
| ---- | ----------- |
| 202 | Ok |
##### 返回数据
无
#### 2.2.6 获取任务报告
**Path:** /api-task/sessions/:id/report
**Method:** GET
**Headers:**[Headers](#headers)
##### 请求参数
| 字段名 | 传参格式 | 说明 | 是否必填 | 类型 |
| -------- | ---------- | ----------- | -------- | ------ |
| id | path | 任务集id | Yes | string |
##### 返回码
| Code | 说明 |
| ---- | ----------- |
| 200 | Ok |
##### 返回数据
| 字段名 | 说明 | 是否必填 | 类型 |
| -------- | ----------- | -------- | ------ |
| success | 是否成功 | Yes | boolean |
##### 备注
返回 success true 之后使用/report/:id_zh-Hans.pdf地址进行下载,例sessionId为123456,下载地址为:原网页网址/report/123456_zh-Hans.pdf
#### 2.2.7 任务下一帧
**Path:** /api-task/sessions/step
**Method:** POST
**Headers:**[Headers](#headers)
##### 请求参数
| 字段名 | 传参格式 | 说明 | 是否必填 | 类型 |
| -------- | ---------- | ----------- | -------- | ------ |
| id | body | 任务id | Yes | string |
##### 返回码
| Code | 说明 |
| ---- | ----------- |
| 202 | Ok |
##### 返回数据
无
#### 2.2.8 修改仿真速度
**Path:** /api-task/sessions/speed
**Method:** POST
**Headers:**[Headers](#headers)
##### 请求参数
| 字段名 | 传参格式 | 说明 | 是否必填 | 类型 |
| -------- | ---------- | ----------- | -------- | ------ |
| id | body | 任务id | Yes | string |
| speed | body | 任务速度 | Yes | number |
##### 返回码
| Code | 说明 |
| ---- | ----------- |
| 202 | Ok |
##### 返回数据
无
#### 2.2.9 任务跳转
**Path:** /api-task/sessions/skipTo
**Method:** POST
**Headers:**[Headers](#headers)
##### 请求参数
| 字段名 | 传参格式 | 说明 | 是否必填 | 类型 |
| -------- | ---------- | ----------- | -------- | ------ |
| id | body | 任务id | Yes | string |
| seconds | body | 任务时间 | Yes | number |
##### 返回码
| Code | 说明 |
| ---- | ----------- |
| 200 | Ok |
##### 返回数据
无
#### 2.2.10 更新主车控制
**Path:** /api-task/sessions/updateVehicleControl
**Method:** POST
**Headers:**[Headers](#headers)
##### 请求参数
| 字段名 | 传参格式 | 说明 | 是否必填 | 类型 |
| -------- | ---------- | ----------- | -------- | ------ |
| id | body | 任务id | Yes | string |
| egoId | body | 主车id | Yes | string |
| vehicleControl | body | 主车控制 | Yes | [VehicleControl](#vehicleControl) |
##### 返回码
| Code | 说明 |
| ---- | ----------- |
| 200 | Ok |
##### 返回数据
无
#### 2.2.11 获取回放任务数据
**Path:** /api-task/sessions/:id/replayChartData
**Method:** GET
**Headers:**[Headers](#headers)
##### 请求参数
| 字段名 | 传参格式 | 说明 | 是否必填 | 类型 |
| -------- | ---------- | ----------- | -------- | ------ |
| id | path | 任务id | Yes | string |
##### 返回码
| Code | 说明 |
| ---- | ----------- |
| 200 | Ok |
##### 返回数据
| 字段名 | 说明 | 是否必填 | 类型 |
| -------- | ----------- | -------- | ------ |
| timestamp | 时间戳 | Yes | string |
| taskId | 任务id | Yes | string |
| caseId | 案例id | Yes | string |
| taskUuid | 任务uuid | No | string |
| timeMs | 时间 | No | number |
| durationMs | 持续时间 | No | number |
| fps | 帧率 | No | number |
| speed | 速度 | No | number |
| mainvehicles | 主车 | No | [MainVehicleUIData](#mainVehicleUIData) |
#### 2.2.12 获取回放任务状态
**Path:** /api-task/sessions/:id/taskState
**Method:** GET
**Headers:**[Headers](#headers)
##### 请求参数
| 字段名 | 传参格式 | 说明 | 是否必填 | 类型 |
| -------- | ---------- | ----------- | -------- | ------ |
| id | path | 任务id | Yes | string |
##### 返回码
| Code | 说明 |
| ---- | ----------- |
| 200 | Ok |
##### 返回数据
| 字段名 | 说明 | 是否必填 | 类型 |
| -------- | ----------- | -------- | ------ |
| taskId | 任务id | Yes | string |
| isPlay | 是否是回放 | Yes | number |
#### 2.2.13 停止任务集
**Path:** /api-task/sessions/stop
**Method:** POST
**Headers:**[Headers](#headers)
##### 请求参数
| 字段名 | 传参格式 | 说明 | 是否必填 | 类型 |
| -------- | ---------- | ----------- | -------- | ------ |
| ids | body | 任务集id | Yes | string[] |
##### 返回码
| Code | 说明 |
| ---- | ----------- |
| 202 | Ok |
##### 返回数据
无
#### 2.2.14 删除任务集
**Path:** /api-task/sessions/delete
**Method:** POST
**Headers:**[Headers](#headers)
##### 请求参数
| 字段名 | 传参格式 | 说明 | 是否必填 | 类型 |
| -------- | ---------- | ----------- | -------- | ------ |
| ids | body | 任务集id | Yes | string[] |
##### 返回码
| Code | 说明 |
| ---- | ----------- |
| 202 | Ok |
##### 返回数据
无
### 2.3 任务运行时接口
#### 2.3.1 获取任务列表
**Path:** /api-task/tasks/
**Method:** GET
**Headers:**[Headers](#headers)
##### 请求参数
| 字段名 | 传参格式 | 说明 | 是否必填 | 类型 |
| -------- | ---------- | ----------- | -------- | ------ |
| finished | query | 是否已完成 | Yes | boolean |
| page | query | 页数 | Yes | string |
| pageSize | query | 每页数量 | Yes | string |
| own | query | 是否是自己的任务 | Yes | boolean |
| expandedIds | query | 展开的任务id | Yes | string[] |
| filters | query | 筛选 | No | string[] |
| searchFilter | query | 搜索 | No | string |
| startTime | query | 开始时间 | No | number |
| endTime | query | 结束时间 | No | number |
##### 返回码
| Code | 说明 |
| ---- | ----------- |
| 200 | Ok |
##### 返回数据
| 字段名 | 说明 | 是否必填 | 类型 |
| -------- | ----------- | -------- | ------ |
| list | 任务列表 | Yes | [TaskListItem](#tasklistitem) |
| page | 页数 | Yes | number |
| total | 总页数 | Yes | number |
| pageSize | 每页数量 | Yes | number |
#### 2.3.2 获取任务详情
**Path:** /api-task/tasks/task
**Method:** GET
**Headers:**[Headers](#headers)
##### 请求参数
| 字段名 | 传参格式 | 说明 | 是否必填 | 类型 |
| -------- | ---------- | ----------- | -------- | ------ |
| taskIds | query | 展开的任务id | Yes | string[] |
##### 返回码
| Code | 说明 |
| ---- | ----------- |
| 200 | Ok |
##### 返回数据
| 字段名 | 说明 | 是否必填 | 类型 |
| -------- | ----------- | -------- | ------ |
| tasks | 任务列表 | Yes | [TaskListItem](#taskListItem)[] |
#### 2.3.3 获取任务数量
**Path:** /api-task/tasks/count
**Method:** GET
**Headers:**[Headers](#headers)
##### 请求参数
| 字段名 | 传参格式 | 说明 | 是否必填 | 类型 |
| -------- | ---------- | ----------- | -------- | ------ |
| own | query | 是否是自己的任务 | Yes | boolean |
##### 返回码
| Code | 说明 |
| ---- | ----------- |
| 200 | Ok |
##### 返回数据
| 字段名 | 说明 | 是否必填 | 类型 |
| -------- | ----------- | -------- | ------ |
| count | 任务数量 | Yes | number |
#### 2.3.4 获取任务队列
**Path:** /api-task/tasks/queue
**Method:** GET
**Headers:**[Headers](#headers)
##### 请求参数
| 字段名 | 传参格式 | 说明 | 是否必填 | 类型 |
| -------- | ---------- | ----------- | -------- | ------ |
| own | query | 是否是自己的任务 | Yes | boolean |
##### 返回码
| Code | 说明 |
| ---- | ----------- |
| 200 | Ok |
##### 返回数据
| 字段名 | 说明 | 是否必填 | 类型 |
| -------- | ----------- | -------- | ------ |
| total | 任务总数 | Yes | number |
| running | 运行任务数量 | Yes | number |
| pending | 即将运行任务数量 | Yes | number |
| waiting | 等待任务数量 | Yes | number |
| finished | 结束任务数量 | Yes | number |
| estimatedTaskDuration | 预计任务时间 | Yes | number |
#### 2.3.5 清除全部任务(需要管理员权限)
**Path:** /api-task/tasks/clean
**Method:** POST
**Headers:**[Headers](#headers)
##### 请求参数
| 字段名 | 传参格式 | 说明 | 是否必填 | 类型 |
| -------- | ---------- | ----------- | -------- | ------ |
| ids | body | 任务id集合 | Yes | string[] |
##### 返回码
| Code | 说明 |
| ---- | ----------- |
| 202 | Ok |
##### 返回数据
无
#### 2.3.6 获取指定id的任务
**Path:** /api-task/tasks/:id/task
**Method:** GET
**Headers:**[Headers](#headers)
##### 请求参数
| 字段名 | 传参格式 | 说明 | 是否必填 | 类型 |
| -------- | ---------- | ----------- | -------- | ------ |
| id | path | 任务id | Yes | string |
##### 返回码
| Code | 说明 |
| ---- | ----------- |
| 202 | Ok |
##### 返回数据
无
#### 2.3.7 创建任务
**Path:** /api-task/tasks/
**Method:** POST
**Headers:**[Headers](#headers)
##### 请求参数
| 字段名 | 传参格式 | 说明 | 是否必填 | 类型 |
| -------- | ---------- | ----------- | -------- | ------ |
| caseIds | body | 案例id | Yes | string[] |
| taskName | body | 任务名称 | Yes | string |
| overrideVehicleId | body | 覆盖主车id | No | string |
| overrideJudgementId | body | 覆盖判定id | No | string |
| evaluationPresetId | body | 评价id | No | string |
| withEvaluation | body | 是否评价 | No | boolean |
| algorithmName | body | 算法名称 | No | string |
| algorithmVersion | body | 算法版本 | No | string |
##### 返回码
| Code | 说明 |
| ---- | ----------- |
| 202 | Ok |
##### 返回数据
| 字段名 | 说明 | 是否必填 | 类型 |
| -------- | ----------- | -------- | ------ |
| sessionId | sessionId | Yes | string |
| taskIds | 任务id | Yes | string[] |
#### 2.3.8 回放指定任务
**Path:** /api-task/tasks/:id/replay
**Method:** POST
**Headers:**[Headers](#headers)
##### 请求参数
| 字段名 | 传参格式 | 说明 | 是否必填 | 类型 |
| -------- | ---------- | ----------- | -------- | ------ |
| id | path | 任务id | Yes | string |
| RTC | query | 是否RTC任务 | No | boolean |
##### 返回码
| Code | 说明 |
| ---- | ----------- |
| 202 | Ok |
##### 返回数据
| 字段名 | 说明 | 是否必填 | 类型 |
| -------- | ----------- | -------- | ------ |
| taskId | 任务id | Yes | string |
#### 2.3.9 查看任务运行可视化
**Path:** /api-task/tasks/:id/observe
**Method:** POST
**Headers:**[Headers](#headers)
##### 请求参数
| 字段名 | 传参格式 | 说明 | 是否必填 | 类型 |
| -------- | ---------- | ----------- | -------- | ------ |
| id | path | 任务id | Yes | string |
##### 返回码
| Code | 说明 |
| ---- | ----------- |
| 202 | Ok |
##### 返回数据
无
#### 2.3.10 dump任务
**Path:** /api-task/tasks/:id/dump
**Method:** POST
**Headers:**[Headers](#headers)
##### 请求参数
| 字段名 | 传参格式 | 说明 | 是否必填 | 类型 |
| -------- | ---------- | ----------- | -------- | ------ |
| id | path | 任务id | Yes | string |
| vizConfig | body | 每页数量 | Yes | [VizConfig](#vizConfig) |
| outputConfig | body | 每页数量 | Yes | [OutputConfig](#outputConfig) |
##### 返回码
| Code | 说明 |
| ---- | ----------- |
| 202 | Ok |
##### 返回数据
无
#### 2.3.11 获取任务数据
**Path:** /api-task/tasks/:id/data
**Method:** GET
**Headers:**[Headers](#headers)
##### 请求参数
| 字段名 | 传参格式 | 说明 | 是否必填 | 类型 |
| -------- | ---------- | ----------- | -------- | ------ |
| id | path | 任务id | Yes | string |
##### 返回码
| Code | 说明 |
| ---- | ----------- |
| 200 | Ok |
##### 返回数据
| 字段名 | 说明 | 是否必填 | 类型 |
| -------- | ----------- | -------- | ------ |
| success | 是否成功 | Yes | boolean |
#### 2.3.12 创建回放案例
**Path:** /api-task/tasks/convert2case
**Method:** GET
**Headers:**[Headers](#headers)
##### 请求参数
| 字段名 | 传参格式 | 说明 | 是否必填 | 类型 |
| -------- | ---------- | ----------- | -------- | ------ |
| name | path | 案例名 | Yes | string |
| categoryId | body | 保存目录id | Yes | string |
| opponent | body | 保存类型,回放案例或标准案例 | No | "record" \| "openscenario" |
| ego2npc | body | 选择保存为标准案例时,主车是否转换为对手车 | No | boolean |
| tags | body | 标签 | No | string[] |
| notes | body | 案例备注 | No | string |
##### 返回码
| Code | 说明 |
| ---- | ----------- |
| 200 | Ok |
| 404 | Not Found |
##### 返回数据
| 字段名 | 说明 | 是否必填 | 类型 |
| -------- | ----------- | -------- | ------ |
| id | id | Yes | string |
#### 2.3.12 停止任务
**Path:** /api-task/tasks/stop
**Method:** POST
**Headers:**[Headers](#headers)
##### 请求参数
| 字段名 | 传参格式 | 说明 | 是否必填 | 类型 |
| -------- | ---------- | ----------- | -------- | ------ |
| all | query | 是否停止全部任务 | No | boolean |
| ids | body | 任务id | Yes | string[] |
| isReplay | body | 是否是回放 | No | boolean |
##### 返回码
| Code | 说明 |
| ---- | ----------- |
| 202 | Ok |
##### 返回数据
无
#### 2.3.13 停止回放任务
**Path:** /api-task/tasks/stopReplay
**Method:** POST
**Headers:**[Headers](#headers)
##### 请求参数
| 字段名 | 传参格式 | 说明 | 是否必填 | 类型 |
| -------- | ---------- | ----------- | -------- | ------ |
| ids | body | 任务id | Yes | string[] |
##### 返回码
| Code | 说明 |
| ---- | ----------- |
| 202 | Ok |
##### 返回数据
无
#### 2.3.14 删除任务
**Path:** /api-task/tasks/delete
**Method:** POST
**Headers:**[Headers](#headers)
##### 请求参数
| 字段名 | 传参格式 | 说明 | 是否必填 | 类型 |
| -------- | ---------- | ----------- | -------- | ------ |
| taskIds | body | 任务id | Yes | string[] |
##### 返回码
| Code | 说明 |
| ---- | ----------- |
| 202 | Ok |
##### 返回数据
无
#### 2.3.15 获取任务是否结束
**Path:** /api-task/tasks/:id/hasFinished
**Method:** GET
**Headers:**[Headers](#headers)
##### 请求参数
| 字段名 | 传参格式 | 说明 | 是否必填 | 类型 |
| -------- | ---------- | ----------- | -------- | ------ |
| id | path | 任务id | Yes | string |
##### 返回码
| Code | 说明 |
| ---- | ----------- |
| 200 | Ok |
##### 返回数据
| 字段名 | 说明 | 是否必填 | 类型 |
| -------- | ----------- | -------- | ------ |
| hasFinished | 任务是否结束 | Yes | boolean |
### 通用请求头
#### Headers
| 参数名称 | 类型 | 说明 | 是否必填 |
| ------------- | ------ | ------------------- | -------- |
| Authorization | string | 用于权限验证的token | Yes |
### 相关类型
#### 2.2 任务接口相关类型
##### ReplayTaskInfo
回放任务信息
| 字段名 | 说明 | 是否必填 | 类型 |
| -------- | ----------- | -------- | ------ |
| status | 任务状态 | Yes | string |
| mode | 任务模式 | Yes | "replay" \| "dump" |
| RTC | 是否RTC任务 | No | boolean |
##### VehicleControl
主车控制输入信息
| 字段名 | 说明 | 是否必填 | 类型 |
| -------- | -------- | ------ | ------ |
| vehicleId | 主车id | No | number |
| throttlepercentage | 油门百分比 | No | number |
| steeringpercentage | 转向百分比 | No | number |
| brakepercentage | 刹车百分比 | No | number |
| handBrake | 手刹状态 | No | boolean |
| isManualGear | 是否手动挡 | No | boolean |
| manualGear | 手动挡位 | No | number |
| gearImmediate | 立即换挡 | No | boolean |
| activeInput | 活跃输入 | No | number |
| acceleration | 加速度 | No | number |
| speed | 速度 | No | number |
| signalLights | 信号灯 | No | number |
##### MainVehicleUIData
热区主车信息
| 字段名 | 说明 | 是否必填 | 类型 |
| -------- | ----------- | -------- | ------ |
| id | id | No | number \| null |
| speed | 速度 | No | number \| null |
| throttle | 油门 | No | number \| null |
| steering | 转向 | No | number \| null |
| brake | 刹车 | No | number \| null |
| rpm | 转速 | No | number \| null |
| gear | 档位 | No | number \| null |
| velocityx | 速度x方向值 | No | number \| null |
| velocityy | 速度y方向值 | No | number \| null |
| velocityz | 速度z方向值 | No | number \| null |
| accelerationx | 加速度x方向值 | No | number \| null |
| accelerationy | 加速度y方向值 | No | number \| null |
| accelerationz | 加速度z方向值 | No | number \| null |
| posx | 位置x方向值 | No | number \| null |
| posy | 位置y方向值 | No | number \| null |
| posy | 位置z方向值 | No | number \| null |
| rotationRate | 旋转比率 | No | number \| null |
#### 2.3 任务时运行接口相关类型
##### VizConfig
可视化配置
| 字段名 | 说明 | 是否必填 | 类型 |
| -------- | ----------- | -------- | ------ |
| duration | 开始时间,结束时间 | Yes | [number, number] |
| sensors | 传感器 | Yes | { [key: string]: boolean } |
##### OutputConfig
dump输出配置
| 字段名 | 说明 | 是否必填 | 类型 |
| -------- | -------- | ------ | ------ |
| dumpHz | dump频率 | Yes | number |
| h264 | H.264编码 | Yes | boolean |
| bitrate | 码率 | Yes | number |
| bbox3D | 3D边界框 | Yes | boolean |
##### TaskListItem
任务项简要信息
| 字段名 | 说明 | 是否必填 | 类型 |
| -------- | ----------- | -------- | ------ |
| id | 任务id | Yes | string |
| parentId | sessionId | Yes | string \| null |
| loading | 是否加载中 | No | boolean |
| userId | 用户名 | No | string |
| userName | 用户姓名 | No | string |