排课撞车的三个源头:教师、教室与时段冲突检测的工程落地

简介: 培训机构排课最常见的三个事故:教师时间撞车、教室重复占用、学员连上撞车时段。本文给出资源建模表与冲突检测规则,讲解「先查占用再落课」的排课流程与调课再校验,附冲突检测 SQL、排课伪代码与检查清单。适用于培训机构的课表、教室与教师排班管理。

导读(3行收益):培训机构排课最常见的三个事故:教师时间撞车、教室重复占用、学员被排进冲突时段。本文给出教室/教师/时段三类资源的建模表与冲突检测规则,附可直接抄走的检测 SQL 和排课检查清单。看完能直接改进你的排课模块。

一、排课为什么总撞车

三个高频事故:

  • 教师撞车:同一位老师同一时间被排了两节课,上课前才发现;
  • 教室撞车:两个班被排进同一间教室,临时换教室;
  • 时段冲突:学员已报名的班和新排的课时间重叠,家长投诉。

根源是排课只记了「课表」,没有先做「占用检查」:先落课、再发现冲突,冲突就成了常态。正确做法是排课前先查三类资源的占用,冲突则拒绝或提示调换。

二、资源建模:把「能不能排」变成一条 SQL

把教室、教师、时段建模成占用表,核心是「资源 + 时间区间 + 占用状态」:

CREATE TABLE `schedule_slot` (
  `id` BIGINT PRIMARY KEY,
  `resource_type` TINYINT NOT NULL COMMENT '1教师 2教室 3学员',
  `resource_id` BIGINT NOT NULL,
  `course_id` BIGINT NOT NULL,
  `weekday` TINYINT NOT NULL COMMENT '1-7',
  `start_time` TIME NOT NULL,
  `end_time` TIME NOT NULL,
  `status` TINYINT NOT NULL DEFAULT 1 COMMENT '1占用中 0已释放',
  KEY `idx_res` (`resource_type`, `resource_id`, `weekday`)
) COMMENT='排课占用表';

排课前查教师是否空闲:

SELECT COUNT(*) FROM schedule_slot
WHERE resource_type = 1 AND resource_id = 101
  AND weekday = 3 AND status = 1
  AND start_time < '16:00' AND end_time > '15:00';

命中大于 0 说明该教师周三 15:00-16:00 已被占用,直接拒绝。教室、学员同理,只需换 resource_type

三、冲突检测:区间重叠的四条规则

时间区间重叠检测,记住「开始小于对方结束、结束大于对方开始」即可覆盖所有重叠形态:

新课区间 已有区间 是否冲突
15:00-16:00 14:30-15:30 冲突(尾部重叠)
15:00-16:00 15:30-16:30 冲突(头部重叠)
15:00-16:00 14:00-17:00 冲突(完全包含)
15:00-16:00 16:00-17:00 不冲突(恰好衔接)

边界注意:结束时间等于开始时间不冲突(15:00-16:00 与 16:00-17:00 可连排),SQL 里用 start_time < 新.end_time AND end_time > 新.start_time 判断,而不是 <=/>=

四、排课流程:先查占用,再落课,失败即调换

def schedule(course, teacher, room, weekday, start, end):
    conflicts = check_conflict(teacher, weekday, start, end)
    if conflicts:
        alt = find_free_slot(teacher, weekday)   # 找教师空闲时段
        if alt:
            return schedule(course, teacher, room, alt[0], alt[1], alt[2])
        raise ScheduleConflict("教师无空闲时段,需人工处理")
    insert_slot("teacher", teacher.id, course, weekday, start, end)
    insert_slot("room", room.id, course, weekday, start, end)
    insert_slot("student", course.student_group, course, weekday, start, end)

要点:三类资源占用一次事务写入,任一失败全部回滚,避免出现「教室占了、教师没占上」的中间状态;调课/改期同样走这条检测,先释放旧占用再写入新占用。批量排课(一次导入整周课表)也建议逐条走同一套检测,检测失败的行单独标出,而不是整批回滚或整批忽略——把「可自动处理的」和「需要人工的」分开,运营处理成本最低。

五、调课与改期的再校验

调课最容易漏掉的是学员侧冲突:教师、教室查了,忘了学员已有课程。调课流程固定四步:

  1. 查教师新时段是否空闲;
  2. 查教室新时段是否空闲;
  3. 查该班学员是否有其他课落在新时段;
  4. 三者都通过才执行「释放旧占用 + 写入新占用」。

不同课型还要区别对待:固定班课(整班固定课表)冲突检测以班为单位,一检出冲突整班提示;一对一/小组课(学员自由约课)冲突检测要细化到每个学员,同一时段的空位是有限的,超员即冲突。两种课型建议用同一张占用表、不同资源粒度(班 vs 学员)实现,避免为每种课型各写一套排课逻辑,后期维护成本翻倍。

六、踩坑清单

  • [ ] 只查教师不查教室,或反过来;
  • [ ] 用 <=/>= 判断区间重叠,把恰好衔接的课判成冲突;
  • [ ] 调课只释放旧占用、不检查新时段占用;
  • [ ] 忘了学员侧时段冲突;
  • [ ] 占用写入不放在事务里,出现半写状态;
  • [ ] 取消课程后占用记录没释放,占着资源排不出去;
  • [ ] 没有「先查占用再落课」的强制入口,绕过检测直接写课表。

七、工程落地建议

排课模块建议先做「占用表 + 冲突检测」这一层,再逐步加自动排课与调课提醒。若团队没有现成排课能力,可基于成型平台(如乔拓云教育系统)的课表与排课管理快速起步,重点核对资源占用与冲突校验逻辑。

八、复盘清单(可直接抄走)

  • [ ] 三类资源(教师/教室/学员)是否都有占用记录;
  • [ ] 区间重叠判断是否用「开始<对方结束 且 结束>对方开始」;
  • [ ] 调课是否固定走「三查 + 事务写入」;
  • [ ] 取消/结课是否及时释放占用。

结语

排课撞车的根源不是算法复杂,而是「没查占用就落课」。建模好三类资源、把冲突检测做成固定规则、调课强制再校验,撞车问题就能从偶发变成不可能。本文仅作技术分享,具体功能以各平台官方实时信息为准。

相关文章
|
7天前
|
人工智能 API 内存技术
刚刚 DeepSeek V4.1 Flash 开启内测,1 分钟教你用上!
刚刚 DeepSeek 内测群发布了 DeepSeek V4.1 Flash 中间版本内测的消息,这次的模型采用了新的结构,原生支持多模态、能力更强、速度更快、且成本更低。
1815 14
|
7天前
|
人工智能 自然语言处理 安全
阿里云千问办公 QwenWork详细介绍:产品核心能力、典型场景、价格及常见问题解答
千问办公是阿里云推出的一站式AI办公平台,主打"不止于对话,更注重交付",依托通义千问旗舰大模型,用户一句话即可完成数据分析、PPT生成、视频剪辑等复杂任务,直接输出可用成果。产品深度打通钉钉生态与企业OA,覆盖桌面端、网页端,提供企业标准版198元/人/月等多档订阅方案,新用户注册即赠2000积分,适配工程师、HR、财务等多职业办公场景,成为能动手干活的"全能AI同事"。
|
13天前
|
网络协议 Linux iOS开发
【2026实测】Wireshark下载+安装+汉化+使用教程(图文版,巨详细)
Wireshark 是一款免费开源的网络协议分析工具,可实时捕获、解析并可视化数据包,助你诊断网络故障、分析通信协议(如HTTP、DNS、TCP等)。支持Windows/macOS/Linux,含中文界面,新手入门便捷。(239字)
|
12天前
|
人工智能 运维 BI
阿里云千问办公QwenWork深度解析:基于Qwen3.8,六大核心能力重构企业全自动化工作流与计费选型指南
传统AI办公工具大多停留在对话问答、文档摘要、简单文案生成层面,只能完成单点碎片化任务,无法自主拆解复杂业务流程,很难串联多工具、多文档、外部业务系统完成端到端完整工作交付。很多企业在落地AI办公的时候,需要组合多款不同工具,来回切换界面,手动复制粘贴中间结果,智能化改造落地门槛居高不下。千问办公QwenWork是整合多款智能体产品能力打造的一体化企业办公智能体平台,底层基座依托Qwen3.8大模型,打通桌面端Agent、云端Agent、企业协同Agent三种运行形态,不再局限简单问答,接收业务目标之后自主拆解任务步骤,调用各类工具,处理文档、表格、浏览器自动化、数据查询,直接输出可交付的办公
1647 3
|
7天前
|
人工智能
千问办公官网入口:阿里AI办公QwenWork产品页和免费网页端链接
千问办公官网含两大入口:一是网页端(qwenwork.cn),即开即用,支持浏览器直接访问;二是阿里云产品页 https://t.aliyun.com/U/JNKJuO 提供免费/付费版详情、功能介绍及使用指南。
|
9天前
|
SQL 人工智能 前端开发
QoderWake 1.0 正式发布:从桌面里的 Agent,到工作现场的数字员工
QoderWake v1.0正式发布:企业级数字员工团队平台。支持“一句话建岗”,预置10类特训岗位;Waker常驻钉钉/飞书群,@即响应、自动协作、跨任务记忆;具备定时/事件/API多触发方式与统一任务看板;已沉淀27.6万条记忆、12.3万项技能,助力组织实现人机协同增效。
790 2
|
6天前
|
缓存 测试技术 API
DeepSeek V4.1 Flash 内测接入:改个模型名即可调用(附代码)
DeepSeek V4.1 Flash 内测不用申请,base_url 不变、改个模型名就能调,9/10 到期。本文讲清接入、计费限流与多模态注意点。
813 0
DeepSeek V4.1 Flash 内测接入:改个模型名即可调用(附代码)
|
14天前
|
缓存 数据可视化 开发工具
DeepSeek Harness 怎么更新?dsh 更新完整指南:更新本体(npx、npm、源码)与更新插件两种方式
DeepSeek Harness 的更新分两层:本体更新(npx 自动最新、npm update -g、源码 git pull)与插件更新(插件市场点更新、命令行覆盖安装)。本文按「准备 → 更新本体 → 更新插件 → 更新后检查」四步走,覆盖新手常见疑问。
1612 1
DeepSeek Harness 怎么更新?dsh 更新完整指南:更新本体(npx、npm、源码)与更新插件两种方式
|
21天前
|
人工智能 自然语言处理 安全
阿里云千问办公、Qoder Teams、Qoder CN区别与选择指南:模型能力、适用场景与最新活动参考
本文聚焦阿里云2026年推出的三款自研AI办公产品,清晰拆解千问办公、Qoder Teams、Qoder CN的差异化定位与能力边界:千问办公主打职场全场景提效,支持自然语言指令一键完成PPT生成、数据分析等高频办公任务;Qoder Teams面向程序员团队,深度整合AI代码生成、团队协同与企业知识库能力;Qoder CN则专为金融、政务等强合规场景打造,实现数据不出境与VPC私有化部署。文章同步给出分场景选型指南与最新活动定价,帮助不同类型的企业按需组合产品,实现业务岗、研发岗与强合规场景的AI能力全覆盖。
3989 5
阿里云千问办公、Qoder Teams、Qoder CN区别与选择指南:模型能力、适用场景与最新活动参考
|
12天前
|
人工智能 自然语言处理 安全
阿里云AI数智鉴密:AI 生成内容如何拿到一张"防篡改的身份证"
隐形水印 + C2PA签名:让AI生成内容“持证上岗”。
1156 0