Files
label_backend/specs/001-label-backend-spec/contracts/qa.md
wh 4054a1133b feat(plan): 生成 label_backend 完整实施规划文档
Phase 0:research.md(10项技术决策,无需澄清项)
Phase 1:data-model.md(11张表+Redis结构),contracts/(8个模块API契约),quickstart.md(Docker Compose启动+流水线验证)
plan.md:宪章11条全部通过,项目结构确认
2026-04-09 12:27:16 +08:00

2.0 KiB
Raw Blame History

API 契约:问答生成阶段


GET /api/qa/{taskId}

权限: ANNOTATOR且为任务持有者
描述: 获取候选问答对列表(由提取阶段审批触发 AI 生成)

响应 200:

{
  "code": "SUCCESS",
  "data": {
    "taskId": 202,
    "sourceType": "TEXT",
    "items": [
      {
        "id": 1001,
        "question": "北京是哪个国家的首都?",
        "answer": "中国",
        "status": "PENDING_REVIEW"
      }
    ]
  }
}

PUT /api/qa/{taskId}

权限: ANNOTATOR且为任务持有者
描述: 修改问答对(整体覆盖PUT 语义,每次提交包含完整 items 数组)

请求体:

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