← 返回文档索引

库存台账系统设计文档

来源:大头哥前期研究成果
整合日期:2026-05-16
用途:SietaData 数据分析系统的库存模块底层数据模型


1. 系统目标

2. 数据来源与生成频率

2.1 周快照

2.2 日报表

2.3 其他业务数据(可选)

3. 数据库设计

3.1 商品表(product)

字段 类型 说明
sku_id TEXT PRIMARY KEY 商品编码
name TEXT 商品名称

3.2 库存快照表(inventory_snapshot)

字段 类型 说明
snapshot_week TEXT 快照日期(周日日期,格式 YYYY-MM-DD)
sku_id TEXT 商品编码
qty REAL 该周日 24:00 的库存数量

主键:(snapshot_week, sku_id) 唯一确定某周某商品的快照库存

3.3 库存变动流水表(inventory_ledger)

字段 类型 说明
change_date TEXT 变动日期(YYYY-MM-DD)
sku_id TEXT 商品编码
change_type TEXT 变动类型(见下方枚举)
delta_qty REAL 变动数量(入库/退货为正,出库/销售为负)
ref_id TEXT(可选) 关联单据号
remark TEXT(可选) 备注

索引:(change_date, sku_id) 加速按日期和商品查询

变动类型枚举:

类型 含义 delta_qty 符号
sale 销售出库 负数
return 销售退货 正数
purchase 采购到货 正数
adjustment_in 盘盈 / 库存调增 正数
adjustment_out 盘亏 / 库存调减 负数
transfer_in(可选) 调拨入库 正数
transfer_out(可选) 调拨出库 负数

4. 每日数据处理逻辑

4.1 数据准备

4.2 计算步骤

  1. 写入销售流水:遍历每个 SKU,若今日销售数量 > 0,则插入一条 sale 记录,delta_qty 为负。
  2. 计算非销售净变动
  3. 净变化 = 今日库存 - 昨日库存
  4. 非销售净变动 = 净变化 + |销售出库|
  5. 处理非销售净变动
  6. 若为非零正数:说明库存因"非销售"原因增加(可能是到货、退货或盘盈)。默认记为 adjustment_in(或根据业务习惯记为 purchase,后续可修正)。
  7. 若为非零负数:说明库存因"非销售"原因减少,记为 adjustment_out。
  8. 若有额外信息可在此步骤中将对应的 adjustment_in 手动修改为 purchase 或 return。

4.3 周快照生成

5. 查询任意一天库存的方法

  1. 找到目标日期 T 之前的最近一个周日快照日期 S(S <= T 且为周日)。
  2. 计算该 SKU 在 T 日的库存: T日库存 = 快照中该SKU的数量 + Σ(从 S+1 到 T 所有该SKU的 delta_qty 之和)
  3. 可使用 SQL 直接聚合得出,索引加持下查询极快。

6. 服务器资源评估

7. 维护与扩展建议

8. 术语说明


与 SietaData 系统的关系

此设计是整个数据分析系统的数据基座

ERP 邮件 xlsx → 日报表/周快照 → inventory_ledger → 库存台账查询
                                                    ↓
                                             销售分析、经营建议

设计要点: - 数据源是 oupu 每天 24:00 自动生成的全量库存 + 销售汇总 xlsx - 通过邮件接收(himalaya),跑 pipeline 脚本入库 - 库存台账是底层数据服务,上层分析报表(日报/周报/月报)依赖它获取任意日期库存 - 销售分析直接依赖 inventory_ledger 中的 sale 记录 - 数据分析阶段先走 ana 大模型分析产出洞察,稳定后转纯脚本