未知库存不等于 0

WEOUR OS 的核心原则:未初始化与未上报的库存不等于 0,而观测库存永远不是中央库存。

这条规则对 WEOUR OS 的影响比其他任何规则都大,所以它值得单独一篇。

NOT_INITIALIZED
系统从未被告知这里有什么
NOT_REPORTED
一个通常会上报的来源没有上报
ZERO
我们知道,来自某个确定来源、在某个确定时间,数量为零
观测库存
渠道或仓库上报的内容,作为证据被保存
中央库存
WEOUR 在核对之后,决定下来的那个事实

这是五件不同的事情。把它们压进同一列的"简化系统",并没有更简单——它只是无法告诉你,一个数字为什么是这个数字。

为什么"未知"不能变成"0"

0 是一个断言。它表示某个可计数的数量确实为零。当系统没有任何信息时,写入 0 会把一个未知事实伪装成已知事实,而后续每一个决定都会继承这个偏差:

  • 商城把某个商品标记为不可售,不是因为货没了,而是因为一次上报失败了。
  • 补货规则因为一个并不存在的缺货被触发。
  • 一份核对报表显示出的差异,其实是缺失的数据源,团队花一整天去追一个不存在的问题。

这些现象看起来都不像 bug,它们看起来就像正常数据。

我们如何表示它

未设定的库存状态以显式状态存储,而不是以数字存储。状态是模型的一部分:

  • NOT_INITIALIZED —— 记录存在,但从未有来源提供过值。
  • NOT_REPORTED —— 某个来源本应上报,但还没有上报,或者上报失败。
  • 一个数值 —— 一个真实的断言,永远带着它的来源和观测时间。

展示层可以友好,但存储层不允许猜测。

观测库存不是中央库存

这条原则的另一半是:观测值永远不会因为"顺手"而变成台账。

每个平台、每个仓库都会上报一些内容,而这些上报回答的是不同时间点上的不同问题。观测库存是我们被告知的内容;中央库存是 WEOUR 在核对了观测值、实盘结果和已知缺口之后,决定下来的事实。

把这个边界保持明确,正是多店铺销售能够诚实运作的原因:五个店铺都可以上报自己看到的结果,而不会有一个店铺在暗中改写 WEOUR 实际拥有什么。

它的代价,以及我们为什么愿意承担

这条原则并不方便。它意味着更多的状态、更显式的处理,以及更少可以用默认值悄悄填坑的地方。它意味着仪表盘必须显示"未知",而不是显示一个让人安心的 0。

我们承担这个代价,因为另一种选择是一套"自信地出错"的操作系统。一套 Commerce OS 的可信度,来自它知道自己不知道什么——并且把这件事写在数据库里,而不只是写在界面上。

NOT_INITIALIZED ≠ 0。NOT_REPORTED ≠ ZERO。观测库存不是中央库存。

WEOUR / BUILD

参与构建

如果你正在处理真实的跨境贸易、库存、仓储、履约或自动化问题,可以把需求告诉我们。

提交需求 关注 WEOUR / 交流入口 —— 即将开放