P paper2skillsPlaybook
AI 路线图 →

大促盘货S&OP流程自动化 — 备货追踪、预案生成与紧急补货闭环

Skill-Promo-Stocktaking-SOP-Automation · 04-供应链

causalexperimentforecastingoptimization广告与投放供应链与补货定价与利润WF-A 智能补货WF-B 广告优化
年化 ROI50万
实现难度⭐⭐⭐☆☆
业务优先级⭐⭐⭐⭐⭐
业务视角
适用角色供应链负责人 · 采购负责人 · CEO / 运营 VP
适用平台Amazon FBA · 海外仓 · 多国仓位(美/欧/日)
什么情况下用库存周转率低,资金压在海外仓出不来;SKU 断货紧急空运,物流成本吃掉毛利;多仓库存分布不均
成功是什么样的库存周转天数从 90 天降到 60 天,断货率 <3%,海外仓综合成本降低 15-25%
业务痛点
库存周转天数太长资金压死了断货了只能空运救急成本爆了多市场库存分配不均

1. 解决的问题

大促备货靠拍脑袋年均缺货+积压损失$15万——双路预测收敛+8周备货追踪+紧急补货触发将备货准确率从40%提升至75%,年化节省$11万

2. 核心算法逻辑

业务背景(陈凤霞实战经验):书中详述大促S&OP盘货流程包含参与部门(运营/采购/物流/财务)、盘货输入(预测/库存/供应商/资金)、盘货流程(对齐→差距→方案→决策)、成功因素(数据准确/提前启动/闭环追踪)。作者强调大促S&OP必须提前8周启动,核心是实现"从上往下目标拆解"(总GMV→品类→SKU)与"从下往上盘货聚合"(每SKU库存×预测→汇总)两路收敛。

3. 业务应用场景

场景A:Prime Day全流程S&OP自动化

- 业务问题:某母婴卖家每年Prime Day备货靠"感觉",2023年吸奶器备500件缺货、婴儿温奶器备800件积压200件,年均大促备货损失$15万(缺货+积压合计) - 数据要求:历史2次大促SKU级销量、采购提前期、当前供应商产能 - 算法应用: 1. 提前8周启动:Top-Down目标$50万GMV → 拆解到20个SKU 2. Bottom-Up汇总:各SKU历史大促×1.3增长 = $48万(差距4%,通过) 3. 第6周追踪:吸奶器采购650件已确认,在途450件,缺口100件(15%) 4. 触发规则:>10%缺口,距大促21天 → 评估空运100件(成本$800 vs 缺货

场景B:双11/Black Friday多促活动并行管理

4. 输入数据要求

请查看原始代码模板获取输入规格。

5. 输出结果

请查看原始代码模板获取输出规格。

6. 业务价值 / ROI

  • ROI 预估:月销$50万卖家,大促年损失(缺货+积压)$15万;系统将备货准确率从40%→75%,损失降至$4万,年化节省$11万;系统成本$3万,ROI≈367%
  • 实施难度:⭐⭐⭐☆☆(流程逻辑清晰,难点是让销售/采购/物流三方都按节奏提交数据更新,需要组织配合)
  • 优先级:⭐⭐⭐⭐⭐(大促是全年最高价值时段,备货失误的代价最大,S&OP是防失误的核心机制)
  • 适用规模:参与Amazon/Shopee/TikTok Shop大促、年GMV>$200万的卖家
  • 数据依赖:历史大促SKU级销量(至少2次)、当前采购追踪数据、供应商交期确认

7. 代码模板

代码块数量:1 · 路径:未检测到

"""
大促盘货S&OP流程自动化系统
功能:双路预测收敛 + 备货追踪矩阵 + 紧急补货触发 + 预案生成
"""
import numpy as np
import pandas as pd
from dataclasses import dataclass, field
from typing import List, Dict, Optional, Tuple
from datetime import datetime, timedelta
import warnings
warnings.filterwarnings('ignore')


@dataclass
class PromoSKUPlan:
    """大促SKU计划单元"""
    sku_id: str
    abc_class: str
    # 历史大促数据
    last_promo_sales: int           # 上次大促销量
    last_promo_gmv: float           # 上次大促GMV
    # 本次预测
    growth_factor: float            # 增长系数(如1.3=30%增长)
    # 采购状态(每周更新)
    ordered_qty: int = 0            # 已下采购单量
    confirmed_inbound: int = 0      # 已确认入库量
    in_transit_qty: int = 0         # 在途量
    eta_confidence: float = 0.9     # 在途到货置信度
    current_stock: int = 0          # 当前库存
    # 成本参数
    unit_margin: float = 30.0       # 单位毛利($)
    air_freight_premium: float = 8.0  # 空运附加费/件($)
    lead_time_sea: int = 35         # 海运提前期
    lead_time_air: int = 7          # 空运提前期

    @property
    def bottom_up_forecast(self) -> int:
        """自下而上预测"""
        return int(self.last_promo_sales * self.growth_factor)

    @property
    def effective_supply(self) -> int:
        """有效供应量(含在途加权)"""
        return (self.confirmed_inbound
                + int(self.in_transit_qty * self.eta_confidence)
                + self.current_stock)

    @property
    def supply_gap(self) -> int:
        return max(self.bottom_up_forecast - self.effective_supply, 0)

    @property
    def gap_rate(self) -> float:
        return self.supply_gap / max(self.bottom_up_forecast, 1)


class PromoSOP:
    """大促S&OP协同引擎"""

    def __init__(self, promo_name: str, promo_date: datetime,

8. 论文来源

  • 2403.17821