我做了一套预测系统,但它还没上线——聊聊数据工作的第一性原理
我做了一套销售预测与库存计划系统,取名叫“天枢”。它目前还没有上线,代码躺在我的 SQL Server 里,存储过程跑得通,模型竞赛的结果也不错,但离真正接入企业的 ERP、让计划员每周用它来下需求单据(预测单及采购申请单),还有一段路要走。
一、为什么做它?
- 一个优秀的计划员很难培养出来。计划工作不是简单的“看看上个月卖了多少,这个月大概也卖这么多”,更不是来单了再安排。它需要理解产品的生命周期、季节波动、促销节奏、供应商的交货能力、以及缺货和积压之间的微妙平衡。这种能力需要多年经验积累,而且很难用语言传授给新人。很多企业里,真正懂计划的可能就那么一两个人,他们一旦离职,整个供应链的运转就会受到严重影响。
- 一般的 ERP 系统不支持计算预测。ERP 擅长的是“记录”——记录订单、记录库存、记录出入库流水。但它不擅长“预判”——它不会告诉你明天该备多少货,更不会自动判断哪个预测模型最适合这个产品。很多计划员只能把 ERP 里的数据导出到 Excel,凭经验手动调整,再把结果导回去。这个过程不仅低效,而且极度依赖个人经验。
这两个问题,本质上是一个问题:企业缺少一套标准化的、不依赖个人的计划工具。AI Agent 看起来能解决这个问题,但实际上,它常常是“把数据扔进去,等一个答案出来”,中间的逻辑是黑的,错了也不知道怎么改。一个无法被理解的黑箱,是无法被调教的——你没法告诉它“下次遇到这种情况应该那样处理”,因为它连自己为什么这么做都解释不了。只有能被理解的,才能被调教。
而我一直相信一件事:
数据的处理始于清洗,终于洞察;而洞察的终点,一定是讲好一个让干系人听得懂且用得上的故事。不被理解的洞察带不来支持。
这是我的数据工作第一性原理。
天枢系统的设计,就是从这个原理倒推出来的:每一步都要透明、可解释、可追溯。它不是一个黑箱,而是一本摊开的账本——你可以追到任何一个预测数字的来源,也可以在任何一个环节说“这里我不信,我改”。
二、为什么不用 AI Agent?
现在 AI 很火,特别是 AI Agent。它们能直接连数据库,自动写 SQL,自动画图表,甚至自动给建议。听起来很强大,但它们有三个致命问题:
- 消耗 token。每次查询都要消耗 token,量大了成本不低。
- 机器幻觉。AI 可能会编造一个看起来合理但实际上不存在的数据,你还很难发现。
- 逻辑不可控。AI 的推理过程是隐式的,你不知道它为什么选这个模型而不是那个,为什么给出这个数而不是那个数。
天枢系统选择了一条“反方向”的路:纯 SQL 实现核心算法。数据清洗、物料分层、九大模型竞赛、批量预测、库存计划,全部封装在存储过程中。每一步都是确定的、可复现的。你可以把存储过程打开,一行一行看它做了什么。
相对于 AI Agent,这套系统的优势在于:清晰易懂、逻辑可控、不消耗 token、不会出现机器幻觉。
三、天枢做了什么?
天枢的核心逻辑很简单:用历史数据加数学模型,代替人工经验猜测,输出未来 7 天的销量预测和补货建议。
它分六步走:
第一步:数据清洗。 清洗的第一步不是处理数据,而是确认数据的来源。需求的真实记录,是客户下达的销售订单,而不是仓库最终发出的销售出库单。如果一个订单因为缺货没有发出去,在出库单里它就是零,但在订单里它依然是真实的需求。如果预测模型看到的永远是“被库存能力过滤过的需求”,它就会误以为需求在减少,进而建议更低的库存,最终陷入恶性循环。所以,天枢的清洗流程始于一个基本原则:从订单取数,还原客户真正想要什么。
确定了源头之后,系统会自动识别那些干扰判断的异常值——比如促销囤货造成的销量暴增、退货冲销造成的销量暴跌、以及录入错误产生的离谱数字。这些异常值会被标记出来,但不自动删除。所有标记都交给人工审核,由计划员决定剔除还是保留。
清洗的目的不是把数据弄干净,而是还原可重复的需求历史。
第二步:物料分类。 根据零值占比、数据天数、变异系数,把产品分成四类:A 级(爆款)、B 级(腰部)、C 级(稀疏)、I 级(长尾)。不同类的产品,后面用不同的预测方法和库存策略。这是天枢的“分而治之”原则:没有一种方法能通吃所有产品。
第三步:模型竞赛。 系统内置了九种预测模型,覆盖五大模型族——移动平均、指数平滑、季节模型、间歇性需求、朴素基线。每次预测时,用最近 30 天数据作为“考场”,让所有模型在上个月的数据上比赛,选出 MAPE 最小且没有系统性偏差的那个,作为这个产品本周的“冠军模型”。
第四步:批量预测。 冠军模型上岗,预测未来 7 天的销量,同时给出 80% 预测区间(即未来实际销量有 80% 的概率落在这个范围内)。区间窄 → 直接采用;区间宽 → 建议人工介入。
第五步:库存计划。 预测回答的是“卖多少”,库存计划回答的是“备多少、何时补、补多少”。天枢用安全库存公式自动计算两个关键数字:安全库存(为需求和供应的意外波动准备的缓冲垫)和订货点(库存降到多少就该下单)。安全库存 = Z × σ × √(L+R),其中 Z 是服务水平系数,σ 是预测误差的标准差,L 是采购提前期,R 是补货周期。这个公式的核心思想很简单:需求越不稳定、供应商越慢、补货间隔越长,安全库存就要越高。对于长尾产品,标准公式会失效,系统会自动切换到泊松分布法或历史最大单次需求法,甚至直接建议“按单采购、不备库存”。
第六步:导出到 ERP。 一键生成金蝶预测单和采购申请单模板,计划员检查后直接导入金蝶,完成闭环。
四、一个最重要的设计铁律
天枢系统在选模型的时候,有一个铁律:
一个好预测最重要的两点是——准确度高、没有系统性偏差。两者缺一不可。
如果只看 MAPE(平均绝对百分比误差),很容易选出一个“总是高估 5%”的模型——它看起来很准,但长期下来会让你多备 5% 的库存。这种模型不能用。
所以天枢在模型竞赛中,除了 MAPE 还要看 ME(平均误差)。如果一个模型总是偏在一边,MAPE 再低也会被淘汰。
这是天枢系统最核心的设计原则,也是它与“把数据扔进去自动选模型”的最大区别。
五、天枢系统说明书
5.1 系统概述
天枢系统是一套基于 SQL Server 的销售预测与库存计划引擎。它从 ERP 系统(金蝶云星空)获取历史销售订单数据,自动清洗异常值,对物料进行分层,然后用九种预测模型同时竞赛,为每个产品选出当月最优的预测方法,输出未来 7 天的销量预测和安全库存建议,最终将预测单和采购申请单导出至金蝶,完成从数据到决策的闭环。
5.2 系统定位
本系统是一个标准化、数据驱动、可追溯、可复盘的计划工作平台。
5.3 整体架构
金蝶ERP(销售订单)
│
▼ 只读视图
天枢数据库(SalesForecast)
│
├── 数据清洗 → 异常值检测与人工审批
├── 物料分层 → A/B/C/I 四级标签
├── 模型竞赛 → 9种模型验证,自动择优
├── 批量预测 → 冠军模型预测未来7天
├── 库存计划 → 安全库存、订货点、补货建议
└── 导出模板 → 金蝶预测单 + 采购申请单
5.4 核心数据表
| 表名 | 用途 |
|---|---|
SalesClean | 清洗后的历史销售数据 |
MaterialTier | 物料分层标签(A/B/C/I) |
MaterialInventoryParams | 库存参数配置 |
ModelErrorLog | 模型验证误差记录与冠军模型标记 |
ForecastResult | 未来7天销量预测结果 |
InventoryPlan | 安全库存、订货点、补货建议 |
DataCleansing_Log | 异常值检测日志与处理状态 |
SystemConfig | 系统全局参数配置表 |
5.5 核心存储过程
| 存储过程 | 功能 |
|---|---|
sp_DataCleansing | 数据清洗与异常值标记 |
sp_BatchValidateAllMaterials | 九大模型批量验证与择优 |
sp_BatchForecastAllMaterials | 用冠军模型批量预测 |
sp_GenerateInventoryPlan | 生成库存计划(含长尾特殊处理) |
5.6 九大预测模型
| 模型族 | 模型 | 适用场景 |
|---|---|---|
| 移动平均系 | 简单移动平均 (SMA) | 平稳需求 |
| 加权移动平均 (WMA) | 需求有惯性 | |
| 指数平滑系 | 一次指数平滑 (EMA) | 无趋势平稳需求 |
| 双参数指数平滑 (Holt) | 有趋势的产品 | |
| 季节模型系 | 温特斯法 (Holt-Winters) | 有明显季节性 |
| 间歇需求系 | Croston 方法 | 长尾冷门产品 |
| SBA 修正法 | 同上,去偏修正 | |
| 朴素基线系 | 保底-上周同天法 | 强周规律产品 |
| 保底-月均法 | 数据极稀疏时兜底 |
5.7 长尾产品的特殊处理
对于零值占比超过 40% 的长尾产品,标准安全库存公式不再适用。系统会根据严重程度自动选择:
| 零值占比 | 策略 |
|---|---|
| 40%~60% | 泊松分布法 |
| 60%~90% | 历史最大单次需求法 |
| 90%以上 | 不备库存,按单采购 |
5.8 配置驱动
所有系统参数统一存储在 SystemConfig 表中:IQR 系数、Z-Score 阈值、MAPE 阈值、默认服务水平、默认提前期和补货周期……一切皆可配置,不硬编码。
5.9 系统边界
- 数据要求:最少 30 天历史数据;新产品通过产品继承关系冷启动
- 计算限制:Holt-Winters 需借助外部工具(Python / PostgreSQL PL/Python)
- ERP 对接:导出模板匹配金蝶数据引入平台标准,也可通过 Node-RED + API 全自动同步
- 解耦原则:天枢与金蝶生产库物理隔离,只读视图取数
六、写在最后
我一直相信一件事:商业问题的本质是寻求更好,而不是最好的方案。
天枢系统目前还处于“设计蓝图”阶段,代码写了,逻辑通了,但还有很多事情要做——前端控制台、企业级部署、真实数据验证。但它的核心已经证明了:用最基础的 SQL,配合清晰的逻辑和可解释的设计原则,完全可以做出一套不输 AI Agent 的智能预测系统。
天枢系统不是替代计划员的经验,它能做到的是让企业的计划工作拥有一个标准化的平台。对于很多从未建立过正式计划流程的企业来说,天枢的意义在于:快速搭建一套可运转的预测与库存管理体系,让计划工作先达到一条及格的基准线。在此基础上,每一个库存决策,都有数据驱动的、可追溯的、经得起复盘的计算依据。
如果你对这套系统感兴趣,或者你的企业正在寻找一个透明可控的预测工具,欢迎找我聊聊。