大促后复盘KPI体系 — 售罄率分析/备货vs实销对比/履约回顾/改善行动计划
Skill-PostPromo-Retrospective-KPI · 04-供应链
1. 解决的问题
大促后总结会浮于表面每年重复相同错误——四维系统化复盘(售罄率分级/备货准确率归因/物流履约回顾/改善行动追踪),建立数字化学习飞轮下次大促准确率提升15%
2. 核心算法逻辑
书籍核心洞察(陈凤霞):书中专章阐述大促后复盘的"系统性方法论"——不是简单地看"卖了多少",而是要从售罄率、备货vs实销对比、物流履约回顾、改善行动计划四个维度系统化学习,为下一次大促提供数据支撑。书中特别指出:大促后的日销可能因为爆品售罄而面临断货风险(高售罄率反而是新的问题!)。
3. 业务应用场景
- 业务问题:某卖家Prime Day后开总结会,运营觉得"卖得不错",但没有系统数据支撑,相同的问题每年重复 - 四维复盘应用: 1. 售罄率分析:吸奶器98%(爆款!下次+50%备货);温奶器42%(严重积压→启动清仓) 2. 备货vs实销:预测误差24%(偏低),执行误差8%(轻微)→重点改善预测模型 3. 物流履约:发货及时率94%(Prime Day前20小时跌至65%→人力不足);ODR 1.3%(接近红线) 4. 行动计划:①吸奶器提升预测×1.5;②温奶器启动清仓;③下次大促提前1周招临时工;④优化包装降低ODR - 预期产出:通过系统化复盘建立"数字记忆",下次大促准确率提升
- **业务问题**:Prime Day结束,吸奶器售罄率98%,剩余库存只够3天日销,需要决策是否空运补货 - **书中框架**:售罄率>90%的SKU,大促后立即计算"大促后日销倍数"(大促后日销通常是大促前的1.3-1.8倍),基于此倍数决策紧急补货量
4. 输入数据要求
请查看原始代码模板获取输入规格。
5. 输出结果
请查看原始代码模板获取输出规格。
6. 业务价值 / ROI
- ROI 预估:系统化复盘使下次大促备货准确率提升15%,以Prime Day GMV$20万为例,准确率提升=减少$2万积压+减少$1.5万缺货损失;系统$1.5万,ROI>230%
- 实施难度:⭐⭐☆☆☆(数据全来自大促结果,主要是建立系统化分析流程和行动追踪机制)
- 优先级:⭐⭐⭐⭐⭐(书中专章,每次大促都是宝贵的学习机会,但90%的团队复盘浮于表面,系统化复盘是竞争壁垒)
- 适用规模:所有参与主要大促的卖家
- 数据依赖:大促前备货量、大促期间分时销售数据、物流履约数据(已在大促中收集)
7. 代码模板
代码块数量:1 · 路径:未检测到
"""
大促后复盘KPI体系
基于《全链路管理》陈凤霞 第六章第二、三节
四维复盘:售罄率/备货准确率/物流履约/改善行动
"""
import numpy as np
import pandas as pd
from dataclasses import dataclass, field
from typing import Dict, List, Optional
import warnings
warnings.filterwarnings('ignore')
@dataclass
class PromoOutcome:
"""大促结果数据"""
sku_id: str
abc_class: str
pre_promo_stock: int # 大促前备货量
promo_actual_sales: int # 大促实际销售
post_promo_stock: int # 大促后剩余库存
pre_promo_forecast: int # 大促前预测销售
planned_units: int # 计划备货量(下单量)
unit_margin: float
# 物流数据
dispatch_on_time_rate: float # 发货及时率
order_defect_rate: float # ODR
logistics_cost: float # 实际物流成本
logistics_budget: float # 物流预算
# 大促后日销
post_promo_daily_sales: float # 大促后日均销量
class PostPromoRetrospectiveKPI:
"""大促后复盘KPI分析器"""
# 售罄率分级标准(书中)
SELLTHROUGH_GRADES = {
(0.90, 1.01): ('爆款', '🔥', '下次备货量×1.5,立即评估补货需求'),
(0.60, 0.90): ('健康', '✅', '维持当前备货策略'),
(0.40, 0.60): ('偏低', '⚠️', '分析原因:价格/流量/质量,下次减少20%备货'),
(0.00, 0.40): ('积压', '🔴', '立即启动清仓,下次大幅减少'),
}
def sellthrough_analysis(self, outcome: PromoOutcome) -> Dict:
"""售罄率分析"""
sellthrough = outcome.promo_actual_sales / max(outcome.pre_promo_stock, 1)
grade, emoji, action = '未知', '?', '检查数据'
for (lo, hi), (g, e, a) in self.SELLTHROUGH_GRADES.items():
if lo <= sellthrough < hi:
grade, emoji, action = g, e, a
break
# 大促后剩余库存日销覆盖
days_of_remaining = outcome.post_promo_stock / max(outcome.post_promo_daily_sales, 0.01)
return {
'sku_id': outcome.sku_id,
'pre_stock': outcome.pre_promo_stock,8. 论文来源
未自动抽取;请查看原始 Skill 卡片。