P paper2skillsPlaybook
AI 路线图 →

ITO备货前中后三阶段健康度追踪 — 库存周转全周期过程KPI与干预决策闭环

Skill-ITO-Three-Phase-Health-Tracking · 04-供应链

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

1. 解决的问题

团队只看月末DOI结果指标发现问题已太晚——ITO备货前中后三阶段过程KPI(目标DOI设定/BHI备货健康指数/五色灯评分)将库存干预从月末亡羊补牢提前至备货过程中实时预警,旺季缺货率从18%降至7%

2. 核心算法逻辑

书籍核心洞察(陈凤霞):ITO/DOI是结果指标,要改善它必须在备货的过程中干预。书中明确将库存健康管理分为"备货前、备货中、备货后"三个阶段,每个阶段有不同的过程KPI和行动逻辑——而不是等到月末看DOI数字再亡羊补牢。

3. 业务应用场景

- 业务问题:某卖家每年Q4旺季前备货计划做得很好,但备货中和备货后管控不足,导致每年约30%的SKU出现"旺季缺货+滞销同时存在"的矛盾局面 - 三阶段KPI应用: 1. 备货前(8月初):计算所有SKU当前DOI vs 旺季目标DOI(×1.5),找出需要备货量TOP20 2. 备货中(8-9月):每周追踪BHI,BHI>1.2→预警过度备货,BHI<0.8→紧急催单 3. 备货后(10月初):所有SKU颜色评分,红灯SKU启动提前促销;蓝灯SKU空运应急 - 预期产出:旺季缺货率从18%降至7%,旺季后滞销库存减少35%

- **业务问题**:大促后一批高DOI SKU(刺激备货过多)积压,占用仓容和资金,但无系统化恢复计划 - **备货后阶段KPI**:大促后立即运行五色灯评分,红灯SKU(DOI>60天)按阶梯折扣清仓(前2周-10%,第3-4周-20%,第5周以上-30%)

4. 输入数据要求

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

5. 输出结果

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

6. 业务价值 / ROI

  • ROI 预估:旺季缺货率18%→7%(避免缺货损失$8万+),滞销积压减少35%(释放资金$5万);系统$1.5万,ROI>800%
  • 实施难度:⭐⭐☆☆☆(逻辑简单,核心是建立SKU级三阶段追踪流程;数据已有,主要是流程化)
  • 优先级:⭐⭐⭐⭐⭐(书中第五章核心,从"结果KPI"升级为"过程KPI"是库存管理最大的能力跃升)
  • 适用规模:所有规模,SKU数>30个即可受益
  • 数据依赖:SKU销售历史、当前库存、在途库存、采购提前期

7. 代码模板

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

"""
ITO备货前中后三阶段健康度追踪
基于《全链路管理》陈凤霞 第五章第三节
备货前目标设定 + 备货中进度追踪 + 备货后健康评分
"""
import numpy as np
import pandas as pd
from dataclasses import dataclass, field
from typing import Dict, List, Optional, Tuple
from enum import Enum
import warnings
warnings.filterwarnings('ignore')


class InventoryLight(Enum):
    """五色灯库存健康状态"""
    GREEN = ("🟢绿灯", "健康", "无需干预")
    YELLOW = ("🟡黄灯", "偏高", "关注,准备减少下批采购")
    RED = ("🔴红灯", "滞销风险", "立即启动促销清库")
    BLUE = ("🔵蓝灯", "偏低", "加急补货")
    BLACK = ("⚫黑灯", "缺货", "紧急处理,空运或调拨")

    def __init__(self, emoji_name, short, action):
        self.emoji_name = emoji_name
        self.short = short
        self.action = action


@dataclass
class SKUInventoryProfile:
    """SKU库存档案"""
    sku_id: str
    abc_class: str              # A/B/C
    daily_sales: float          # 日均销量
    current_stock: int          # 当前库存
    in_transit: int             # 在途库存
    lead_time_days: int         # 采购提前期
    safety_stock_days: int      # 安全库存天数
    season_factor: float = 1.0  # 季节系数(旺季前=1.5,淡季=0.7)


class ThreePhaseITOTracker:
    """ITO备货前中后三阶段追踪器"""

    # ABC分类的DOI目标(书中标准)
    ABC_DOI_TARGETS = {'A': 30, 'B': 45, 'C': 60}

    def compute_target_doi(self, sku: SKUInventoryProfile) -> float:
        """计算目标DOI(含季节调整)"""
        base_target = self.ABC_DOI_TARGETS.get(sku.abc_class, 45)
        # 基础DOI = 提前期 + 安全库存天数
        structural_doi = sku.lead_time_days + sku.safety_stock_days
        # 取结构性DOI和分类目标的较大值,再乘以季节系数
        target = max(base_target, structural_doi) * sku.season_factor
        return target

    def phase1_pre_procurement(self, sku: SKUInventoryProfile) -> Dict:
        """阶段1:备货前 — 计算备货需求和触发阈值"""
        target_doi = self.compute_target_doi(sku)
        current_doi = (sku.current_stock + sku.in_transit) / max(sku.daily_sales, 0.01)

8. 论文来源

未自动抽取;请查看原始 Skill 卡片。