经营会前一晚,你让 AI 算上月毛利率,它给了 38.2%,你写进了汇报页。第二天老板问:这个含不含运费?你回到工位,用同一份数据、同一句话重跑一遍,出来 35.6%。两次都答得干干净净,带着百分号,一次也没说自己是怎么算的。
你很容易从这一刻起认定 AI 不稳定。其实两次它都没算错,只是各挑了一套算式。差出来的那 2.6 个点,出在你没写下来的那部分。
一个词,好几套算式
毛利率在业务里本来就没有唯一定义。扣不扣运费、扣不扣平台佣金、分母含不含税,处处是岔路。回款率也一样:月会上报 60%,财务说只有 30%,谁也没算错,一个数的是单,一个数的是钱。账龄从哪天起算,「本月」按业务发生日、开票日还是收款日切,也各有说法。
你不把算式写下来,模型就从它见得最多的那套里挑一个,每次还可能挑得不一样;表格那边,按单数还是按金额只差一个选项,谁顺手选了哪个就报哪个。挑了哪套,输出上一个字都看不出来,格式照样规整,语气照样笃定。口径就这样定了下来,没人拍过板。
算术全对,数照样错
更难查的是下面几种,每一步加减乘除都没错。
率被再平均了一次。 比如六个部门的毛利率顺手取了个平均,报上去 36.7%;财务拿收入合计和成本合计一算,整体只有 12% 出头,因为其中一个部门收入占了九成以上,毛利率只有 10%。比率是已经除过一次的结果,分母丢了:50% 不告诉你背后是一百万还是一万。再平均一次,等于默认每个部门一样大。这个 36.7% 正是表格算的:有人随手点了「平均」,程序就照做了。交给程序算,是「数字全由代码算」那篇讲的;程序执行的算式,也得有人先定下来。没人定,它就按随手选的那套或默认值去算,比如指标卡默认数的是记录条数。
两个「总额」不是一回事。 主表上签约时手填的合同总额,和明细加起来的合计对不上。一个是承诺额,一个是已发生额,本来就不一定相等,差出来的就是还没执行完的那部分。问题出在没人说清哪个是哪个:仪表盘按主表算收入,开票按明细开,两边都觉得自己拿的是对的。
同名列差着一个税。 开票系统导出的「金额」,有的取发票上不含税的金额栏,有的就是价税合计;收款流水里的「金额」是含税的实收。遇上前一种,两张表列名一模一样,放在一起对账,差出来的正好是税额。
含税错位有个好认的指纹:毛利率比自己算的低一截,每个月都低同一个比例。偏差这么整齐,多半是分母用了含税收入:显示的就是真实毛利率除以 1.13(或 1.09、1.06),缩掉一成出头、不到一成、半成多。38% 的毛利率会显示成 33.6% 上下,只差四个多点,别照着 13 个点去找。收入整列都用含税数、成本却不含税,方向就反过来,38% 能变成 45% 左右。先查收入和成本写没写不含税,别先怀疑模型笨。
我们现在的规矩
给一家俄区跨境卖家重算利润时,我们把退货、广告、仓储、汇率逐项落到每一单上,原公式里的漏项当场暴露了出来。现在要出经营数字的看板和 AI 应用,开工先对口径:
- 口径词一律换成算式。 分子取哪几项、分母取哪几项、含不含税、按哪个日期归期,四件事写全;退货、折让、返利、佣金、运费逐项写进不进,不算的也写出来。少写一件,它就替你补一件,补的那件不会出现在输出里。比如毛利率 =(不含税收入 − 不含税成本)÷ 不含税收入,成本含运费、不含平台佣金,按业务发生日归月。
- 表里存原始列,列名带口径。 收入、成本各存一列,毛利率只是一列公式;任何一级汇总都拿该级的收入合计和成本合计现算,不拿比率再算比率。同名的「金额」合并前,先核实口径再改名,比如「开票金额(不含税)」「实收金额(含税)」。
- 固定一列「所属期间」。 月度分组和图表一律按它走。日期是事实,期间是口径,两者不该是同一列。
- 图表标题带算式。 看板指标卡的标题写成「回款率(已收金额 ÷ 已到期应收·含税)」;同一屏两张「金额合计」,一张标「按合同金额(承诺)」,一张标「按已执行金额」。备注和群消息三个月后就找不到了,标题会跟着数字被截图。
- 口径只存一处。 一张口径表,算式只写进程序或表格公式,AI 的说明里只留取数要求,不再抄算式;改口径先改这张表,再核公式和 AI 的说明跟上没有。
- AI 直接报的数附一行算式,只当报警器。 它换了说法一眼能看出来,但写的算式不保证是它真用的;数要稳,还得按上一条交给程序算。
口径没写成算式,AI 和报表就会各给各的答案。
