第 2 / 8 篇
整理于 · 9 分钟
排课、考勤和请假怎样形成教务流程
动态教务调度中的场地冲突、人员变动与出勤合成
教务流程从一月逐步展开,末尾包含九月教师请假入口的修订。
贯穿项目的约定 本篇涉及 2 条
在教培机构的日常运转中,“排课”绝不仅仅是在日历上填一个时间,“考勤”也不只是勾选几个名字,而“请假”更是直接牵动着后续出勤名单、调课安排与学费结算的核心节点。
当这三者交织在一起时,教务系统需要处理场地冲突、人员变动与出勤名单。教育机构管理系统逐步将教室安排下沉到具体课次,并让考勤名单反映请假和临时调课的结果。
1. 排课视图演进:从宏观日历到教室与时间网格
早期排课视图按日历组织。1 月的需求记录提出,管理员还需要同时比较场地占用、时间空档和教师安排,仅按日期展示不方便完成这些判断:
- 教务人员在为一个新班级排定每周三下午的课程时,日历上只能看到当天有哪些课,却无法一目了然地获知“哪几间教室正处于空闲状态”;
- 很难横向比对多位教师在同一时段的时间重叠情况。
为此,系统将管理端的排课工作台重构为教室与时间二维网格(Room-Time Grid):
| 教室 | 14:00~16:00 | 16:30 |
|---|---|---|
| 101 教室(容纳 15 人) | 已占用(Python1 班) | 空闲 |
| 102 教室(容纳 30 人) | 空闲 | 已占用(少儿英语) |
| 201 教室(容纳 10 人) | 已占用(数学一对一) | 空闲 |
网格按教室和时间组织安排,方便比较同一时段的可用场地。调整展示方式后,排课仍需校验以下条件:
- 教师时间互斥:同一位教师在同一时段不可安排两节课;
- 教室场地互斥:同一间教室在同一时段不可承载两个班级;
- 营业时间限制:排课时间必须落在机构核准的开放时段内。
2. 教室下沉到课次:弹性调度的关键架构
在早期的表结构设计中,教室(roomId)是直接保存在“开班实例(CourseInstance)”上的,这意味着该班级的全部 20 次课都必须在同一间教室上。
可以用一个假设场景说明这种限制:某班平时在 15 人教室上课,结课汇演那一次需要换到 50 人教室。变动只涉及一次课,班级本身没有改变。
如果教室绑定在班级上,上述微小的变动就会逼迫教务人员拆分班级或直接修改主表。
为此,系统将教室安排下沉到课次(CourseSchedule):
- 班级主表不再固化教室归属,仅记录模板、教师与已报名学员;
- 每一个具体的排课课次独立维护自己的
roomId; - 局部影响原则:若因插班导致人数增加使得原教室容量不足,系统仅提示并取消受影响的特定课次,允许教务为这些课次单独更换大教室,而其余已正常排定的课次完全不受干扰。
3. 请假、临时调课与永久换班的三维分离
面对学员在学习过程中的日程变动,系统严密区分了三种不同维度的教务行为:
| 业务动作 | 改变的底层范围 | 核心约束与规则 |
|---|---|---|
| 请假(Leave) | 仅影响某一个具体课次的到场状态 | 扣减该次出勤预期,计入请假配额(如每门课 2 次事假);符合规则可触发退费 |
| 临时调课(Temporary Transfer) | 仅影响当次课的上课时间与地点 | 从原课次临时调出,挂载至同模板另一班级的目标课次;不改变正式班级归属 |
| 永久换班(Permanent Change) | 改变学员后续所有未上课次的班级归属 | 原班级释放正式名额,目标班级占用正式名额;迁移历史选课链条 |
这一拆分让临时调课和正式班级名额分别处理;永久换班还需要校验目标班级的剩余名额。
取消请假的业务状态机
1 月 20 日的实施记录描述了以下取消规则:
- 待审批状态:允许取消申请;
- 已批准状态:需同时满足课次尚未开始、尚未申请退款,才能取消;
- 已拒绝或课次已结束等状态:不能任意取消。
取消还需同步通知与页面状态。同期设计讨论曾保留“未实现”和“不实现批准后取消”等旧段落,未完全同步后续进展。这里依据明确的实施记录说明当时规则,不据此推断后续所有状态组合都已验证。
4. 动态考勤算法:名单如何反映当天真实人员
在上课当天,教师打开手机或平板进行考勤点名时,考勤界面的学生名单绝对不能仅仅是该班级最初的正式学员花名册。
教育机构管理系统按以下关系组织当天的应到名单:
- 调出学员留痕:在原课次考勤表中,临时调出的学员被标记为“已调课至 X 班”,防止授课教师因找不到人而误记为缺勤;
- 调入学员确权:临时调入的学员直接出现在目标课次的点名列表中,教师点名后出勤记录直接生效于该学员的个人学程中。
5. 教师请假的独立边界
除了学员请假,系统还将**教师请假(Teacher Leave)**作为独立的教务流程进行管控:
- 教师请假以**日期时间段(Date Range)**为申请单位(如因公出差请假 3 天),后端校验时严格拒绝传入学员标识(
childId)或特定单节课次标识(scheduleId); - 教师请假后还需要处理受影响的授课安排,但九月这项修复确认的是日期范围与身份参数边界;它不能证明代课、批量顺延等后续流程已经自动完成。
排课确定在哪上课,请假与调课改变当次应到人员,考勤再记录实际出勤。把它们衔接起来,需要各项审批结果进入对应课次,同时保留正式班级归属与临时变动的区别。