Skip to content

课堂签到

API 事实来源:Django 后端自动文档

为什么签到锚定课程实例

checkins 管理课程实例上的签到会话和学生签到记录。它依赖课程和用户班级信息,不独立维护课表。

代码入口:

  • backend/apps/checkins/models/
  • backend/apps/checkins/views/
  • backend/apps/checkins/serializers/
  • backend/apps/checkins/services/

会话与名册

签到会话锚定 CourseOccurrence,同一个课程实例重复创建签到保持幂等。这样教师、学生、班牌和课程查询都围绕同一课时事实工作。

学生名册通过课程班级与用户 student_class 匹配。这个匹配依赖班级字符串,改课程班级字段或用户班级字段会改变签到覆盖范围。

非管理员只能管理自己课程的签到数据;学生只能看自己的签到和课表。

时间相关行为

  • 改状态自动流转前,先确认课时时间、时区和前端当天视图。
  • 签到状态与当前时间相关,测试需要覆盖边界时间。

预留能力

  • 新增签到方式时,需要定义 methodsource、置信度和操作日志策略。
  • 班牌设备目前不写入签到。接入前需要设计设备身份、学生身份和防重放规则。
  • 人脸识别字段已有预留,但 face-service 尚未进入主签到流程。