盘点差异侦探
> 一句话:账面表和实盘表丢进来,告诉你差异是多少、差在哪、为什么差、谁去查。
这个技能在解决什么
绝大多数门店盘完点只得到一句「亏了多少」,然后就没了。店主拿着一张差异总额不知道:
- 差异集中在哪些 SKU、哪些品类——是全面失血还是个别漏洞
- 差异是怎么造成的——串码、漏录单据、收货没入账、真丢了,原因不同药方完全不同
- 下一步谁去干什么——没有行动清单的盘点等于白盘
本技能把「对账 + 归因 + 复盘」合成一条流水线,输出的是可执行的核查动作,不是一张差异表。
场景 A:账实对账(count_variance.py)
输入两个 CSV(账面库存、实盘数据),或一个同时含账面/实盘数量的 CSV。列名中英文都认:
商品编码/SKU、品名/名称/name、账面数量/book_qty、实盘数量/counted_qty、单价/成本价/unit_cost/cost、品类/类别/category、门店/store。
python scripts/count_variance.py --book book.csv --count counted.csv --output variance.json --out-csv variance.csv --html 盘点差异看板.html
产出:
- 逐 SKU 差异数量、差异金额(盘盈为正、盘亏为负)
- 净差异额、损耗率(净盘亏 / 账面总货值)与红黄绿判定(阈值为零售常见参考:低于 0.5% 绿、0.5%–1% 黄、高于 1% 红,可用
--warn--crit自定义) - 按品类 / 门店汇总,Top 大额差异排序
--html直接生成离线看板
场景 B:差异归因(variance_reason.py)
读场景 A 的输出(或直接传两个原始 CSV),用规则引擎给每条差异标注疑似原因 + 置信度 + 核查动作:
| 信号 | 疑似原因 | 建议动作 |
|---|---|---|
| 同品类相邻 SKU 一正一负、金额对冲 | 串码/错码收发货 | 核对两 SKU 近期出入库单据 |
| 盘亏数量大且为整数倍 | 单据漏录/未过账 | 补查销售单、调拨单、报废单 |
| 盘盈 | 收货多收未入账 / 客退未登记 | 核对收货单与退货登记 |
| 高货值 SKU 盘亏 | 高价值丢失 | 调监控、查内盗、查试衣间/仓库死角 |
| 低货值且数量差 1–2 | 计量或录入误差 | 抽查复核即可,不必立案 |
python scripts/variance_reason.py --variance variance.csv --output reasons.json
# 或直接从原始表一步到位
python scripts/variance_reason.py --book book.csv --count counted.csv --output reasons.json
场景 C:复盘看板与行动清单(audit_board.py)
读归因结果,产出:
- HTML 复盘看板:损耗率健康度红黄绿、Top 差异榜、归因分布(串码几条、漏录几条、丢失几条)、行动清单
- CSV 行动清单:每条差异 → 核查动作 + 建议责任人(收货组/店长/仓管/安保)+ 建议期限
python scripts/audit_board.py --reasons reasons.json --html 盘点复盘看板.html --out-csv 行动清单.csv
场景 D:一次跑完
python scripts/audit_board.py --book book.csv --count counted.csv --html 盘点复盘看板.html --out-csv 行动清单.csv
--demo 可用内置演示数据先看效果:python scripts/audit_board.py --demo --html demo.html
场景 E:实操建议(零售老手经验)
- 先看净差异额排序而不是差异数量排序——管理注意力要花在钱多的地方
- 串码对冲后往往"账面好看",务必先跑归因再看总额,否则会漏掉系统性收发货问题
- 损耗率红线的合理阈值随品类浮动:服装 0.5%–1%、便利店 1%–2%、生鲜更高;阈值要在本店历史数据上校准
- 盘盈不是好事——盘盈通常意味着另一处有更大的盘亏没被发现(收货流程失控)
- 行动清单必须落到人和期限,复盘会只过红黄两项
边界与数据安全
- 全部本地运行,零联网、零数据上传
- 只做差异分析,不替你下"有人偷东西"的结论——归因是线索,核实靠人和单据