教室管理
API 事实来源:Django 后端自动文档
为什么教室日程是聚合视图
classrooms 维护教室主数据,并提供“某时间是否可用”的聚合视图。它不拥有课程或借用状态,只合并其他模块的占用事实。
代码入口:
backend/apps/classrooms/models/backend/apps/classrooms/views/backend/apps/classrooms/services/
可用性口径
教室唯一性由 building + room_number 表达。空闲教室查询同时排除课程占用和手动借用;pending 手动借用也显示为占用块,避免审批完成前被重复预约。
教室日程不是新的事实来源。它是 CourseOccurrence 和借用记录叠加后的读取模型,所以课程冲突逻辑应留在课程/借用服务中,而不是复制到教室模块。
改动传播
- 改
free或schedule前,先确认课程实例、手动借用和前端时间线渲染的期望。 - 教室导入支持创建和更新,修改唯一键或导入字段会影响历史数据匹配。
- 容量缺失或异常会影响借用容量校验。
- 教室状态变更会影响空闲教室、借用申请、报修和班牌绑定。