教师课时量统计(代课费 · 超课时费 · 早晚自习监考计量 · 月度汇总)
规矩(每次都要遵守)
- 不改用户的文件。 规则表、课表、调课版、登记表一律只读;统计结果另存为「规则表名_课时统计_2026年10月.xlsx」,重名自动加 _1、_2。不要用任何别的办法去改用户的原表。
- 金额只按用户给的规则算。 每次报金额都要带一句「只按你填的规则算,以学校财务制度为准」。不要自己替学校定单价、系数、标准课时;规则表没填的就照脚本提醒问用户,不要猜。
- 先检查,再出表。 拿到资料先跑
check,把「需要人工确认」的每一条用大白话告诉用户(调休上课日上哪天的课、登记里找不到的课、名字对不上、2027 年没收录节假日等),用户确认后再跑stats。 - 数字以脚本输出为准。 每位老师多少节、多少钱,照脚本说,不要自己推算或改数。老师对数字有疑问,就让他打开「明细核对」页,按自己名字筛选,一节一节对。
- 全部在本机算,不联网、不上传。 运行前用一句话告诉用户要做什么(如「我现在用课时统计脚本读你的规则表和课表」);用户问运行的是什么,照实说是本技能自带的 Python 脚本。
- 组件缺了只提示,不自动装。 缺读写 Excel 的组件时,脚本会说要运行哪条安装命令,由用户自己决定。
- 工资数据是敏感信息。 只在用户本机处理,不要把老师名单和金额贴到别处。
用法
脚本:python {baseDir}/scripts/teaching_hours.py <子命令> [选项],路径有空格要加引号。只用 Python 自带功能 + openpyxl,不调用任何外部程序。
| 子命令 | 做什么 | 会不会动用户的文件 |
|---|---|---|
template |
生成空白规则表;加 --example 生成填好的示例(虚构学校 2026 年 10 月,3 个班 6 位老师) |
只新建文件 |
calendar --month 2026-10 |
看这个月哪些天上课、哪天放假、哪天调休上课;加 --rules 规则表 带上学校校历 |
只读 |
check 规则表 … |
统计前检查:读得到什么、每人大概多少、哪些地方要人工确认;不出文件 | 只读 |
stats 规则表 … |
正式统计,另存结果 Excel | 只读,另存新文件 |
check 和 stats 的选项:
| 选项 | 意思 |
|---|---|
--month 2026-10 |
统计哪个月;不写就用规则表「基本设置」里的 |
--timetable 课表.xlsx |
课表:排课技能排出来的「…_课表.xlsx」(调课版也行,会自动还原成原课表),或通用格式课表;不写就用规则表「课表」页 |
--changes 文件 |
调课记录,可写多次:排课技能的「…_调课版.xlsx」或「…_调课方案.xlsx」,或者代课登记表 |
--week 2026-10-14 |
调课版/调课方案是哪一周的(那一周任意一天的日期),按 --changes 的顺序一一对应;代课登记表不用写 |
--choose "1=代1,2=自习,3=换1" |
调课方案里最后选了哪个,按方案文件的顺序一一对应 |
--items 文件 |
另外的早读/晚自习/监考/辅导登记表,可写多次 |
--out 路径 |
只用于 stats:保存位置;不写就放在规则表旁边 |
出错时脚本固定两行:「出错了:…」「下一步:…」,原样转告用户。
规则表怎么填(一步一步念给用户)
先让我生成一份空白规则表(或示例),打开后底下有一排标签页,按顺序填:
- 点「基本设置」:在黄色那一列填统计月份、每周标准课时(超过才算超工作量)、超工作量按月还是按周算、每节多少元、代课算不算工作量、要不要另发代课费、公假(外出教研培训)照不照算、调休上课的那天上周几的课。
- 点「课时系数」:哪些课多算或少算,一行一条。类型写科目、班级、年级、教师、跨头课、跨年级或代课;名称可以用 * 代表任意字,比如「高三」「实验」;系数写 1.2 这样的数,写 0 就是这类课不算工作量(比如班会不算)。
- 点「教师身份」:班主任、教研组长等,写每周加计几节,或者个人每周标准课时、个人课时系数。一位老师有几个身份写几行。
- 点「计量项目」:早读、晚自习、监考、辅导,每次折算几节、每次多少元。只发钱就把折算写 0,只算工作量就把单价写 0。
- 点「校历」:学校自己的放假、停课、补课日(2026 年国家节假日已经内置,不用填;2027 年以后要自己填)。
- 点「课表」:用排课技能排出来的课表就不用填;没有的话一行一节课:教师、星期、节次、班级、科目。每周固定的早读、晚自习也可以写在这里,节次写「早读」「晚自习」。
- 点「代课登记」:这个月谁哪天哪节请假、谁代的。没人代就把代课教师空着;节次可写「全天」「上午」「1-2」;类型写事假、病假、公假等。
- 点「其他计量登记」:本月每次早读、晚自习、监考、辅导,一行一次,也可以在次数里写 2、3。
- 保存(按 Ctrl+S),把规则表(和排课技能的课表、调课版)发给我。
灰色斜体「例:」开头的那一行只是示范,不会被计算。
大白话 → 怎么做
| 用户说 | 怎么做 |
|---|---|
| 「帮我算一下这个月老师的课时」「有没有课时统计表模板」 | template;想先看效果就 template --example 再 stats 示例,把结果给他看 |
| 「10 月份哪几天不上课」「国庆调休那天算不算」 | calendar --month 2026-10(有规则表加 --rules) |
| 「规则表填好了,帮我看看」 | check 规则表(有排课技能的课表加 --timetable),把要确认的地方念给用户 |
| 「课表是用排课那个技能排的」 | 加 --timetable 那个「…_课表.xlsx」 |
| 「王老师 10 月 14 日请假那次调课版也算进去」 | 加 --changes 调课版.xlsx --week 2026-10-14 |
| 「那次只做了调课方案,第 1 节让李老师代,第 2 节上自习」 | 加 --changes 调课方案.xlsx --week 日期 --choose "1=代1,2=自习";没说清选哪个就把方案念给他再问 |
| 「代课都记在另一张登记表里」 | 加 --changes 登记表.xlsx;监考晚自习登记加 --items 登记表.xlsx |
| 「出表吧」 | stats 规则表 …;念出:保存在哪、每人实上几节、超几节、多少钱、金额合计,并说「以学校财务制度为准」 |
| 「班主任每周多算 2 节」「教研组长只要上 8 节」 | 让他在「教师身份」页填加计节数或每周标准课时 |
| 「实验课按 1.2 算」「初三加系数」 | 在「课时系数」页加「科目 / *实验 / 1.2」或「年级 / 九年级 / 1.1」 |
| 「代课另外按每节 20 元发,不算工作量」 | 「基本设置」里代课计入工作量填「否」,代课费填 20 |
| 「国庆调休那天上的是周五的课」 | 「基本设置」的「调休上课日按周几的课」填周五;不同调休日不一样就在「校历」页逐天写 |
| 「张老师说他的数不对」 | 让他打开结果的「明细核对」页,点「教师」那一列的小箭头只看自己,每一节都写了来源文件和行号 |
| 「2027 年 1 月的课时」 | 先提醒:2027 年节假日本技能没收录,请在「校历」页标出元旦、春节放假和调休上课日,再算 |
结果里有什么
- 汇总表:每位老师本月应上课时、请假、公假照算、代课、调课等增减、实上课时,早读/晚自习/监考/辅导各几次,课时折算、身份加计、计量项折算、折算后工作量、标准工作量、超工作量,超课时费、代课费、计量项金额、合计金额;最后一行合计。可直接打印让老师签字。
- 按周统计:每位老师每一周的同样数字;月初月末不满一周的按本月里的上课天数折算标准。
- 明细核对:每一节课、每一次计量项一行:日期、星期、节次、班级、科目、情况(按课表上课/代课/请假/公假/调课后上课)、系数怎么来的、折算节数、来源文件和行号。代课绿色、请假橙色,可按老师筛选。
- 校历:本月每天上不上课、上周几的课、依据(国家法定节假日 / 学校校历 / 按星期)。
- 规则与提醒:这次用的全部规则,以及需要人工确认的地方。
计算口径详见 references/calc-rules.md;节假日出处见 references/holidays-2026.md。
需要的组件
- 必须:Python 3.8+、openpyxl(读写 Excel)。缺了脚本会提示
pip install openpyxl,装不装由用户决定。
不做什么
- 不修改、不覆盖、不删除用户的任何文件。
- 不联网、不上传,不调用任何在线服务或外部程序。
- 不替学校定课时费标准、系数或工作量标准;不判断学校制度是否合规;金额以学校财务制度为准。
- 不算个税、社保、绩效工资总额,不生成工资条,不对接财务系统。
- 不处理单双周课表、走班选课、合班上课只算一节(同一时间两节都会算,并在提醒里列出)。
- 不读老版本 .xls 和 WPS 的 .et 格式(请用户在 Excel/WPS 里另存为 .xlsx);不破解有密码的文件。
- 不推荐任何收费软件或服务。
说话方式
- 对象是教务老师、财务和年级组长:说「课时」「代课」「请假」「公假」「超课时」「折算」「校历」「调休」,不念命令、参数名、程序里的名字。
- 先一句话结论(如「10 月一共上课 17 天,6 位老师合计 1513 元,有 1 处要你确认」),再说文件在哪、哪里要确认。
- 说老师名字时照表格原样,不评价老师。