帮助独立教师把"凭记忆排课"升级为"系统化排课与课时管理"。 当老师说"排课"、"调课"、"补课"、 "学员请假"、"课时包剩余"、"本周课表"、 "排课冲突"、"下一节课谁"时,必须激活此SKILL。 核心工作流:周课表生成 → 学员时间矩阵 → 课时包台账 → 补课/请假/调课三动作 → 冲突检测 → 课时扣...
---
name: xiaozhi-teach-schedule-manager
display_name: 排课与课时管理
version: 1.0.0
author: 小智伴学
category: 独立教师
tags: [排课, 课时管理, 补课请假, 课时包, 排课冲突, 独立教师]
description: >
帮助独立教师把"凭记忆排课"升级为"系统化排课与课时管理"。
当老师说"排课"、"调课"、"补课"、
"学员请假"、"课时包剩余"、"本周课表"、
"排课冲突"、"下一节课谁"时,必须激活此SKILL。
核心工作流:周课表生成 → 学员时间矩阵 →
课时包台账 → 补课/请假/调课三动作 →
冲突检测 → 课时扣减/补回 →
与 xiaozhi-teach-solo-dashboard / student-intake /
lesson-log / parent-communication 建立数据接口。
该版本基于"时间是独立教师最稀缺资产"原则,
让排课冲突早发现、课时台账透明化。
compatibility: OpenClaw / ClawHub
depends_on: xiaozhi-teach-solo-dashboard, xiaozhi-teach-student-intake, xiaozhi-teach-lesson-log, xiaozhi-teach-parent-communication
id: openclaw:xiaozhi-teach-schedule-manager
min_platform_version: "2.0"
max_round_limit: 12
---
# 排课与课时管理 SKILL
> **一句话定位:** 独立教师的时间是唯一不可再生的资产——把时间排清楚,是把生活排清楚。
---
## ⚠️ 技术实现边界声明
> **关于"自动排课"边界:** 本 SKILL 提供排课建议与冲突检测;**不**自动写入学员课表;老师需确认后写入 solo-dashboard。
>
> **关于"学员时间偏好"边界:** 排课时仅使用学员授权的时间偏好信息(来自 intake);不擅自增加可上课时间。
>
> **关于"课时扣减"边界:** 课时扣减与 lesson-log 联动,由 lesson-log 在课后触发预扣;本 SKILL 仅管理课时包台账和到期预警。
---
## 一、核心使命
独立教师排课常见的三个误区:
```text
误区① 全靠记性:课排在脑子里,
学员问"下次课什么时候"答不上来,
学员冲突了才后知后觉。
误区② 课时台账混乱:学员课时包还剩多少不清楚,
课时耗尽了才想起续费,
学员超课时上课但课时没扣。
误区③ 补课调课靠手动:学员请假靠微信沟通,
调课靠反复确认,
没有系统记录,靠人脑容易漏。
```
本 SKILL 要解决的是:
- **让排课可视化**:周课表 + 学员时间矩阵
- **让冲突早发现**:排课时自动检测时间冲突
- **让课时台账透明**:每个学员课时包剩余/到期/续费节点清楚
- **让补课请假有流程**:标准动作 + 自动留痕
---
## 二、触发时机
| 触发场景 | 示例语句 |
|---------|---------|
| 排课 | "排下周的课" / "[化名] 排课" |
| 周课表 | "本周课表" / "下周课表" |
| 调课 | "调课" / "把 [化名] 的课调到 [日期]" |
| 补课 | "补课" / "[化名] 缺课要补" |
| 请假 | "[化名] 请假" / "学员请假怎么扣课时" |
| 课时包 | "[化名] 还剩几课时" / "课时包快到期了" |
| 排课冲突 | "这个时间排了谁" / "有没有冲突" |
| 下一节课 | "我下一节课是谁" |
| 续费节点 | "[化名] 课时快用完了" |
---
## 三、核心流程
```text
┌──────────────────────────┐
│ ① 学员时间矩阵 │
│ 来自 intake │
└────────────┬─────────────┘
↓
┌──────────────────────────┐
│ ② 周课表生成 │
│ 固定课+临时调课 │
└────────────┬─────────────┘
↓
┌──────────────────────────┐
│ ③ 冲突检测 │
│ 老师时间/学员时间 │
└────────────┬─────────────┘
↓
┌──────────────────────────┐
│ ④ 排课建议输出 │
│ 老师确认后写入 │
└────────────┬─────────────┘
↓
┌──────────────────────────┐
│ ⑤ 课时包台账 │
│ 剩余/到期/续费 │
└────────────┬─────────────┘
↓
┌──────────────────────────┐
│ ⑥ 补课/请假/调课 │
│ 标准动作+自动留痕 │
└────────────┬─────────────┘
↓
┌──────────────────────────┐
│ ⑦ 写回 solo-dashboard │
│ 课表+台账 │
└──────────────────────────┘
```
---
## 四、学员时间矩阵
### 4.1 学员可用时间表
```text
━━━━━━━━━━━━━━━━━━━━━━━━━━━
📅 学员时间矩阵 · [化名]
━━━━━━━━━━━━━━━━━━━━━━━━━━━
■ 每周固定可上课时间
周一:□上午 □下午 □晚上
周二:□上午 □下午 □晚上
周三:□上午 □下午 □晚上
周四:□上午 □下午 □晚上
周五:□上午 □下午 □晚上
周六:□上午 □下午 □晚上
周日:□上午 □下午 □晚上
■ 单次课时长:[N] 分钟
■ 不可上课时间
· 学校晚自习:[时间段]
· 课外班冲突:[时间段]
· 家庭固定活动:[时间段]
■ 备注
· 寒暑假可加课
· 考试前 1 周需确认
━━━━━━━━━━━━━━━━━━━━━━━━━━━
```
### 4.2 老师时间矩阵
```text
━━━━━━━━━━━━━━━━━━━━━━━━━━━
📅 老师时间矩阵 · [本周]
━━━━━━━━━━━━━━━━━━━━━━━━━━━
■ 老师固定不可用时间
· 工作:[时间段]
· 通勤:[时间段]
· 个人事务:[时间段]
■ 老师可用课时
周一:[N] 个课时位
周二:[N] 个课时位
...
周日:[N] 个课时位
本周总可用:[N] 个课时位
■ 老师偏好
· 上午不排课
· 晚上最后 1 节课不超过 21:00
· 周末集中排课
━━━━━━━━━━━━━━━━━━━━━━━━━━━
```
---
## 五、周课表生成
### 5.1 课表模板
```text
━━━━━━━━━━━━━━━━━━━━━━━━━━━
📅 周课表 · [本周日期范围]
━━━━━━━━━━━━━━━━━━━━━━━━━━━
│ 周一 │ 周二 │ 周三 │ 周四 │ 周五 │ 周六 │ 周日
────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────
上午 9:00│ 化名A │ 休息 │ 化名C │ 化名A │ 休息 │ 化名E │ 化名B
上午 10:30│ 化名D │ 化名A │ 化名F │ 化名D │ 化名C │ 化名E │ 化名G
────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────
下午 14:00│ 化名B │ 化名D │ 化名G │ 休息 │ 化名F │ 化名H │ 化名A
下午 15:30│ 化名A │ 化名E │ 化名F │ 化名C │ 化名G │ 化名H │ 休息
────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────
晚上 19:00│ 化名E │ 化名F │ 化名A │ 化名D │ 化名H │ 休息 │ 休息
晚上 20:30│ 化名G │ 化名C │ 化名B │ 化名F │ 化名H │ 休息 │ 休息
━━━━━━━━━━━━━━━━━━━━━━━━━━━
■ 课时统计
· 本周总课时:[N] 课时
· 已排:[N] 课时
· 空闲位:[N] 个
━━━━━━━━━━━━━━━━━━━━━━━━━━━
```
### 5.2 课表生成三步走
```text
第 1 步:固定学员优先
· 每周固定时间学员先排
· 锁定本周的"硬骨架"
第 2 步:临时学员填空
· 填空固定学员之间的空位
· 优先安排学习节奏紧急的学员
第 3 步:留缓冲位
· 留 1-2 个空位处理调课/补课
· 不满课是健康的课表
```
---
## 六、冲突检测
### 6.1 冲突类型
```text
■ 老师时间冲突
· 同时段已排其他学员
· 同时段是老师不可用时间
■ 学员时间冲突
· 学员可用时间之外
· 学员自己之前有别的安排
■ 课时包预警
· 学员课时包不足
· 学员课时包即将到期
```
### 6.2 冲突检测输出
```text
━━━━━━━━━━━━━━━━━━━━━━━━━━━
⚠️ 冲突检测报告 · [排课请求]
━━━━━━━━━━━━━━━━━━━━━━━━━━━
■ 排课请求
学员:化名 A
时间:[日期] [时段]
课时:[N] 分钟
■ 检测结果
老师时间:□冲突 □可用
· 冲突原因:[X]
学员时间:□冲突 □可用
· 冲突原因:[X]
课时包:□正常 □预警
· 剩余:[N] 课时
· 到期:[日期]([N] 天后)
■ 建议
· 若冲突:调整时间为 [X]
· 若预警:提醒家长续费
━━━━━━━━━━━━━━━━━━━━━━━━━━━
```
---
## 七、补课/请假/调课三动作
### 7.1 请假
```text
■ 学员请假
操作:
· 课时不扣(或按约定调整)
· 记录请假原因和日期
· 不自动补排(学员/家长后续约时间)
■ 登记模板
━━━━━━━━━━━━━━━━━━━━━━━━━━
📝 请假登记
学员:化名 A
请假日期:[日期] [时段]
请假原因:[X]
课时处理:□不扣 □按半课时扣 □其他
跟进:□家长主动约补课 □后续协调
━━━━━━━━━━━━━━━━━━━━━━━━━━
```
### 7.2 补课
```text
■ 补课
操作:
· 排入老师可用时间
· 课时按实际消耗扣
· 标注"补课"便于复盘
■ 排课优先级
· 同周补课 > 下周补课
· 一次性排完 > 分散排
· 学员节奏保持一致
■ 模板
━━━━━━━━━━━━━━━━━━━━━━━━━━
📝 补课安排
学员:化名 A(原 [日期] [时段] 请假)
补课时间:[新日期] [新时段]
标注:□补课 □加课
━━━━━━━━━━━━━━━━━━━━━━━━━━
```
### 7.3 调课
```text
■ 调课(双方协商)
操作:
· 老师主动调:与学员/家长协商新时间
· 学员/家长主动调:登记新时间
· 双方都要确认
■ 调课登记
━━━━━━━━━━━━━━━━━━━━━━━━━━
📝 调课登记
学员:化名 A
原时间:[日期] [时段]
新时间:[日期] [时段]
调课原因:[X]
课时处理:□正常 □补课性质
双方确认:□老师 □学员/家长
━━━━━━━━━━━━━━━━━━━━━━━━━━
⚠️ 调课原则:
· 一周内完成调课,不留"待定"
· 调课记录要可追溯
· 频繁调课的学员需沟通原因
```
---
## 八、课时包台账
### 8.1 学员课时台账
```text
━━━━━━━━━━━━━━━━━━━━━━━━━━━
💰 课时包台账 · [化名]
━━━━━━━━━━━━━━━━━━━━━━━━━━━
■ 课时包信息
类型:[N 课时小包/中包/学期包]
生效:[日期]
到期:[日期]
续费节点预警:[日期]([N] 天前)
■ 课时消耗
初始:[N] 课时
已消耗:[N] 课时
剩余:[N] 课时([N]%)
状态:□充足 □预警 □耗尽
■ 消耗历史
· 课时 1([日期]):-1 → 剩余 [N]
· 课时 2([日期]):-1 → 剩余 [N]
· 课时 [N]([日期]):-1 → 剩余 [N]
■ 续费记录
· 第 1 次续费:[日期] +[N] 课时
· 第 2 次续费:[日期] +[N] 课时
■ 自动预警
· 课时包剩 30%:提醒续费
· 课时包剩 10%:紧急提醒
· 课时包到期前 7 天:到期预警
━━━━━━━━━━━━━━━━━━━━━━━━━━━
```
### 8.2 课时包预警规则
```text
■ 触发条件
· 剩余 ≤ 30% 初始值(首次预警)
· 剩余 ≤ 10% 初始值(紧急预警)
· 到期前 7 天(到期预警)
■ 预警动作
· 30% 预警:通知学员/家长(轻度)
· 10% 预警:通知学员/家长(强提醒)
· 到期预警:暂停排新课 + 通知
■ 写回 parent-communication
· 触发续费沟通话术
· 老师确认后发出
```
### 8.3 课时异常处理
```text
■ 超课时上课
· 自动透支允许:1 课时
· 透支 > 1 课时:暂停排新课 + 沟通
■ 学员请假不补课
· 课时不扣
· 期末统一结算(如有约定)
■ 老师取消
· 课时不扣
· 自动补排或退款
```
---
## 九、特殊场景
### 9.1 寒暑假排课
```text
■ 寒暑假特殊安排
· 增加排课密度(每周 N+2 课时)
· 提前 2 周确认学员时间
· 寒暑假专属课时包
■ 节奏建议
· 假期前 1 周:学期收尾 + 假期规划
· 假期中:高频复习 + 预习
· 假期后 1 周:节奏调整
```
### 9.2 考试期排课
```text
■ 考前 2 周
· 减少新课
· 增加复习/测评
· 学员优先完成学校作业
■ 考试期间
· 暂停新课
· 答疑 + 心理支持
· 考后复盘
■ 考后 1 周
· 复盘考试结果
· 调整下阶段计划
```
### 9.3 学员请假多
```text
■ 触发条件
· 1 个月内请假 ≥ 3 次
· 连续 2 周请假
■ 应对
· 主动了解原因
· 评估是否需要调整节奏
· 考虑续费意愿
```
---
## 十、与上游/下游 SKILL 的协作
### 10.1 协作流图
```text
┌────────────────────────┐
│ xiaozhi-teach- │
│ student-intake │
│ (学员时间矩阵) │
└───────────┬────────────┘
│
↓
┌────────────────────────┐
│ xiaozhi-teach- │
│ schedule-manager │
│ (本 SKILL) │
└───────────┬────────────┘
│
┌─────────────────┼─────────────────┐
↓ ↓ ↓
solo-dashboard lesson-log parent-communication
(课表+台账) (课时预扣) (续费预警)
│
↓
┌────────────────────────┐
│ xiaozhi-teach- │
│ renewal-report │
│ (续费报告) │
└────────────────────────┘
```
### 10.2 接口
```text
读:
studentIntake.schedulePreference → 学员时间偏好
soloDashboard.lessonHours → 课时消耗
lessonLog.consumedHours → 实际消耗
写:
scheduleManager.weeklyTable → 周课表
scheduleManager.conflictReport → 冲突检测
scheduleManager.lessonPackage → 课时包台账
scheduleManager.renewalWarning → 续费预警
→ solo-dashboard 接收
→ parent-communication 接收
```
---
## 十一、字段级高敏信息防护
```text
✅ 排课中可使用:化名、可上课时间、课时包信息
❌ 禁止:学员家庭住址、家长身份、精确学校班级
✅ 写回数据:周课表结构、课时包台账
❌ 不写回:学员真实姓名、家长联系方式
✅ 冲突检测:仅时间维度
❌ 不分析:学员家庭事务等高敏信息
```
---
## 十二、行为准则
| ✅ 应该做 | ❌ 不能做 |
|---------|---------|
| 排课前先确认学员时间 | 凭印象排课 |
| 冲突检测早发现 | 冲突了再处理 |
| 课时台账实时更新 | 课时不透明 |
| 补课请假有登记 | 微信沟通完就忘 |
| 续费预警提前 7 天 | 课时耗尽才提醒 |
| 写回数据脱敏 | 公开课表暴露真实姓名 |
---
## 十三、与其他 SKILL 的协同清单
```text
排课与课时管理
<── xiaozhi-teach-student-intake(学员时间矩阵)
<── xiaozhi-teach-solo-dashboard(学员基线)
──→ xiaozhi-teach-solo-dashboard(课表+台账)
──→ xiaozhi-teach-lesson-log(课时预扣)
──→ xiaozhi-teach-parent-communication(续费预警)
──→ xiaozhi-teach-renewal-report(续费报告)
```
**禁止行为**:
- 禁止 AI 替老师自动排课
- 禁止擅自增加学员可上课时间
- 禁止课时台账不透明
- 禁止超课时上课不预警
- 禁止公开课表暴露真实姓名
---
## 十四、参考资源
- `references/weekly-schedule-template.md` — 周课表模板(待补)
- `references/lesson-package-ledger.md` — 课时包台账模板(待补)
- `references/leave-makeup-rescheduling.md` — 请假/补课/调课流程(待补)
---
> 🦞 **小龙虾说:**
> "独立教师最大的浪费不是没课可上,
> 是把时间花在'我不知道今天该上什么'。
> 排课不是排时间表,
> 是把你的人生从混乱中拯救出来。
> 当你的课表、课时、学员、续费都在一个地方清楚可见,
> 你才有时间去做真正重要的事——把课上好。"
don't have the plugin yet? install it then click "run inline in claude" again.