## 3 评价服务接口文档
SimOne Web Evaluation Server
### 3.1 测试集接口
#### 3.1.1 获取分页测试集
**Path:** /api-evaluation/suites
**Method:** GET
**Headers:**[Headers](#headers)
##### 请求参数
| 参数名称 | 传参格式 | 说明 | 是否必填 | 类型 |
| ---- | ---------- | ----------- | -------- | ------ |
| page | query | 当前页码 | No | number |
| pageSize | query | 每页数量 | No | number |
##### 返回数据
| Code | 说明 | 类型 |
| ---- | ----------- | ------ |
| 200 | OK | [SuiteResponse](#suiteresponse) |
#### 3.1.2 创建测试集
**Path:** /api-evaluation/suites
**Method:** POST
**Headers:**[Headers](#headers)
##### 请求参数
| 参数名称 | 传参格式 | 说明 | 是否必填 | 类型 |
| ---- | ---------- | ----------- | -------- | ------ |
| suite | body | 包含id,name等测试集信息 | Yes | { **"suite"**: [Suite](#suite) } |
##### 返回数据
| Code | 说明 | 类型 |
| ---- | ----------- | ------ |
| 200 | OK | [Suite](#suite) |
#### 3.1.3 获取单个测试集
**Path:** /api-evaluation/suites/{id}
**Method:** GET
**Headers:**[Headers](#headers)
##### 请求参数
| 参数名称 | 传参格式 | 说明 | 是否必填 | 类型 |
| ---- | ---------- | ----------- | -------- | ------ |
| id | path | 测试集id | Yes | string |
##### 返回数据
| Code | 说明 | 类型 |
| ---- | ----------- | ------ |
| 200 | OK | [Suite](#suite) |
#### 3.1.4 更新单个测试集
**Path:** /api-evaluation/suites/{id}
**Method:** PUT
**Headers:**[Headers](#headers)
##### 请求参数
| 参数名称 | 传参格式 | 说明 | 是否必填 | 类型 |
| ---- | ---------- | ----------- | -------- | ------ |
| id | path | 测试集id | Yes | string |
| data | body | 需要更新的测试集信息 | Yes | { **"data"**: [Suite](#suite)} |
##### 返回数据
| Code | 说明 | 类型 |
| ---- | ----------- | ------ |
| 200 | OK | [Suite](#suite) |
#### 3.1.5 批量删除测试集
**Path:** /api-evaluation/suites/remove
**Method:** POST
**Headers:**[Headers](#headers)
##### 请求参数
| 参数名称 | 传参格式 | 说明 | 是否必填 | 类型 |
| ---- | ---------- | ----------- | -------- | ------ |
| ids | body | 测试集id列表 | Yes | { **"ids"**: [ string ] } |
##### 返回数据
| Code | 说明 |
| ---- | ----------- |
| 204 | No content |
### 3.2 任务接口
#### 3.2.1 获取指定测试集下的任务列表
**Path:** /api-evaluation/tasks
**Method:** GET
**Headers:**[Headers](#headers)
##### 请求参数
| 参数名称 | 传参格式 | 说明 | 是否必填 | 类型 |
| ---- | ---------- | ----------- | -------- | ------ |
| suite | query | 测试集id | Yes | string |
| page | query | 当前页码 | No | number |
| pageSize | query | 每页数量 | No | number |
| sort | query | 排序类型 `"time"`\|`"score"` | No | string |
| order | query | 升降序 `"ASC"` \| `"DESC"` | No | string |
##### 返回数据
| Code | 说明 | 类型 |
| ---- | ----------- | ------ |
| 200 | OK | [TaskResponse](#taskresponse) |
#### 3.2.2 创建任务
**Path:** /api-evaluation/tasks
**Method:** POST
**Headers:**[Headers](#headers)
##### 请求参数
| 参数名称 | 传参格式 | 说明 | 是否必填 | 类型 |
| ---- | ---------- | ----------- | -------- | ------ |
| task | body | 包含id,name等任务信息 | Yes | { **"task"**: [Task](#task) } |
##### 返回数据
| Code | 说明 | 类型 |
| ---- | ----------- | ------ |
| 200 | OK | [Task](#task) |
#### 3.2.3 获取单个任务详情
**Path:** /api-evaluation/tasks/{id}
**Method:** GET
**Headers:**[Headers](#headers)
##### 请求参数
| 参数名称 | 传参格式 | 说明 | 是否必填 | 类型 |
| ---- | ---------- | ----------- | -------- | ------ |
| id | path | 任务id | Yes | string |
##### 返回数据
| Code | 说明 | 类型 |
| ---- | ----------- | ------ |
| 200 | OK | [Task](#task) |
#### 3.2.4 更新单个任务
**Path:** /api-evaluation/tasks/{id}
**Method:** PUT
**Headers:**[Headers](#headers)
##### 请求参数
| 参数名称 | 传参格式 | 说明 | 是否必填 | 类型 |
| ---- | ---------- | ----------- | -------- | ------ |
| id | path | 任务id | Yes | string |
| data | body | 需要更新的任务信息 | Yes | { **"data"**: [Task](#task) } |
##### 返回数据
| Code | 说明 | 类型 |
| ---- | ----------- | ------ |
| 200 | OK | [Task](#task) |
#### 3.2.5 批量删除任务
**Path:** /api-evaluation/tasks/remove
**Method:** POST
**Headers:**[Headers](#headers)
##### 请求参数
| 参数名称 | 传参格式 | 说明 | 是否必填 | 类型 |
| ---- | ---------- | ----------- | -------- | ------ |
| ids | body | 任务id列表 | Yes | { **"ids"**: [ string ] } |
##### 返回数据
| Code | 说明 |
| ---- | ----------- |
| 204 | No content |
### 3.3 评价预设接口
#### 3.3.1 获取所有预设
**Path:** /api-evaluation/presets/all
**Method:** GET
**Headers:**[Headers](#headers)
##### 请求参数
| 参数名称 | 传参格式 | 说明 | 是否必填 | 类型 |
| ---- | ---------- | ----------- | -------- | ------ |
| type | query | 预设类型 | No | string |
##### 返回数据
| Code | 说明 | 类型 |
| ---- | ----------- | ------ |
| 200 | OK | [PresetsResponse](#presetsresponse) |
#### 3.3.2 获取分页预设
**Path:** /api-evaluation/presets
**Method:** GET
**Headers:**[Headers](#headers)
##### 请求参数
| 参数名称 | 传参格式 | 说明 | 是否必填 | 类型 |
| ---- | ---------- | ----------- | -------- | ------ |
| page | query | 当前页码 | No | number |
| pageSize | query | 每页数量 | No | number |
##### 返回数据
| Code | 说明 | 类型 |
| ---- | ----------- | ------ |
| 200 | OK | [PresetsResponse](#presetsresponse) |
#### 3.3.3 创建一个预设
**Path:** /api-evaluation/presets
**Method:** POST
**Headers:**[Headers](#headers)
##### 请求参数
| 参数名称 | 传参格式 | 说明 | 是否必填 | 类型 |
| ---- | ---------- | ----------- | -------- | ------ |
| preset | body | 包含name,data等预设信息 | Yes | [Preset](#preset) |
##### 返回数据
| Code | 说明 | 类型 |
| ---- | ----------- | ------ |
| 200 | OK | [Preset](#preset) |
#### 3.3.4 获取单个预设
**Path:** /api-evaluation/presets/{id}
**Method:** GET
**Headers:**[Headers](#headers)
##### 请求参数
| 参数名称 | 传参格式 | 说明 | 是否必填 | 类型 |
| ---- | ---------- | ----------- | -------- | ------ |
| id | path | 预设id | Yes | number |
##### 返回数据
| Code | 说明 | 类型 |
| ---- | ----------- | ------ |
| 200 | OK | [PresetResponse](#presetresponse) |
#### 3.3.5 更新单个预设
**Path:** /api-evaluation/presets/{id}
**Method:** PUT
**Headers:**[Headers](#headers)
##### 请求参数
| 参数名称 | 传参格式 | 说明 | 是否必填 | 类型 |
| ---- | ---------- | ----------- | -------- | ------ |
| id | path | 预设id | Yes | number |
| data | body | 要更新的预设信息对象 | Yes | [Preset](#preset) |
##### 返回数据
| Code | 说明 | 类型 |
| ---- | ----------- | ------ |
| 200 | OK | [Preset](#preset) |
#### 3.3.6 删除单个预设
**Path:** /api-evaluation/presets/{id}
**Method:** DELETE
**Headers:**[Headers](#headers)
##### 请求参数
| 参数名称 | 传参格式 | 说明 | 是否必填 | 类型 |
| ---- | ---------- | ----------- | -------- | ------ |
| id | path | 预设id | Yes | number |
##### 返回数据
| Code | 说明 |
| ---- | ----------- |
| 204 | No content |
#### 3.3.7 克隆单个预设
**Path:** /api-evaluation/presets/clone
**Method:** POST
**Headers:**[Headers](#headers)
##### 请求参数
| 参数名称 | 传参格式 | 说明 | 是否必填 | 类型 |
| ---- | ---------- | ----------- | -------- | ------ |
| id | body | 预设id | Yes | number |
##### 返回数据
| Code | 说明 | 类型 |
| ---- | ----------- | ------ |
| 200 | OK | [Preset](#preset) |
#### 3.3.8 导入单个预设
**Path:** /api-evaluation/presets/import
**Method:** POST
**Headers:**[Headers](#headers)
##### 请求参数
| 参数名称 | 传参格式 | 说明 | 是否必填 | 类型 |
| ---- | ---------- | ----------- | -------- | ------ |
| preset | body | 要更新的预设信息 | Yes | [Preset](#preset) |
##### 返回数据
| Code | 说明 | 类型 |
| ---- | ----------- | ------ |
| 200 | OK | [PresetImportResponse](#presetimportresponse) |
#### 3.3.9 判断预设名是否重复
**Path:** /api-evaluation/presets/isrepeat
**Method:** POST
**Headers:**[Headers](#headers)
##### 请求参数
| 参数名称 | 传参格式 | 说明 | 是否必填 | 类型 |
| ---- | ---------- | ----------- | -------- | ------ |
| preset | body | 预设信息 | No | { **"name"**: string, **"type?"**: string, **"id?"**: string } |
##### 返回数据
| Code | 说明 | 类型 |
| ---- | ----------- | ------ |
| 200 | OK | { **"isNameRepeat"**: boolean; **"uniqueName"**: string } |
### 3.4 评价报告接口
#### 3.4.1 创建评价报告
**Path:** /api-evaluation/evaluations
**Method:** POST
**Headers:**[Headers](#headers)
##### 请求参数
| 参数名称 | 传参格式 | 说明 | 是否必填 | 类型 |
| ---- | ---------- | ----------- | -------- | ------ |
| evaluation | body | 评价报告信息 | Yes | [Evaluation](#evaluation) |
##### 返回数据
| Code | 说明 | 类型 |
| ---- | ----------- | ------ |
| 200 | OK | [Evaluation](#evaluation) |
#### 3.4.2 获取单个评价报告
**Path:** /api-evaluation/evaluations
**Method:** GET
**Headers:**[Headers](#headers)
##### 请求参数
| 参数名称 | 传参格式 | 说明 | 是否必填 | 类型 |
| ---- | ---------- | ----------- | -------- | ------ |
| taskId | query | 任务id,任务id和测试集id只能传一个 | No | string |
| suiteId | query | 测试集id | No | string |
##### 返回数据
| Code | 说明 | 类型 |
| ---- | ----------- | ------ |
| 200 | OK | [Evaluation](#evaluation) |
#### 3.4.3 批量获取评价报告状态
**Path:** /api-evaluation/evaluations/status
**Method:** GET
**Headers:**[Headers](#headers)
##### 请求参数
| 参数名称 | 传参格式 | 说明 | 是否必填 | 类型 |
| ---- | ---------- | ----------- | -------- | ------ |
| taskIds | query | 任务id字符串,taskIds和suiteId只能传一个 | No | string |
| suiteIds | query | 测试集id字符串 | No | string |
##### 返回数据
| Code | 说明 | 类型 |
| ---- | ----------- | ------ |
| 200 | OK | object |
#### 3.4.4 删除单个评价报告
**Path:** /api-evaluation/evaluations/{id}
**Method:** DELETE
**Headers:**[Headers](#headers)
##### 请求参数
| 参数名称 | 传参格式 | 说明 | 是否必填 | 类型 |
| ---- | ---------- | ----------- | -------- | ------ |
| id | path | 报告id | Yes | string |
##### 返回数据
| Code | 说明 |
| ---- | ----------- |
| 204 | No content |
#### 3.4.5 触发规控评价
**Path:** /api-evaluation/evaluations/evaluate
**Method:** POST
**Headers:**[Headers](#headers)
##### 请求参数
| 参数名称 | 传参格式 | 说明 | 是否必填 | 类型 |
| ---- | ---------- | ----------- | -------- | ------ |
| config | body | 包含测试集id和预设id | Yes | { suiteId: string; presetId: number } |
##### 返回数据
| Code | 说明 | 类型 |
| ---- | ----------- | ------ |
| 200 | OK | object |
#### 3.4.6 查看评价服务是否正常
**Path:** /api/health
**Method:** GET
**Headers:**[Headers](#headers)
##### 返回数据
| Code | 说明 | 类型 |
| ---- | ----------- | ------ |
| 200 | OK | { **"code"**: number, **"data"**: { **"message"**: string } } |
### 通用请求头
#### Headers
| 参数名称 | 类型 | 说明 | 是否必填 |
| ------------- | ------ | ------------------- | -------- |
| Authorization | string | 用于权限验证的token | Yes |
### 相关类型
#### 3.1 测试集接口相关类型
##### Suite
测试集
| 参数名称 | 类型 | 说明 | 是否必填 |
| ---- | ---- | ----------- | -------- |
| id | string | 测试集id | Yes |
| name | string | 测试集名称 | Yes |
| withEvaluation | boolean | 是否能评价 | Yes |
| presetId | number | 当前预设 | No |
| algorithmName | string | 当前算法名称 | No |
| algorithmVersion | string | 当前算法版本 | No |
| startTime | number | 测试集开始时间 | Yes |
| endTime | number | 测试集结束时间 | No |
##### SuiteResponse
测试集响应
| 参数名称 | 类型 | 说明 | 是否必填 |
| ---- | ---- | ----------- | -------- |
| total | number | 总数 | Yes |
| suites | [ [Suite](#suite) ] | 测试集列表 | Yes |
#### 3.2 任务接口相关类型
##### Task
任务
| 参数名称 | 类型 | 说明 | 是否必填 |
| ---- | ---- | ----------- | -------- |
| id | string | 任务id | Yes |
| name | string | 任务名称 | Yes |
| suiteId | string | 所属测试集id | Yes |
| map | string | 地图id | No |
| mapName | string | 地图名 | No |
| vehicle | string | 主车id | No |
| controller | string | 控制器id | No |
| algorithmName | string | 算法名称 | No |
| algorithmVersion | string | 算法版本 | No |
| presetId | number | 当前预设id | No |
| startTime | number | 任务开始时间 | Yes |
| endTime | number | 任务结束时间 | No |
##### TaskResponse
任务响应
| 参数名称 | 类型 | 说明 | 是否必填 |
| ---- | ---- | ----------- | -------- |
| total | number | 总数 | Yes |
| tasks | [ [Task](#task) ] | 任务列表 | Yes |
#### 3.3 评价预设接口相关类型
##### Preset
评价预设
| 参数名称 | 类型 | 说明 | 是否必填 |
| ---- | ---- | ----------- | -------- |
| name | string | 预设名称 | Yes |
| type | string | 预设类型 | No |
| data | [ object ] | 预设数据 | Yes |
##### PresetResponse
评价预设响应
| 参数名称 | 类型 | 说明 | 是否必填 |
| ---- | ---- | ----------- | -------- |
| code | number | 状态码 | Yes |
| data | [Preset](#preset) | 预设数据 | Yes |
##### PresetsResponse
评价预设集响应
| 参数名称 | 类型 | 说明 | 是否必填 |
| ---- | ---- | ----------- | -------- |
| code | number | 状态码 | Yes |
| data | { presets: [ [Preset](#preset) ] , total: number } | 预设数据 | Yes |
##### PresetImportResponse
评价预设导入响应
| 参数名称 | 类型 | 说明 | 是否必填 |
| ---- | ---- | ----------- | -------- |
| code | number | 状态码 | Yes |
| data | { reason: string } | 失败原因 | Yes |
#### 3.4 评价报告接口相关类型
##### Evaluation
评价报告
| 参数名称 | 类型 | 说明 | 是否必填 |
| ---- | ---- | ----------- | -------- |
| name | string | 报告名称 | Yes |
| type | string | 报告枚举类型:`"task"`, `"suite"` | Yes |
| status | string | 报告状态 | Yes |
| suiteId | string | 测试集id | Yes |
| taskId | string | 任务id | No |
| presetId | number | 预设id | Yes |
| presetName | string | 预设名称 | No |
| presetVersionId | number | 预设版本id | Yes |
| score | number | 评价得分 | No |
| data | object | 报告数据 | Yes |