# 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`: 驳回原因不能为空