ERP 与运营小型生产商的制造 ERP:BOM、工单和批次追溯,不必付企业级价钱
小型生产商如何从表格走向多层级 BOM、带物料检查的工单、计入损耗的成本核算和批次追溯。以 100 罐润肤膏为例,从配方算到单位成本 $3.56。
覆盖销售、运营和财务的十二个 KPI,每个都有公式、负责人和查看频率。附一整个月的算例、看板设计规则,以及某个数字变红时该怎么做。
Author
Anichur Rahaman

周一早上 8:40。一家小型零售商,一个网店加一间门店,店主同时打开三张表格和银行 App。门店导出的数据说 9 月销售额是 52,000,会计说是 51,300,快递后台里“延误包裹”的数字又是另一套。一周的头一个小时,都花在对账上,决策还没轮到。
到 9:45,她手里有了一个只信一半的数字,也不清楚该改什么。这个场景是虚构的,但情形很常见:公司不缺数据,缺的是对“数字到底指什么”的统一口径。
本文的观点是:十二个 KPI 就够了,前提是每个指标都有唯一的公式、唯一的负责人和唯一的数据来源,并且全部放在同一页上。下面依次讲指标定义、一整个月的计算过程、让看板天天有人打开的设计规则,以及某个指标变红那天该怎么办。
大多数看板都是同一种死法。有人一时兴起做了四十张图。一个月后,两张图显示的销售额不一样,因为一张按下单时间算,另一张按付款时间算。没人说得清哪个对,大家又回到各自的表格里。
问题不出在画图工具,而在于 KPI 从来没有被写成一段查询或代码:统计什么、统计哪个周期、取自哪张表、排除哪些情况。口径只存在于某个人的脑子里,每次导出的数字就会略有出入。
办法朴素而有效。每个 KPI 由一条有名字的查询计算,查询直接跑在记录业务事件的系统上:订单、库存变动、配送和会计分录。每晚(或每小时)一个任务把结果写进快照表,每个 KPI、每个周期一行,例如 kpi_id = fill_rate, period = 2026-09, value = 94.0, definition_version = 2。看板只读这张表。
definition_version 这一列比看上去重要得多。退货率的算法一旦调整,旧月份仍保留旧版本,图上能看出断点。没有它,改口径会悄悄改写历史,趋势就没人再信了。如果订单、库存变动和会计分录都写在同一个数据库里,这件事会容易很多,因为 KPI 查询是在关联数据表,而不是在对账文件;StoreConsole 的库存部分就是这样设计的。
滞后指标告诉你已经发生了什么:销售额、毛利率、现金。先行指标先动,并预示前者:转化率、库存准确率、订单满足率。只看滞后指标的看板像后视镜;只看先行指标则是猜测。两类都要,而且要串起来。
串联的方式是一棵树。最上面是利润,往下分成毛利率和销量,每一支继续往下分,直到分出某个人本周就能动手改的驱动因素:一个落地页的转化率、整单发出的订单占比,或者一批货压了多少天没卖掉。

这棵树还能避免一个常见错误:盯着没人能影响的数字。树上找不到通往利润或现金的路径的指标,只是装饰。
十二是上限,不是目标。它们覆盖销售、运营和财务,对拥有一家到几十家门店的企业足够用。
| KPI | 公式 | 频率 | 负责人 |
|---|---|---|---|
| 净销售额 | 销售额减折扣和退货 | 每日 | 销售负责人 |
| 转化率 | 订单数 ÷ 会话数 | 每日 | 电商负责人 |
| 客单价 | 净销售额 ÷ 订单数 | 每日 | 电商负责人 |
| 复购率 | 此前买过的购买客户 ÷ 该周期全部购买客户 | 每周 | 市场 |
| 库存准确率 | 盘点结果与系统一致的品项 ÷ 盘点品项总数 | 每周 | 库存经理 |
| 订单满足率 | 首次发货即齐全的订单 ÷ 收到的订单 | 每日 | 运营负责人 |
| 准时送达率 | 在承诺日期前送达的订单 ÷ 已送达订单 | 每日 | 运营负责人 |
| 退货率 | 退回件数 ÷ 售出件数 | 每周 | 运营负责人 |
| 毛利率 | (净销售额 − 销售成本)÷ 净销售额 | 每周 | 财务 |
| 现金转换周期 | DIO + DSO − DPO | 每月 | 财务 |
| 应收账款周转天数 | 应收账款 ÷ 赊销额 × 周期天数 | 每月 | 财务 |
| 现金可支撑月数 | 现金余额 ÷ 每月净现金消耗 | 每月 | 老板 |
订单满足率和库存准确率最常被漏掉,却最能解释后面的许多麻烦。一家发不出已售商品的店,早在出现客服问题之前,就已经有库存准确率问题了。
举一个虚构的例子:一家小型零售商的 9 月,以美元计。数据是编的,但内部自洽,下面每个数字都可以手算验证。
| KPI | 算式 | 结果 | 目标 |
|---|---|---|---|
| 转化率 | 1,000 ÷ 40,000 | 2.5% | 2.4% |
| 客单价 | 52,000 ÷ 1,000 | 52.00 | 52.00 |
| 复购率 | 312 ÷ 780 | 40.0% | 38% |
| 库存准确率 | 368 ÷ 400 | 92.0% | 97% |
| 订单满足率 | 940 ÷ 1,000 | 94.0% | 96% |
| 准时送达率 | 864 ÷ 960 | 90.0% | 92% |
| 退货率 | 168 ÷ 2,400 | 7.0% | 6% |
| 毛利率 | (52,000 − 33,800)÷ 52,000 = 18,200 ÷ 52,000 | 35.0% | 36% |
| 库存周转天数(DIO) | 67,600 ÷ 33,800 × 30 | 60 天 | 55 天 |
| 应收账款周转天数(DSO) | 6,000 ÷ 12,000 × 30 | 15 天 | 15 天 |
| 应付账款周转天数(DPO) | 25,350 ÷ 33,800 × 30 | 22.5 天 | 25 天 |
| 现金转换周期 | 60 + 15 − 22.5 | 52.5 天 | 45 天 |
| 现金可支撑月数 | 54,000 ÷ 6,000 | 9.0 个月 | 9 个月 |
不妨用老板的眼光读这张表。转化率和复购率都超过目标,说明需求没问题。有六项没达标,其中四项是同一条链上的环节:库存准确率、订单满足率、退货率和现金周期。盘点有 8% 对不上,就意味着有些订单货架上其实没有货,订单满足率于是掉到 94%。这些订单要么晚发、要么少发、要么发不出去,随后就是退货。与此同时,价值 67,600 的库存压了 60 天,现金转换周期停在 52.5 天,而不是目标的 45 天。改好一个输入,几个输出会一起动,而这棵树会告诉你先改哪一个。
关于现金周期还有一点:DIO 和 DPO 以销售成本为基数,DSO 以赊销额为基数,三者用的周期都是同样的 30 天。周期或基数混用,是得出“看起来合理却是错的”答案最常见的原因。
十二个数字一屏就放得下。剩下的功夫,在于每张卡片展示什么。

红色必须有含义,看板才有用。动手之前先问一句:是数字错了,还是生意出了问题?
先查数据管道。夜间任务跑了吗?有没有哪个渠道掉出了数据源?口径有没有变过?订单满足率一夜之间从 94% 跌到 61%,多半是数据源坏了,不是仓库出了大事。数据没问题,说明变化是真的,这时要写下四件事:负责人、原因、措施和复盘日期。没有复盘日期的红色卡片,两周没人看,自己就会变成黄色。

回到 8:40 的店主。快照表已经上线,她只打开一个页面。销售额 52,000,与会计看到的相同,因为两边读的是同一批订单。六张卡片是红的。订单满足率 94%,目标 96%,下钻列表里有 60 个发货不齐的订单,其中 41 个涉及同样的六个 SKU。
原因是库存准确率,所以措施由库存经理负责:把这六个 SKU 重新盘点,周五复盘。会议十五分钟就结束了。过去用来对账的那一小时,现在花在这六个 SKU 上。
Anichur Rahaman 是一名软件架构师,也是 StoreConsole 的创建者。他为成长型企业设计电商与 ERP 系统,专注于事件驱动架构、数据完整性和自托管部署。
About the Author
Anichur Rahaman
Continue Reading