Skip to content

作业与题库接口

1. 接口清单

1.1 教师端

方法路径说明权限
POST/teacher/course-offerings/{offeringId}/assignments创建作业教师
GET/teacher/course-offerings/{offeringId}/assignments作业列表教师
GET/teacher/assignments/{assignmentId}作业详情教师
PUT/teacher/assignments/{assignmentId}更新作业教师
PUT/teacher/assignments/{assignmentId}/paper更新试卷教师
POST/teacher/assignments/{assignmentId}/publish发布作业教师
POST/teacher/assignments/{assignmentId}/close关闭作业教师
POST/teacher/course-offerings/{offeringId}/question-bank/questions创建题库题目教师
GET/teacher/course-offerings/{offeringId}/question-bank/questions题库题目列表教师
GET/teacher/course-offerings/{offeringId}/question-bank/categories题库分类列表教师
GET/teacher/question-bank/questions/{questionId}题目详情教师
PUT/teacher/question-bank/questions/{questionId}更新题目教师
POST/teacher/question-bank/questions/{questionId}/archive归档题目教师

1.2 学生端

方法路径说明权限
GET/me/assignments我的作业列表已登录
GET/me/assignments/{assignmentId}作业详情已登录

2. 创建作业

POST /api/v1/teacher/course-offerings/{offeringId}/assignments

请求体关键字段:

json
{
  "title": "实验一:排序算法",
  "description": "请完成快速排序",
  "openAt": "2026-04-20T08:00:00Z",
  "dueAt": "2026-04-27T15:59:59Z",
  "submissionLimit": 10,
  "gradingMode": "hybrid"
}

3. 作业状态流转

作业状态为:DRAFT -> PUBLISHED -> CLOSED

  • POST /teacher/assignments/{assignmentId}/publish:发布作业
  • POST /teacher/assignments/{assignmentId}/close:关闭作业
  • 作业说明、试卷分节说明和题目题干保存原始 Markdown;API 不返回预渲染 HTML。
  • 学生答题页、WebIDE 题面和提交详情阅读区负责安全 Markdown 渲染,默认忽略原始 HTML。

4. 作业列表摘要

教师作业列表 GET /api/v1/teacher/course-offerings/{offeringId}/assignments 和学生作业列表 GET /api/v1/me/assignments 返回分页列表。

结构化作业的列表项包含 paper 摘要字段:

json
{
  "id": 1,
  "title": "实验一:排序算法",
  "status": "PUBLISHED",
  "paper": {
    "sectionCount": 3,
    "questionCount": 5,
    "totalScore": 60,
    "sections": []
  }
}

列表页仅使用 paper.totalScorepaper.questionCountpaper.sectionCount 展示摘要。paper.sections 在列表响应中为空数组;完整题面、选项、答案裁剪和编程题判题配置只通过作业详情接口返回。

5. 题库管理

支持六种题型建模,题目存储在题库中,通过试卷快照挂接到作业。

POST /api/v1/teacher/course-offerings/{offeringId}/question-bank/questionsPUT /api/v1/teacher/question-bank/questions/{questionId} 使用同一题目请求体。除 titlepromptquestionTypedefaultScorecategoryNametags 外,不同题型应按下列规则提交专属字段:

题型专属字段
SINGLE_CHOICEoptions 至少 2 项,每项包含 optionKeycontentcorrect,且必须且只能 1 项 correct=true
MULTIPLE_CHOICEoptions 至少 2 项,每项包含 optionKeycontentcorrect,且至少 1 项 correct=true
FILL_BLANKconfig.referenceAnswer 必填
SHORT_ANSWERconfig.referenceAnswer 可作为参考答案或评分说明
FILE_UPLOADconfig.maxFileCountconfig.maxFileSizeMb 必须为正整数;config.acceptedExtensions 可选
PROGRAMMINGconfig.supportedLanguages 至少 1 项;config.templateEntryFilePathconfig.templateFiles 可提供模板;config.judgeCases 至少 1 项,包含 stdinTextexpectedStdoutscore,且当前测试点分值合计应等于题目默认分值

后端校验失败时返回业务错误码和错误消息;前端题库弹窗应在弹窗错误区展示该消息,并保留当前草稿,便于教师修正字段后重试。

6. 教师查看提交

方法路径说明权限
GET/teacher/assignments/{assignmentId}/submissions按作业查看提交列表教师
GET/teacher/submissions/{submissionId}提交详情教师
GET/teacher/submission-artifacts/{artifactId}/download下载提交附件教师