按月份、项目汇总工时,最容易出问题的往往不是相加,而是把“待确认”、错误日期或缺项目的行也混了进去。
这个小工具先分出有效行与异常行,再做汇总。异常保留行号和原因,方便回到原表处理。
先约定哪些行可以相加
示例 CSV 只有日期、项目、小时三列,规则是:
- 日期使用
YYYY-MM-DD,并且是真实存在的日期。 - 项目名称不能为空。
- 每行小时大于0、不超过24,最多两位小数。
这些是教学规则,适配自己的记录时需要重新确认。例如每天的总工时是否有限制、同日是否允许重复,本例没有处理。
给 Codex 的任务:
1 | 读取 sample.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。