泌尿外科排班系统进化史:从 Excel 到 AI 自动生成
7 人轮转 + 3 副马拉松排班,试过 Python 脚本、飞书多维表格、最后用 AI Agent 一句话搞定。
每个科室都有几件”不治病但比治病还头疼”的事,排班绝对是其中之一。在泌尿外科,我们的排班规则设计得相当复杂:
排班规则
我们科室有 7 位医生轮转,基础模式是一个 6 天循环:
[1副, 2副, 门, 白, 夜, 休]
分别对应:一线副班、二线副班、门诊、白班、夜班、休息。
这还不够——还有一个 3 副马拉松模式:每天额外安排一位医生专职做”三线副班”,每人连续 7 天,按固定顺序轮换(古→夏→柏→周→凤→钱→张)。
切换规则也很绕:每次交接时所有人先右移一位,旧马拉松人接管新马拉松人释放的位子。
第一版:Python 脚本
最初我写了一个 Python 脚本,把轮转逻辑写死在代码里。输入上个月的排班表,输出下个月的。
# 伪代码示意
cycle = ['1副', '2副', '门', '白', '夜', '休']
marathon_order = ['古', '夏', '柏', '周', '凤', '钱', '张']
def generate_schedule(last_day_state):
# ...复杂的轮换逻辑
pass
好处是灵活,坏处是想调逻辑得改代码,而且排班表出来还是要手动复制粘贴到群里。
第二版:飞书多维表格
后来用飞书多维表格做了一个排班系统,公式字段 + 自动填充 + 日历视图。界面友好多了,改排班规则不用写代码,拖拽公式就行。
但有个问题:飞书 API 写多维表格经常报 403,权限 scope 弄了好几轮,最终还是手动操作。
第三版:AI Agent 一句话排班
最终解决方案来自于 Hermes Agent 的 cron job + skill 组合。我在 skill 里写好了排班规则,然后只需要一句话:
“生成泌尿外科 7 月份的排班表,6 月 30 日末班状态:周(0), 张(1), 凤(2), 夏(3), 古(4), 钱(5)”
Agent 就会:
- 从记忆里读取排班规则
- 根据末班状态推演整个月
- 输出结构化的排班表
- 自动发送到科室群
{
"7月1日": {"古": "夜", "夏": "休", "柏": "1副", "周": "2副", "凤": "门", "钱": "白", "张": "马拉松三线"},
"7月2日": {"古": "休", "夏": "1副", "柏": "2副", "周": "门", "凤": "白", "钱": "夜", "张": "马拉松三线"},
...
}
效果对比
| 方案 | 生成耗时 | 操作门槛 | 错误率 | 可维护性 |
|---|---|---|---|---|
| 手工 Excel | 30-40 min | 高 | 高 | ⭐ |
| Python 脚本 | 5-10 min | 高(需改代码) | 低 | ⭐⭐ |
| 飞书多维表格 | 10-15 min | 中 | 中 | ⭐⭐⭐ |
| AI Agent | 30 秒 | 极低(一句话) | 极低 | ⭐⭐⭐⭐⭐ |
数字化的意义
从 Excel 到 AI Agent,表面上是工具升级,本质上是把隐性知识显性化。排班规则本来只存在于科室主任脑子里,现在变成了可复用的 skill 文件。即使换一个人来管排班,也能一键生成。