Phase 0:research.md(10项技术决策,无需澄清项) Phase 1:data-model.md(11张表+Redis结构),contracts/(8个模块API契约),quickstart.md(Docker Compose启动+流水线验证) plan.md:宪章11条全部通过,项目结构确认
84 lines
2.0 KiB
Markdown
84 lines
2.0 KiB
Markdown
# API 契约:问答生成阶段
|
||
|
||
---
|
||
|
||
## GET /api/qa/{taskId}
|
||
|
||
**权限**: ANNOTATOR(且为任务持有者)
|
||
**描述**: 获取候选问答对列表(由提取阶段审批触发 AI 生成)
|
||
|
||
**响应** `200`:
|
||
```json
|
||
{
|
||
"code": "SUCCESS",
|
||
"data": {
|
||
"taskId": 202,
|
||
"sourceType": "TEXT",
|
||
"items": [
|
||
{
|
||
"id": 1001,
|
||
"question": "北京是哪个国家的首都?",
|
||
"answer": "中国",
|
||
"status": "PENDING_REVIEW"
|
||
}
|
||
]
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## PUT /api/qa/{taskId}
|
||
|
||
**权限**: ANNOTATOR(且为任务持有者)
|
||
**描述**: 修改问答对(**整体覆盖,PUT 语义**,每次提交包含完整 items 数组)
|
||
|
||
**请求体**:
|
||
```json
|
||
{
|
||
"items": [
|
||
{
|
||
"question": "北京是哪个国家的首都?",
|
||
"answer": "中国。北京自1949年起成为中华人民共和国的首都。"
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
**响应** `200`: `{"code": "SUCCESS", "data": null}`
|
||
|
||
---
|
||
|
||
## POST /api/qa/{taskId}/submit
|
||
|
||
**权限**: ANNOTATOR(且为任务持有者)
|
||
**描述**: 提交问答对,任务状态 IN_PROGRESS → SUBMITTED
|
||
|
||
**响应** `200`: `{"code": "SUCCESS", "data": null}`
|
||
**失败**: `409` `INVALID_STATE`: 任务当前状态不允许提交
|
||
|
||
---
|
||
|
||
## POST /api/qa/{taskId}/approve
|
||
|
||
**权限**: REVIEWER
|
||
**描述**: 审批通过。同一事务中:先校验任务 → training_dataset 状态 → 任务状态 SUBMITTED → APPROVED → source_data 状态 → 写任务历史
|
||
|
||
**响应** `200`: `{"code": "SUCCESS", "data": null}`
|
||
**失败**:
|
||
- `403` `SELF_REVIEW_FORBIDDEN`: 不允许审批自己提交的任务
|
||
- `409` `INVALID_STATE`: 任务状态不为 SUBMITTED
|
||
|
||
---
|
||
|
||
## POST /api/qa/{taskId}/reject
|
||
|
||
**权限**: REVIEWER
|
||
**描述**: 驳回问答对,删除候选记录,任务状态 SUBMITTED → REJECTED
|
||
|
||
**请求体**: `{"reason": "问题描述不准确,请修改"}`
|
||
**响应** `200`: `{"code": "SUCCESS", "data": null}`
|
||
**失败**:
|
||
- `403` `SELF_REVIEW_FORBIDDEN`: 不允许驳回自己提交的任务
|
||
- `400` `REASON_REQUIRED`: 驳回原因不能为空
|