用 Codex 把 CSV 销售数据做成图表周报:图文实战
通过慧根 API 接入 Codex,编写读取 CSV 的 Python 脚本,在本地核对金额、生成按日与分类图表,附完整提示词、示例数据和可下载周报。
先看结果:一份可以核对数字的销售周报
手里有一份销售 CSV,想知道这一周卖了多少、哪一天较高、哪些分类占得多,不一定要先搭一个后台。这个练习让 Codex 按你确认的口径编写一个 Python 脚本,再把表格变成可在浏览器打开的图表周报。
慧根 API 用于 Codex 连接模型、协助写代码;生成后的脚本在本机读取 CSV、计算金额并生成 HTML。它不需要 API Key,也不会在每次生成报告时调用 AI。下面的图表来自配套虚构数据的实际脚本输出,你可以下载 CSV 复算。本文提供可复现的练习流程,不提供模型调用耗时或费用的实测结论。
第 1 步:先说清楚这份周报怎么算
本例使用三个字段:date 是销售日期,category 是分类,amount 是人民币元。每一行代表一条销售流水;没有客户 ID、订单 ID、成本或退款字段,所以不能从中计算客户数、利润或扣除退款后的净额。
统计区间明确为 2026-10-26 至 2026-11-01,首尾两天都包含。不要让程序默认取“本周”,也不要把日期当成 UTC 时间戳转换。金额用 Decimal 做十进制计算,最后保留两位;每笔平均金额等于区间内总额除以流水条数,不是人均消费。
文首为处理流程示意,非软件截图:Codex 协助确认口径和生成代码;脚本在本地读取 CSV、计算并生成 HTML 周报。
第 2 步:准备 Codex、Python 和练习目录
先按 Codex API 配置图文教程 完成慧根接入。如果已经可以正常对话,就继续准备运行环境。
在 Windows 新建 sales-weekly 文件夹,在这个目录启动 Codex,并核对工作区路径。脚本需要 Python 3.9 或以上;未安装时从 Python 官方 Windows 下载页 安装适合系统的版本。安装后重新打开终端,先执行:
python --version如果 python 不可用,但 py -3 --version 能显示版本,后面的命令把 python 换成 py -3。本例只使用 Python 标准库,不需要 pip install。
可以下载完整示例 ZIP,先右键“全部解压”,再把 sales_report.py、sales-sample.csv、example-report.html 和 README 放到练习目录。包内的 example-report.html 是预生成成品,可先双击查看;后面的命令会新生成 report.html。也可先查看示例周报。下载成品用于核对输出;接下来的提示词用于学习怎样让 Codex 按需求生成同类脚本。
第 3 步:先让 Codex 确认输入,别急着画图
示例 CSV 共 20 条虚构流水,含区间外记录、0 元记录,以及需要 CSV 双引号包住的分类名称。ZIP 保留完整数据,节选几行如下:
date,category,amount
2026-10-25,模板,39.90
2026-10-26,课程,199.00
2026-10-28,"模板,进阶",89.90
2026-10-31," 模板 ",59.90
2026-11-01,模板,0.00
2026-11-02,课程,199.00先发送下面这段提示词。不要让 Codex 一边猜字段一边生成结果:
请先确认我的销售周报需求,暂时不要创建或修改文件。
只读取当前练习目录的 sales-sample.csv,不读目录外文件或任何凭据。
CSV 必须是 UTF-8,可带 BOM,表头固定为 date,category,amount。
date 为 YYYY-MM-DD 的自然日期;category 为分类;amount 为人民币元。
区间是 2026-10-26 至 2026-11-01,起止日均包含。
金额用 Decimal,不用二进制浮点直接求和。
统计总金额、流水条数、每笔平均金额、按日和分类汇总。
0 元行保留,重复行不自动去重;这份数据不含成本或退款。
请列出字段、校验规则、计算公式和缺失信息,等待我确认。
不要补造数据,不推断订单数、客户数或利润。核对它是否把“每行流水”误写成“每位客户”,是否偷偷丢掉 0 元行,或擅自把重复记录合并。遇到真实数据的含税、退款或币种问题,应先补充口径,再改脚本。
第 4 步:要求生成可复核、不会覆盖旧文件的脚本
确认上一步后,再发送:
请按已确认口径创建 sales_report.py,兼容 Python 3.9 及以上,只用标准库。
CLI 的 --input、--output、--start、--end 四个参数全部必填。
先校验整份 CSV,再筛选日期;失败显示源 CSV 行号,非零退出,不生成报告。
校验表头、字段数、真实日期、非空分类和非负有限金额;金额最多两位小数。
禁止负数、NaN、Infinity、空行和多余字段,不静默修正错误。
分类首尾空格去除;不自动去重,0 元仍计入流水条数。
输出单个 UTF-8 HTML:总额、流水条数、每笔平均金额、按日与分类 SVG 图、明细表。
米白底、深色文字、棕色强调,手机可阅读;所有 CSV 文本转义后展示。
不使用网络、第三方库、外部脚本、字体或图片,不放入 API Key。
若输出文件已存在,拒绝覆盖;不能覆盖输入文件,不删除既有文件。
只在当前练习目录创建脚本,不覆盖已有脚本;已有文件时先报告并等待确认。
使用临时目录测试金额、起止边界、带引号 CSV、错误输入和覆盖拒绝。
报告实际完成的检查;没有浏览器实测就明确说明,不宣称已验证。Codex 生成的版式可以与示例不同。验收重点是口径、数字、错误处理和文件行为,不能只看页面是否好看。若你已下载参考脚本,用它运行即可;想另练生成过程,就新建一个空目录,避免与下载文件重名。
第 5 步:在 Windows 运行并打开报告
在资源管理器进入 sales-weekly,确认能看到脚本与 CSV。点击地址栏,输入 powershell 并回车,在这个目录打开终端,再执行:
python sales_report.py --input sales-sample.csv --output report.html --start 2026-10-26 --end 2026-11-01成功后双击 report.html,用 Edge 或 Chrome 打开。文件保存在命令运行的目录,不会自动上传到网站。手机窄屏下,图表与明细表可以左右滑动查看。开启资源管理器“查看 → 显示 → 文件扩展名”,检查文件没有误存成 .py.txt 或 .csv.txt。
再次生成时,把输出名称改为 report-v2.html。脚本会拒绝覆盖已有文件;保留前一份报告,比较修改前后的数字,比反复覆盖更容易找错。
第 6 步:拿计算器核对这份实际输出
配套数据在给定七天内应有 15 条流水,总额 ¥2880.50,每笔平均 ¥192.03。区间外的 5 条记录不参加周报汇总,但仍先接受格式校验。0 元行保留在条数中,所有金额都按人民币元处理。全文件 20 条合计 ¥3586.30,扣掉区间外的 ¥705.80,得到本周 ¥2880.50;表中的 10 月 25 日与 11 月 2 日记录都在区间外。
| 日期 | 金额 / 元 |
|---|---|
| 2026-10-26 | 238.90 |
| 2026-10-27 | 498.00 |
| 2026-10-28 | 149.80 |
| 2026-10-29 | 698.00 |
| 2026-10-30 | 338.90 |
| 2026-10-31 | 458.90 |
| 2026-11-01 | 498.00 |
| 分类 | 金额 / 元 |
|---|---|
| 咨询 | 1396.00 |
| 课程 | 1195.00 |
| 模板 | 199.60 |
| 模板,进阶 | 89.90 |
把按日金额相加,再把分类金额相加,两者都应等于 ¥2880.50。每笔均值按“2880.50 ÷ 15”计算后四舍五入到分;它不能用来说明有多少客户。看到某天柱形较高,也只能说明这份输入中的金额较高,不能直接归因于营销活动。
第 7 步:换成自己的表格,再处理具体错误
复制自己的 CSV 为一个新文件,保持三个字段和单位一致,再换一份输出名称运行。完全重复的数据行会照常累计;是否存在重复流水,需要你从业务来源核对,程序不会猜哪一条该删除。
参考脚本限定单文件 5 MiB、最多 50000 条流水,区间最多 31 个自然日,完整字段规则见 README。分类超过 10 个时,图中保留前 10 类并合并其余类别,分类表仍显示全部。
命令提示找不到文件时,先检查当前目录与完整文件名;缺少参数时补齐四项;输入校验失败时按错误给出的 CSV 行号修正,不要让 Codex“跳过有问题的行”。金额不要带 ¥、千位分隔符或公式,日期不要写成 10/26。如果只有输出文件重名,改输出名称即可,不必删除旧报告。
反馈给 Codex 时写清楚“第几行、实际输入、期望行为”。例如:“日期区间外的一行金额是 NaN,程序也应拒绝整份文件,不能先过滤再忽略。”真实业务数据先去掉不需要的客户信息;你交给 Codex 的内容会经过配置的服务链路,本地生成的 HTML 也会包含所选流水,不要随意公开。
最后检查四件事:首尾日期都计入;总额与两张图的汇总能对上;错误数据不会生成半份报告;旧输出不会被覆盖。本文不提供真实模型调用的耗时或费用结论,Codex 使用费用以调用记录和模型价格页为准。把一份已核对的 CSV 跑通后,再决定是否让 Codex 增加同比、退款或更多业务字段。