Skip to content

教室管理

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

为什么教室日程是聚合视图

classrooms 维护教室主数据,并提供“某时间是否可用”的聚合视图。它不拥有课程或借用状态,只合并其他模块的占用事实。

代码入口:

  • backend/apps/classrooms/models/
  • backend/apps/classrooms/views/
  • backend/apps/classrooms/services/

可用性口径

教室唯一性由 building + room_number 表达。空闲教室查询同时排除课程占用和手动借用;pending 手动借用也显示为占用块,避免审批完成前被重复预约。

教室日程不是新的事实来源。它是 CourseOccurrence 和借用记录叠加后的读取模型,所以课程冲突逻辑应留在课程/借用服务中,而不是复制到教室模块。

改动传播

  • freeschedule 前,先确认课程实例、手动借用和前端时间线渲染的期望。
  • 教室导入支持创建和更新,修改唯一键或导入字段会影响历史数据匹配。
  • 容量缺失或异常会影响借用容量校验。
  • 教室状态变更会影响空闲教室、借用申请、报修和班牌绑定。