个人站点

第 2 / 8 篇

整理于 · 9 分钟

排课、考勤和请假怎样形成教务流程

动态教务调度中的场地冲突、人员变动与出勤合成

教务流程从一月逐步展开,末尾包含九月教师请假入口的修订。

贯穿项目的约定 本篇涉及 2 条

贯穿项目的约定

  1. 课时属于具体课程,班级、课次与教室容量分别判断。

    本篇涉及 查看规则说明
  2. 各角色只在授权范围内操作,家长代办以确认绑定为前提。

    查看规则说明
  3. 账号、关系、教学与订单各有状态,一处变化不代替另一处判断。

    本篇涉及 查看规则说明
  4. 课程课时、订单金额和钱包资金分开,费用变化保留业务依据。

    查看规则说明

本篇如何落实

教室放在具体课次上判断冲突,请假、临时调课与永久换班分别处理;当天考勤名单按已批准的人员变动合成。

在教培机构的日常运转中,“排课”绝不仅仅是在日历上填一个时间,“考勤”也不只是勾选几个名字,而“请假”更是直接牵动着后续出勤名单、调课安排与学费结算的核心节点。

当这三者交织在一起时,教务系统需要处理场地冲突、人员变动与出勤名单。教育机构管理系统逐步将教室安排下沉到具体课次,并让考勤名单反映请假和临时调课的结果。

1. 排课视图演进:从宏观日历到教室与时间网格

早期排课视图按日历组织。1 月的需求记录提出,管理员还需要同时比较场地占用、时间空档和教师安排,仅按日期展示不方便完成这些判断:

  • 教务人员在为一个新班级排定每周三下午的课程时,日历上只能看到当天有哪些课,却无法一目了然地获知“哪几间教室正处于空闲状态”;
  • 很难横向比对多位教师在同一时段的时间重叠情况。

为此,系统将管理端的排课工作台重构为教室与时间二维网格(Room-Time Grid)

教室14:00~16:0016:30
101 教室(容纳 15 人)已占用(Python1 班)空闲
102 教室(容纳 30 人)空闲已占用(少儿英语)
201 教室(容纳 10 人)已占用(数学一对一)空闲
比较空档与教师安排
排课并校验冲突
教室与时间网格工作台:一屏看完占用与空档,再落一次排课

网格按教室和时间组织安排,方便比较同一时段的可用场地。调整展示方式后,排课仍需校验以下条件:

  1. 教师时间互斥:同一位教师在同一时段不可安排两节课;
  2. 教室场地互斥:同一间教室在同一时段不可承载两个班级;
  3. 营业时间限制:排课时间必须落在机构核准的开放时段内。

2. 教室下沉到课次:弹性调度的关键架构

在早期的表结构设计中,教室(roomId)是直接保存在“开班实例(CourseInstance)”上的,这意味着该班级的全部 20 次课都必须在同一间教室上。

可以用一个假设场景说明这种限制:某班平时在 15 人教室上课,结课汇演那一次需要换到 50 人教室。变动只涉及一次课,班级本身没有改变。

如果教室绑定在班级上,上述微小的变动就会逼迫教务人员拆分班级或直接修改主表。

为此,系统将教室安排下沉到课次(CourseSchedule

  • 班级主表不再固化教室归属,仅记录模板、教师与已报名学员;
  • 每一个具体的排课课次独立维护自己的 roomId
  • 局部影响原则:若因插班导致人数增加使得原教室容量不足,系统仅提示并取消受影响的特定课次,允许教务为这些课次单独更换大教室,而其余已正常排定的课次完全不受干扰。

3. 请假、临时调课与永久换班的三维分离

面对学员在学习过程中的日程变动,系统严密区分了三种不同维度的教务行为:

业务动作改变的底层范围核心约束与规则
请假(Leave)仅影响某一个具体课次的到场状态扣减该次出勤预期,计入请假配额(如每门课 2 次事假);符合规则可触发退费
临时调课(Temporary Transfer)仅影响当次课的上课时间与地点从原课次临时调出,挂载至同模板另一班级的目标课次;不改变正式班级归属
永久换班(Permanent Change)改变学员后续所有未上课次的班级归属原班级释放正式名额,目标班级占用正式名额;迁移历史选课链条

这一拆分让临时调课和正式班级名额分别处理;永久换班还需要校验目标班级的剩余名额。

取消请假的业务状态机

1 月 20 日的实施记录描述了以下取消规则:

  • 待审批状态:允许取消申请;
  • 已批准状态:需同时满足课次尚未开始、尚未申请退款,才能取消;
  • 已拒绝或课次已结束等状态:不能任意取消。

取消还需同步通知与页面状态。同期设计讨论曾保留“未实现”和“不实现批准后取消”等旧段落,未完全同步后续进展。这里依据明确的实施记录说明当时规则,不据此推断后续所有状态组合都已验证。

4. 动态考勤算法:名单如何反映当天真实人员

在上课当天,教师打开手机或平板进行考勤点名时,考勤界面的学生名单绝对不能仅仅是该班级最初的正式学员花名册。

教育机构管理系统按以下关系组织当天的应到名单:

当天课次考勤名单=班级正式学员已批准请假学员已批准临时调出学员+已批准临时调入学员
班级正式报名学员(如 10 人)
− 扣除:已批准请假学员(1 人)
− 扣除:已批准临时调出学员(1 人)
+ 增加:其他班临时调入学员(2 人)
= 最终当天考勤点名名单(共 10 人)
同一个班,当天该到的人和名册上的人不是同一批
  • 调出学员留痕:在原课次考勤表中,临时调出的学员被标记为“已调课至 X 班”,防止授课教师因找不到人而误记为缺勤;
  • 调入学员确权:临时调入的学员直接出现在目标课次的点名列表中,教师点名后出勤记录直接生效于该学员的个人学程中。

5. 教师请假的独立边界

除了学员请假,系统还将**教师请假(Teacher Leave)**作为独立的教务流程进行管控:

  • 教师请假以**日期时间段(Date Range)**为申请单位(如因公出差请假 3 天),后端校验时严格拒绝传入学员标识(childId)或特定单节课次标识(scheduleId);
  • 教师请假后还需要处理受影响的授课安排,但九月这项修复确认的是日期范围与身份参数边界;它不能证明代课、批量顺延等后续流程已经自动完成。

排课确定在哪上课,请假与调课改变当次应到人员,考勤再记录实际出勤。把它们衔接起来,需要各项审批结果进入对应课次,同时保留正式班级归属与临时变动的区别。