# Developer 编写课程与批改


这页帮 Developer 做两件事：编写一门能被活动要求的课程，以及批改学员提交的开放题答案。前提是你已经是课程所属组织的成员。Owner、Admin、Member 都可以编写和批改，成员身份是唯一的要求。

在 Developer 左侧导航选择 **Academy**（学院）。打开的页面是 **Academy Programs**（学院培训项目），列出当前组织的全部课程。编写课程和批改答案都从这里开始，无需先建活动。

如果 **Academy** 处于锁定状态，或页面提示账号还没有加入组织，先[创建或加入组织](/zh/collaboration/organization)。如果页面显示 **You don't have permission to view this**（你没有查看此内容的权限），请该组织的 Owner 或 Admin 邀请你加入。

## 创建课程和第一个版本

选择 **New Program**（新建培训项目）。填写必填的 **Title**（标题），再用 **Description**（简介）说明谁需要学这门课、为什么要学。然后选择 **Create Program**（创建培训项目）。

课程编辑器随即打开，此时还没有版本。选择 **Create Version 1**（创建第 1 版），之后添加的学习单元都属于这个草稿版本。

以后要修改课程，从 **Academy Programs** 打开它。从未发布过的课程显示 **Edit Course**（编辑课程）。已发布的课程显示 **Publish New Version**（发布新版本）。它会打开一份从最新已发布版本复制出来的草稿，已发布的版本保持原样。

**Create Program** 报错时，先在列表里找这门课程，找不到再重新创建，以免建出两门。

## 添加学习单元

在编辑器里用 **Add lesson**（添加课时）加入学习单元，一个课时就是一个学习单元。每个学习单元都是必修步骤，学员完成版本里的全部学习单元，才算完成课程。

| 学习单元 | 你要准备什么 | 学员怎样完成 |
| --- | --- | --- |
| Reading（阅读） | **Lesson name**（课时名称）和 **Article**（文章）。文章用 Markdown 编写，可用 **Preview**（预览）检查 | 读完后选择 **Mark as read**（标记为已读） |
| Video（视频） | **Lesson name**、**Lesson description**（课时简介）和 **YouTube URL**（YouTube 链接） | 看完后选择 **Mark as watched**（标记为已看） |
| Quiz（测验） | **Lesson name**、至少一道题目，以及 **Pass threshold (%)**（及格线（%）） | 得分达到及格线 |

Reading 可以附加一张图片或一份 PDF 来代替文章，Video 可以上传 MP4 或 WebM 文件来代替 YouTube 链接。附件或上传的文件会替换另一个来源，学员只看到这个文件。

## 编写 Quiz 题目

打开 Quiz 单元，选择 **Add question**（添加题目）。新题目已经填好占位内容：一段题干、一个正确选项和一个错误选项。把它们改成你自己的内容，修改会在你离开输入框时自动保存。

每道题都有 **Question**（题目）、**Question type**（题型）和 **Points**（分值），分值是 1 到 100 的整数。题型决定你还要准备什么，以及答案怎样判分。

| 题型 | 你要准备什么 | 怎样判分 |
| --- | --- | --- |
| Single choice（单选题） | 2 到 6 个 **Choices**（选项），其中恰好一个标为 **Correct**（正确） | 自动判分。学员选中该选项即为答对 |
| Multiple choice（多选题） | 2 到 6 个 **Choices**，至少一个标为 **Correct** | 自动判分。学员选中全部正确选项、且没有多选，才算答对 |
| Fill in the blank（填空题） | 1 到 6 个 **Accepted answers**（标准答案），彼此不重复 | 自动判分。学员输入的内容必须与某个标准答案一致，忽略大小写和首尾空格 |
| Open answer（开放式作答） | 无需其他内容，这种题没有标准答案 | 人工批改。这次作答中的开放题全部批改完之前，学员的 Quiz 没有分数 |

题目违反所属题型的规则时，下方会出现警告，答案设置也暂不保存。例如选择题没有标出正确选项时，警告是 **Mark the correct answer — as written, nobody can pass this question.**（请标出正确答案——照现在这样，没有人能答对这道题）。

## 设定及格线

Quiz 的得分等于学员拿到的分值占全部分值的百分比，每道题要么拿到全部分值，要么得 0 分。**Pass threshold (%)**（及格线（%））是算作通过的最低得分，初始值为 70，可填 1 到 100 的整数。学员可以重做 Quiz，次数没有上限。

请把及格线保持在 70 或以上。课程结果要求每个 Quiz 至少得到 70%，与 Quiz 自己的及格线无关。及格线设得更低时，学员可能通过了 Quiz，却仍未完成课程。

## 示例：一门可以发布的小课程

下面是一个示意：一个 Reading 加一个 Quiz。它能通过提交前的检查。唯一的题目是自动判分的，学员提交后立即得到结果，无需等人批改。

| 学习单元 | 字段 | 示例内容 |
| --- | --- | --- |
| Reading | **Lesson name** | 标注标准 |
| Reading | **Article** | Quiz 要考的判断标准，附一个做好的例子 |
| Quiz | **Lesson name** | 资格测验 |
| Quiz | **Question** | 小票总金额无法辨认时，应该打哪个标签？ |
| Quiz | **Question type** | Single choice |
| Quiz | **Points** | 1 |
| Quiz | **Choices** | A：无法辨认，标为 **Correct**。B：有效 |
| Quiz | **Pass threshold (%)** | 70 |

这个 Quiz 只有一道 1 分的题，学员的得分只会是 100% 或 0%。

## 保存、提交并跟进审核

**Save as Draft**（保存为草稿）保存你对学习单元的修改，页面显示 **Saved as draft**（已保存为草稿）。

全部学习单元都准备好后，选择 **Submit for Review**（提交审核）。弹窗会先检查这个版本。有学习单元没完成时，弹窗会列出它并附上 **Fix →**（去处理 →）。提交按钮保持禁用，补完后才能提交。

检查按学习单元的类型进行：

- Reading 要有文章或附件
- Video 要有链接或文件
- Quiz 至少要有一道答案设置有效的题目

在弹窗里再次选择 **Submit for Review** 确认。页面显示 **Submitted for review — an Academy admin will approve or reject this version.**（已提交审核——学院管理员会通过或驳回这个版本）。这里的 Academy admin 指 Humanbased 平台的审核人员，与你组织里的 Admin 无关。

之后在课程页的 **Status**（状态）旁查看进展。

| 状态 | 表示什么 | 你现在做什么 |
| --- | --- | --- |
| **Draft**（草稿） | 版本可以编辑。学员学不到它，活动也无法要求它 | 补完学习单元，再提交审核 |
| **In review**（审核中） | 版本已提交并锁定，等待 Academy admin 处理 | 等待结果。这期间学习单元和题目都无法修改 |
| **Changes requested**（需要修改） | 审核人员把版本退回草稿，并在课程页留下 **Reviewer feedback**（审核意见） | 打开编辑器按意见修改，再次提交审核 |
| **Published**（已发布） | 版本已通过。学员可以学习，活动可以要求它 | 到活动的 Entry Gate 绑定它 |

## 把课程绑定到活动

课程发布后，还要由活动的 Entry Gate 提出要求，才会影响这个活动。打开活动，选择 **Open builder**（打开构建器），再选中 **Entry Gate**（准入门）节点。它的配置面板里有三个课程字段。

| 字段 | 选什么 |
| --- | --- |
| **Required course**（必修课程） | 要求的课程。列表里只有已发布的课程 |
| **Course version**（课程版本） | 要求的已发布版本。选中课程时，默认选中它最新的已发布版本 |
| **What counts as done**（怎样算完成） | **Has finished the course**（已学完该课程），这也是默认值 |

学员完成了全部学习单元，就满足 **Has finished the course**，也就是 Reading 和 Video 都已标记完成，Quiz 都已通过。学员在同一门课程的旧版本上通过，同样满足，见[版本规则](/zh/learning/learning)。

在这里编写的课程，请让 **Has mastered the course**（已掌握该课程）保持未选中。这个选项要求 mastered 结果，而学完课程记录的是 passed 结果。编辑器里没有任何学习单元或 Quiz 设置能产生 mastered，选了它就没有学员能通过这道 Gate。

要求会固定在你选中的版本上。课程发布新版本后，这个面板会出现以新版本命名的按钮，例如 **Require v2**（要求 v2）。选择它，活动才会改到新版本。面板和画布的保存方法见[配置工作流](/zh/tasks/workflow)的 Entry Gate 一节。

## 批改开放题答案

含有 **Open answer**（开放式作答）题目的 Quiz 要靠人批改才能出分。在这次作答的开放题全部批改完之前，学员一直看到 **Submitted — awaiting grading**（已提交，等待评分）。

在 **Academy Programs** 页面选择 **Review**（审核）。这个队列处理的是学员的答案。课程编辑器里的 **Submit for Review** 提交的是课程版本，由 Academy admin 处理，两者互不相干。

队列列出当前组织所有课程里等待批改的开放题答案，最早提交的排在最前。这个组织的任何成员都可以批改。每份答案是一张卡片，批改需要的内容都在卡片上。

| 卡片位置 | 显示什么 |
| --- | --- |
| 第一行 | 课程名称和 Quiz 单元名称。选择它可以打开课程，重读这道题对应的教学内容 |
| 第二行 | 题目、分值和学员的提交时间 |
| 灰底区域 | 学员的答案。答案为空时显示 **(no answer text)**（没有作答内容） |
| 按钮 | **Mark correct**（判为正确）和 **Mark incorrect**（判为错误） |

读完题目和答案，在两个按钮里选一个。**Mark correct** 给这份答案该题的全部分值，**Mark incorrect** 给 0 分。

选择前请想好：队列只列出尚未批改的答案，已记录的批改无法在这个页面改回。

请求发送期间两个按钮都会变灰。记录成功后，卡片从队列里消失，这就是成功的标志。

学员这次作答的最后一道开放题批改完后，Quiz 得出分数和通过与否。学员的课程结果随之更新。

| 你看到什么 | 表示什么 | 你现在做什么 |
| --- | --- | --- |
| 选择按钮后卡片消失 | 批改已记录 | 继续处理下一张卡片 |
| 出现错误提示，卡片还在 | 请求报错，结果尚未确认 | 刷新页面。卡片仍在队列里，说明还没有批改记录，重新选择。卡片已消失，说明批改已记录 |
| **Nothing to grade right now**（当前没有需要评分的内容） | 当前组织没有等待批改的开放题答案。课程版本的审核进度要到课程页的 Status 查看 | 等学员提交后再来。如果本应有答案，先确认[当前组织](/zh/collaboration/organization)是否选对 |
| **The review queue could not be loaded. Please try again.**（审核队列没能加载出来，请重试） | 列表请求失败 | 刷新页面 |
| **You don't have permission to view this** | 你的账号还未加入当前组织 | 请该组织的 Owner 或 Admin 邀请你加入 |
