RPA帮培训机构自动排课和发通知——3个校区排课表从两天压到两小时

去年9月开学季之前,有个做少儿编程培训的老板来找我。他在北京有三个校区,加起来差不多400多个班级、60多个老师、20多间教室。每学期开学前排课是他最头疼的事——教务老师要花整整两天时间,对着Excel表格人工排课,协调老师的时间冲突、教室的占用情况、不同课程的时段要求。排完之后还要逐个通知学员家长上课时间,几百条消息发下来又是大半天。

更让他崩溃的是排课出错率太高。上学期有个班的课排到了已经被另一个班占用的教室,上课当天老师带着十几个孩子站在走廊里找不到教室。还有一次两个校区的同一个老师被排了同一时段的课,教务老师没核对到,最后只能临时调课,家长群里炸了锅。他跟我说,每次排课完那几天他都睡不好觉,生怕微信群里又弹出家长投诉。

我看了他们的排课流程之后觉得这个场景特别适合RPA来做——规则明确、数据结构化、重复性高、人工容易出错。我花了两周时间帮他们搭了一套RPA自动排课和通知系统,从读取报名数据到匹配教师教室到生成课表到自动发送通知,全流程跑通。这学期开学排课,教务老师只花了两个小时做最终确认和微调,通知零遗漏。今天我就把这套系统的搭建逻辑和中间踩过的坑讲清楚。

说句实在话,RPA在很多人的印象里就是”代替人点鼠标”的工具,但真正用好了它解决的是业务流程的效率和准确性问题。在95星球企服帮客户做RPA项目时我发现,培训机构的排课场景虽然看着复杂,但拆开来看每一步都是可以用规则驱动的,比很多场景更适合自动化。下面我把关键环节一个一个讲。

手工排课的痛——3个校区排一次课表要两天还出错

先说清楚为什么手工排课这么痛,你才知道RPA要解决什么问题。

这家培训机构的排课流程是这样的。教务老师先从报名系统导出Excel,里面有每个班级的课程名称、报名人数、学员名单、家长联系方式。然后她打开另一个Excel——教师排班表,里面记录了每个老师在哪个校区、哪些时段有空、能教哪些课程。再打开第三个Excel——教室资源表,记录每个校区每间教室的容量和设备配置。然后她就在这三个表格之间来回切换,手动匹配:这个班的课程哪个老师能教,这个老师哪个时段有空,这个时段哪个校区的哪间教室没被占用,教室容量够不够装下这个班的学生。

这还不算完。有些课程有特殊要求,比如机器人编程课需要带电脑的教室,美术课需要带水槽的教室。有些老师只教特定年龄段,有些老师只在周末有空。有些班级是混龄班需要两个老师同时在场。这些约束条件全部靠教务老师记在脑子里,在排课的时候人工核对。

400多个班排下来,两天时间紧巴巴的。而且人不是机器,排到后面精力下降,出错概率直线上升。最坑的是排完之后发现一个冲突要调整,可能引发连锁反应——这个老师的课调了,他其他时段的课也得调,其他班用了那个时段教室的也得调。一个改动牵一发动全身,教务老师经常改到最后自己都绕晕了。

这个流程的核心问题是:排课本质上是一个约束求解问题——在教师、教室、时段三维空间里找到一组满足所有约束条件的分配方案。人脑做这种多维约束求解天然就容易出错,但这对RPA来说正好是擅长的事情。

RPA排课机器人的搭建逻辑——从课表规则到自动匹配

我搭的这套RPA排课系统分成三个模块:数据读取、约束匹配、课表生成。我逐个讲。

数据读取模块负责把三个Excel表格的数据读进来。报名数据、教师排班表、教室资源表,每张表的字段我都做了标准化映射。比如报名数据里的”上课校区”字段,有的写”海淀校区”有的写”海淀”,有的写”1校区”,我在读取的时候统一映射成系统内部的标准编码。这一步看似简单,但如果你不处理数据格式的不一致,后面匹配的时候会出各种莫名其妙的错误。

约束匹配模块是核心。我把所有排课规则分成两类写成了可执行的匹配逻辑。第一类是硬约束——违反了就不行的规则。比如老师不能在同一时段排两个班的课,教室不能在同一时段被两个班占用,机器人课必须有带电脑的教室。第二类是软约束——违反了不致命但尽量满足的规则。比如尽量让同一个老师连续上课不要中间空两小时,尽量让同一个班的课程排在固定时段方便家长安排时间。硬约束在匹配时直接过滤掉不满足条件的方案,软约束在多个可行方案里选最优的。

RPA机器人的匹配逻辑是先按校区分组,每个校区内部按课程类型排序——优先排约束条件最多的课程(比如机器人课需要特定教室,先排),再排约束少的。对每个班级,它从教师列表里筛选出能教这个课程且有空闲时段的老师,再从教室列表里筛选出容量够且有设备的教室,然后检查时段是否冲突。如果找到满足所有硬约束的方案,就按照软约束打分选最优的分配。如果一个班级找不到可行方案,标记为”需要人工处理”放进异常列表。

课表生成模块把排好的课表输出成Excel,按校区分Sheet,每个校区一张完整的课表。同时生成一份异常报告,列出所有没能自动排好的班级和原因,教务老师只需要处理这些异常项就行。400多个班里通常只有十几个需要人工干预,比原来全部手工排省了90%以上的工作量。

通知学员这一步最容易被忽略——怎么做到零遗漏

排完课表只是第一步,通知学员家长是第二步。很多机构做自动化只做了排课,通知还是人工发,结果还是出错。我帮这个客户把通知也做了自动化。

通知模块的逻辑是读取排好的课表和报名数据,为每个班级生成一条通知消息,内容包含课程名称、上课时间、上课教室、带班老师、注意事项。通知消息按照家长联系方式通过企业微信自动发送。

这里有几个细节我踩过坑,值得说一下。

通知消息的模板不能写死。不同课程的注意事项不一样——机器人课要提醒带笔记本和充电器,美术课要提醒穿不怕弄脏的衣服,钢琴课要提醒带乐谱。我给每类课程设了不同的注意事项模板,RPA在生成消息时根据课程类型自动匹配。

发送时机要控制。如果400多个班的通知一口气发出去,企业微信可能会触发频率限制。我设置了每条消息间隔2秒发送,400多条消息大概15分钟发完。同时在发送后记录每条消息的发送状态,发送失败的自动重试一次,还是失败的标记出来人工跟进。

还有一个容易忽略的点是通知确认。家长收到通知后需不需要回复确认?我加了一个简单的确认机制——通知消息末尾附带一个”确认收到”的按钮,家长点击后系统自动记录。开课前一天RPA再跑一次,检查哪些家长还没确认,给未确认的重新发一次提醒。这个机制上线之后,开学第一周因为”不知道上课时间”而缺席的学员从之前的每学期十几个降到了零。

上线后的效果和踩过的坑

这套系统上线用了两个学期了。第一个学期是试运行,我跟教务老师一起盯着跑,发现了不少问题。第二个学期基本就稳定了,教务老师只需要花两个小时做最终确认和微调。

说几个踩过的坑。

第一个坑是排课优先级的设置。最初我把课程按报名人数从多到少排序,先排大班再排小班。结果发现大班需要的大教室被占了之后,后面有些需要大教室的小班反而排不进去。后来改成按”资源稀缺度”排序——需要特殊教室的课程优先排,不需要特殊教室的往后排。这个调整之后异常率从5%降到了2%左右。

第二个坑是教师临时请假。系统排好课表后,如果有老师突然生病请假,原来的课表就得调。我在系统里加了一个”教师替换”功能——输入请假的老师和时段,系统自动从能教同一课程的其他老师里找有空闲的,生成替换方案。找不到的话标记出来人工处理。这个功能上线后,老师请假的调课处理从原来的一两个小时缩短到十几分钟。

第三个坑是校区之间资源调度的边界。三个校区虽然物理上分开,但有些老师是跨校区上课的。最初系统按校区独立排课,结果同一个跨校区老师在海淀排了上午的课,在朝阳排了下午的课,中间通勤时间根本不够。后来我加了跨校区教师的通勤时间缓冲——两个校区之间的课至少间隔一个半小时,这个问题才解决。

这些坑都是在实际上线运行中才暴露出来的,光靠需求调研阶段是很难全部想到的。所以我对做RPA项目的建议是:第一版上线不要追求完美,先跑起来,在真实业务中收集问题持续迭代。这套系统我前后改了四五个版本才稳定下来,每个版本都是解决一类实际运行中发现的问题。但即使算上这些迭代成本,相比原来每学期两天手工排课加发通知的工作量,ROI也是非常可观的。教务老师从排课这件事上解放出来之后,把精力放到了教学质量跟踪和学员满意度回访上,这才是她应该干的活。


需要相关服务?联系我们免费咨询

九五星球企服提供公司注册、代理记账、商标注册、财税咨询、高新申报、网站开发等一站式企业服务。可以先免费咨询看看,觉得合适再合作,不推销。

官网:www.95planet.com

免费小工具推荐:

联系方式:

  • 电话/微信:18910232032
  • 扫码添加专业经营合规顾问,免费咨询 ↓
扫码添加微信免费咨询