把 CSV 交给 AI,几分钟就能得到一张带指标、柱状图和明细表的网页看板。但页面好看,不代表数字算对了:本次本机实测中,Qwen 保留了每一行金额,却把总销售额和日汇总算错。下面用一份全虚构的 8 行订单,演示如何生成页面并逐项核数。

先定口径,再交数据

示例数据只有日期、商品、数量和单价。每行金额按“数量 × 单价”计算;总销售额是各行金额相加;总售出件数是数量相加。这里没有退款、优惠、税费、运费或成本,所以销售额不等于利润,也不能直接代表可结算收入。

练习数据和提示词放在数据看板练习包。所有商品、日期和数字均为虚构。真实业务表可能带有客户、员工或订单标识;先按单位的数据规则脱敏,并确认所用模型获准处理这些数据。若不确定,就只使用虚构样例。《个人信息保护法》第 5—7 条规定,个人信息处理应遵循合法、正当、必要和诚信原则,目的应明确、合理并与处理直接相关,收集限于最小范围且处理规则公开透明。查看法律全文。本文是数据练习,不判断具体业务是否合规。

让模型生成一份可离线打开的页面

在已获准使用的 Qwen 环境中,把 sales_sample.csv 和 prompt.txt 一起交给模型。练习提示词要求输出单文件 HTML:用 CSS 画 4 根日销售额柱形图,列出 8 行明细,并注明样例数据为虚构、销售额不等于利润。页面不使用 JavaScript、CDN、远程字体、图片或网络请求,保存后可直接用浏览器打开。

本机 Ollama 的 Chat API 接收 model 和 messages 等字段,响应中提供输入、输出 token 统计;Qwen3.8 模型页列出了该模型及本地运行示例。若机器已经安装并获准使用该模型,可在本地生成;没有可用模型时,不要为了完成这次练习临时下载模型,也不要把真实内部数据发给未批准的在线服务。Ollama Chat API · Ollama 上的 Qwen3.8。

生成后把完整 HTML 保存为 index.html,在浏览器中打开。练习包里的 index.generated.html 保留了本次未经修改的模型原稿;index.html 是人工核对并修正指标后的版本。两份文件都保留,便于比较模型输出与复核结果。

按明细重算汇总

先回到 CSV 逐行核对日期、商品、数量、单价和行金额,再分别按日和按商品求和。不能只看卡片上的总数,也不能因为柱形图看起来合理就略过计算。

本例的核对结果是:8 行明细、86 件商品、总销售额 ¥2,794.00;4 天的销售额依次为 ¥668.00、¥665.00、¥760.00 和 ¥701.00。练习页面的合计、表格和柱形图标签都应与这些数值一致。需要改数据时,先重算预期值,再核页面;若口径加入退款或税费,也要先写清楚怎么算。

练习包提供了标准库脚本 verify_dashboard.py。在解压后的练习目录运行:

python3 verify_dashboard.py

脚本会从 CSV 重算合计和分组金额,逐行比较 HTML 表格,并检查图表标签和外部资源引用。它只检查这份固定样例页面;不能替代对新字段、新口径或真实业务数据的审阅。

本机实测:行金额正确,汇总仍然错了

环境为 Apple M1 Max 64GB、macOS 27.0.1、Ollama 0.35.1 和本机 qwen3.8-27b:latest。第二次生成用时 118.34 秒,输入 436 tokens、输出 1,532 tokens;本次使用已有模型,没有下载模型。首次生成因输出长度限制被截断,因此缩短了提示词后重试。

第二次结果生成了完整页面,8 行金额都正确,但汇总卡写成 ¥2,448.00 和 106 件,按日柱形图也不匹配 CSV。人工从原始表重算后,将页面修正为 ¥2,794.00、86 件和四个正确的日金额,再用脚本核对通过。这次实测说明,模型能生成可用的页面骨架,却不能替代数字校验;尤其不能把销售额标签误当成利润。

封面背景由本机已安装的图像模型生成,未下载模型。本文页面没有登录、权限、自动同步或数据上传功能,不能直接作为正式经营系统使用。发布到公众号或其他渠道时,按平台要求声明 AI 生成内容;封面上的标识不能代替平台原生声明功能。