用 Codex 汇总工时 CSV:先分出异常行,附教学源码

按月份、项目汇总工时,最容易出问题的往往不是相加,而是把“待确认”、错误日期或缺项目的行也混了进去。

这个小工具先分出有效行与异常行,再做汇总。异常保留行号和原因,方便回到原表处理。

先约定哪些行可以相加

示例 CSV 只有日期、项目、小时三列,规则是:

  • 日期使用 YYYY-MM-DD,并且是真实存在的日期。
  • 项目名称不能为空。
  • 每行小时大于0、不超过24,最多两位小数。

这些是教学规则,适配自己的记录时需要重新确认。例如每天的总工时是否有限制、同日是否允许重复,本例没有处理。

给 Codex 的任务:

1
2
3
4
5
6
读取 sample.csv,按上述规则分开有效行和异常行。
有效行按月份、项目汇总,输出 summary.csv。
异常行输出 exceptions.csv,保留 CSV 行号与原因。
另外生成浏览器可查看的报告。
原文件只读,不自动补值,不覆盖既有输出。
用模拟数据核对结果,并验证异常输入。

运行与核对

在解压后的项目目录执行,输出目录需尚不存在:

1
python -X utf8 summarize_hours.py sample.csv --output output

原样例有8条模拟记录,结果为4条有效、4条异常。有效记录汇总如下:

月份 项目 小时
2026-09 项目A 3.50
2026-10 项目B 3.50
合计 7.00

“待确认”、不存在的日期、超范围小时与缺项目的行没有进入总数。检查报告时同时看汇总和异常两部分,避免只看到一个好看的总数。

验收范围

2026年10月15日的 Windows / Python 3.13.5 运行记录中,6项测试通过,覆盖小数、日期、项目、范围、缺列与旧输出保护;原 CSV 校验不变,报告用本地 Edge 查看。运行脚本不调用 API。

下载工时汇总教学项目

样例全部是模拟数据。格式正确不证明记录真实,也不代表已经检查同日重复或日总工时。本文于2026年10月27日整理,保留原测试范围,没有重跑。任务描述的官方参考见 OpenAI Prompting。