缺货率分析
昆明分仓 · 周转天数 = 库存数量 ÷ 日均出库数量(数据源:乐檬系统)
--
商品归属(按商品代码)
--
整体缺货率(全量在册 SKU,周转 < 1 天) 食品 = 散称 / 包装 / 饮料 非食 = 粮油调味 / 日化百货
食品(周转 < 1 天)
--
--
非食(周转 < 1 天)
--
--
合计(周转 < 1 天)
--
--
A 类品缺货率(先分食品/非食,再按每个二级品类内配送出货额「前 30% 商品」定 A 类,周转 < 2 天)
食品 A 类(周转 < 2 天)
--
--
非食 A 类(周转 < 2 天)
--
--
A 类合计(周转 < 2 天)
--
--
TOP N 缺货率(周转 < 2 天)
--
--
缺货率对比:食品 / 非食 / 合计(整体 <1天 vs A 类 <2天)
TOP N 周转天数分布(天)
缺货商品明细
--
| # | 商品名称 | 归属 | 食品/非食 | 品类 | 库存 | 零库存(天) | 出库 | 周转(天) | 出货额 | 状态 |
|---|---|---|---|---|---|---|---|---|---|---|
| 加载中… | ||||||||||
计算口径与已知限制
- 周转天数 = 库存数量 ÷ 日均出库数量;日均出库 = 月出库数量 ÷ 天数(当月按已过天数、往月按整月天数)。 出库数量取自「月配送分析·按商品·商品配送数量」,库存取自「库存管理·库存查询」(昆明分仓)。
- 缺货判定阈值(两档): 整体(全部在册 SKU)→ 周转天数 < 1 天 判缺货; TOP N 与 A 类品 → 周转天数 < 2 天 判缺货。
- 整体缺货率(分 2 类 + 合计) = 昆明仓在册 SKU 中周转天数 < 1 天的 SKU 数 ÷ 在册 SKU 数。 ⭐ 食品 = 1 散称 / 2 包装 / 3 饮料;非食 = 5 粮油调味 / 6 日化百货。 冷冻冷藏(一级类别码 4 开头)不计入统计;代码物料(一级码 8)同样剔除;不可采购/已停购商品也不计入分母。
- A 类品缺货率(分 2 类 + 合计) = 先按 食品 / 非食 单独分开,再在各自每个二级品类内按配送出货额降序, 取商品个数前 30% 的商品 = A 类(A 类 = 30% 的商品个数,每个二级品类至少 1 个), 然后计算其中周转天数 < 2 天的商品数 ÷ 该类 A 类品总数。冷冻冷藏、物料不计入。
- TOP N 缺货率 = 配送出货额排名前 N 的商品中,周转天数 < 2 天的商品数 ÷ 可统计商品数(同样剔物料/冷冻冷藏)。
⭐ 白名单强制纳入:门店刚需耗材(零食优选降解购物袋 中号/小号)虽属「物料」类别,
但按用户 2026-09-19 要求纳入 TOP N 统计,不再被类别剔除。名单见
data/shortage_include.json, 改名单后需重启 Flask 并重建本页。并入后 TOP 的「排除」数相应减少;剔除项会照常显示为「强制纳入 N」。 - 统一用「商品代码」:库存表用 9 位「商品代码」;出库数量 / 出货额(月配送)原用「商品编号」(与商品代码零交集), 现经商品名称桥接回商品代码后,全部以商品代码为键关联与聚合(本次出库记录 100% 命中商品代码)。 明细表的「品类」列按一级类别码首位标注(如 食品·散称 / 非食·日化)。
- 商品归属(长沙 / 昆明 / 惠真·长沙 / 惠真·昆明):取自「产品对应归属关系」表,
按商品代码匹配(在册商品命中率 99%+),页面上方按钮可切换区域
(未导入该表时整个归属版块自动隐藏)。
⭐ 口径(用户 2026-09-19 定):切到某区域时,A 类 / TOP N 仍按「全部商品」判定
(全局取前 30% / 前 N),只是把结果按归属拆开显示,不是在该区域内部重新取前 30% / 前 N。
· 原表「分组」的「惠真(长沙/昆明分组)」按用户要求单独作为一类;
「物料」「未分组」不单列按钮,只计入「全部」→ 所以四个区域相加 ≠ 全部。
· 归一规则见
data/owner_group_map.json,归属表数据由python owner_import.py导入。 - 出库口径(用户 2026-09-19 订正):日均出库 = 过去 30 天商品出库数量 ÷ 30(滚动 30 天窗口, 不随当月已过天数变化);库存 = 库存数量。周转天数 = 库存数量 ÷ 日均出库。 ⚠️ 乐檬**没有**商品级的「按日 / 任意区间」配送数量报表(月配送分析的日期控件只有月份面板,切「调出日期」也不变日期范围; 日配送分析虽有「商品配送数量」但**没有「汇总条件」**,只能按门店 × 日)→ 30 天窗口按 「当月出库全量 + 上月出库 ×(窗口内属上月的天数 ÷ 上月天数)」估算,即假设月内日均均匀。 历史月份(非当月)仍按该月整月出库 ÷ 当月天数计算。 出库 / 库存均以采购单位计量(盒 / 包 / 瓶 / 袋 / 公斤),两口径一致直接相除得周转天数。
- 零库存(天) ⭐ 用户 2026-09-28 新增:明细表里的「零库存(天)」= 该商品库存持续为 0 的自然日数。
算法:以最新库存快照日为基准往前回溯,找到上一次有库存(数量 > 0)的快照日,
两者相差的自然日即为持续天数(当天有库存 → 显示
--)。 · 颜色:1–2 天灰、3–6 天橙、 ≥7 天红(越久越紧急)。 · 前缀 ≥ 表示该商品从最早的库存快照起就一直是 0,真实天数可能更长(观测窗口外无法追溯)。 · 库存快照并非每天都有(漏跑的日子无记录),所以天数一律按自然日计算,不是"快照次数"。 · 右上「范围」下拉选 仅库存为 0 的商品 可只列这些商品,并按持续天数从久到近排序; 导出的 CSV 也带「零库存天数 / 零库存起算日」两列。 - 可统计性三态:门店商品属性「允许采购」=是→统计;=否→不统计; =空白→再查商品档案「停购标记」(进销存属性),停购标记为空(否)才统计,已停购→不统计。
- 缺货商品明细表:口径可选 整体缺货 / TOP N / A 类品,另有两条预设—— A 类品 · 食品缺货 与 A 类品 · 非食缺货(选中即自动带上对应食品/非食与「仅缺货」条件,一键筛出); 也可用「食品/非食」与「仅缺货 / 全部已评估」自由组合。归属列与上方「商品归属」按钮联动 (切区域时明细同步收窄)。「导出 Excel/CSV」导出当前筛选结果 (UTF-8 带 BOM,Excel 双击直接打开不乱码);页面表格最多显示前 300 条,导出含全部。