库存快照与事务流水
L0 · 双轨留存:决策日零点快照保证"可复算",库存移动流水保证"可追溯"。快照 + 流水互相校验,任何差异都能定位到具体单据。
决策日快照行数
1,591,400行
门店 1,204,860 + 仓 386,540
已归档快照
92个
保留 24 个月,按月分区
日流水行数
2,148,320行
含销售 119.8 万 + 调拨 1.2 万
流水可复算率
100.0%
快照 = 上期快照 + 期间流水
复算差异行
0行
最近一次复算 10-21 03:00
流水写入延迟 P99
1.2s
CDC → 流水表
决策日快照清单(可回溯 · 用于决策复算)
快照回答了"当时看到的是什么",是决策复算的唯一基线| 快照 ID | 生成时间 | 决策日 | 快照用途 | 门店行数 | 仓库行数 | 合计行数 | 状态 | 关联批次 |
|---|---|---|---|---|---|---|---|---|
| SNAP-20251021-0000 | 2025-10-21 00:00:12 | 2025-10-21 | 决策快照(口径 A) | 1,204,860 | 386,540 | 1,591,400 | 已冻结 | 日常补货 / 区域调拨 |
| SNAP-20251020-0000 | 2025-10-20 00:00:09 | 2025-10-20 | 决策快照(口径 A) | 1,198,240 | 384,120 | 1,582,360 | 已归档 | 日常补货 |
| SNAP-20251019-0000 | 2025-10-19 00:00:14 | 2025-10-19 | 决策快照(口径 A) | 1,201,760 | 385,880 | 1,587,640 | 已归档 | 换店下沉(批次失败) |
| SNAP-20251021-0930 | 2025-10-21 09:30:02 | 2025-10-21 | 巡检快照(口径 B) | 1,206,120 | 386,900 | 1,593,020 | 实时 | 漂移巡检对比 |
| SNAP-20251021-0200 | 2025-10-21 02:00:06 | 2025-10-21 | 执行前基线 | 1,205,480 | 386,600 | 1,592,080 | 已冻结 | 执行后复算对比 |
共 92 个快照 · 按 decision_date 分区,快照生成后不可修改每页
!双轨原则(D4 核心):只有快照无法回溯差异来源,只有流水无法快速取数。快照解决"决策日当时库存是多少"(性能与可复算),流水解决"这个数是怎么变成现在这样的"(因果与追责)。两者缺一,账实一致就无从谈起。
库存移动流水 · 按 SKC + 门店 + 时间查询(示例:近 48h 全部类型)
只增不改不删:任何修正都以红冲 + 重记实现,保证链路可回溯| 发生时间 | 来源单号 | 移动类型 | SKC | 尺码 | 变动量 | 目标对象 | 来源 / 对手方 | 变动后余额 | 决策日归属 |
|---|---|---|---|---|---|---|---|---|---|
| 2025-10-21 09:12:04 | TR20251021-003 | 调拨出库 | 24AW-3714 | M | -1 | 浙江温州五马街店 | 湖北武汉武商摩尔店 | 11 | 2025-10-21 |
| 2025-10-21 09:12:04 | TR20251021-003 | 调拨出库 | 24AW-3714 | S | -1 | 浙江温州五马街店 | 湖北武汉武商摩尔店 | 7 | 2025-10-21 |
| 2025-10-21 08:41:30 | POS20251021-88213 | 销售出库 | 24AW-3182 | M | -1 | 顾客零售 | 浙江杭州武林银泰店 | 19 | 2025-10-21 |
| 2025-10-21 02:40:18 | RC20251021-014 | 补货入库 | 24AW-3405 | L | +2 | 浙江宁波天一银泰店 | 总部仓库 | 8 | 2025-10-21 |
| 2025-10-20 22:16:52 | ST20251020-006 | 盘点调整 | 24AW-3890 | F | -2 | 浙江杭州奥莱店 | 盘点差异单 ADJ-20251020-006 | 0 | 2025-10-21 |
| 2025-10-20 18:03:11 | TR20251020-011 | 调拨入库 | 25SS-1108 | M | +2 | 江苏南京新街口店 | 浙江嘉兴八佰伴店 | 9 | 2025-10-20 |
| 2025-10-20 15:22:47 | RT20251020-002 | 退货入库 | 24AW-3520 | L | +1 | 总部仓库 | 浙江绍兴银泰城店 | 142 | 2025-10-20 |
| 2025-10-20 11:05:39 | ADJ-20251020-002 | 库存调整 | 25SS-1456 | S | +1 | 浙江杭州武林银泰店 | 质检转可售(样衣解锁) | 5 | 2025-10-20 |
| 2025-10-20 09:48:26 | MV20251020-004 | 库位移动 | 24AW-3668 | M | 库位移动 | 浙江杭州奥莱店 · 后仓 A 区 | 浙江杭州奥莱店 · 陈列区 | 6 | 2025-10-20 |
| 2025-10-19 20:31:02 | POS20251019-77140 | 销售出库 | 25SS-1377 | S | -1 | 顾客零售 | 浙江杭州西湖银泰店 | 3 | 2025-10-19 |
共 2,148,320 行(本页展示最近 10 行)· 查询条件:SKC = 全部 / 门店 = 全部 / 时间 = 近 48h每页
快照 = 上期快照 + 期间流水(复算校验)
每天 03:00 自动复算,差异 > 0.05% 触发告警基线 · SNAP-20251020-0000
门店 1,198,240 行 / 仓 384,120 行(已归档)
期间流水 · 10-20 00:00 → 10-21 00:00
入库 +6,120 / 出库 −9,840 / 调拨净 0 / 盘点调整 −42 / 调整 +18
理论快照 · 1,198,240 + 6,120 − 9,840 − 42 + 18
= 1,194,496(门店)
实际快照 · SNAP-20251021-0000
门店 1,204,860 行 → 差异 +10,364 行
差异归因
期间新开 2 家门店(+10,286 行)+ 门店档案新增尺码维度(+78 行),属口径变化非流水缺失
结论
复算差异 0 行(口径调整后),快照与流水自洽
复算差异趋势(近 30 天,%)
复算差异率(%) 阈值 0.05%,当前 0.012%
流水类型定义(6 类,覆盖全部库存变动来源)
同类流水必须共用幂等键规则,否则重跑会产生重复库存动作(详见 data-idempotent)| 流水类型 | 覆盖子类 | 变动符号 | 幂等业务键 | 写入触发点 | 启用 |
|---|---|---|---|---|---|
| 入库 | 采购入库 / 补货入库 / 调拨入库 / 退货入库 / 盘盈入库 | + | 单据号 + 行号 | 入库单签收 | |
| 出库 | 销售出库 / 调拨出库 / 返仓出库 / 报废出库 | − | 单据号 + 行号 | 出库单审核 | |
| 调拨 | 调出方 −qty 与调入方 +qty 同事务写入 | ± | 调拨单号 + 行号 | 双向配对校验 | |
| 盘点 | 盘盈 +qty / 盘亏 −qty,须关联差异单号 | ± | 差异单号 + 行号 | 调整单已记账 | |
| 调整 | 人工库存调整:样衣解锁、坏损降级、库位移动 | ± | 调整单号 + 原因码 | 三级审批 | |
| 修正 | 对历史错误的红冲 + 重记(不删除原流水) | ± | 原流水 ID + 修正原因 | 只增不改不删 |
快照生成策略
- 生成时点
- 决策日 00:00:00 ± 30s
- 冻结范围
- 全量门店 + 全量仓
- 一致性
- 单事务读快照,禁止跨库读
- 保留期
- 24 个月,按月分区
- 复算频率
- 每日 03:00 自动
流水写入策略
- 写入模式
- CDC 增量 + 单据触发双写
- P99 延迟
- 1.2 秒
- 幂等键
- 来源单号 + 行号 (+ 尺码)
- 修正方式
- 红冲 + 重记(不删改)
- 保留期
- 36 个月
查询与取数性能
| 查询维度 | 数据量 | 响应 |
|---|---|---|
| SKC + 门店 + 7 天 | ≈ 2,400 行 | < 300 ms |
| 门店 + 30 天全 SKC | ≈ 186,000 行 | < 2 s |
| 全量快照导出 | 159 万行 | ≈ 46 s |
| 分区裁剪命中率 | 92 个分区 | 100% |
i互链:在途明细见 库存多口径台账(ATP) 盘点差异见 盘点差异与调整单 漂移巡检见 账实对账与漂移巡检