P paper2skillsPlaybook
AI 路线图 →

Supplier Performance Scorecard — 供应商绩效量化追踪系统

Skill-Supplier-Performance-Scorecard · 04-供应链

causalexperimentpricing供应链与补货客服与VOC数据采集与治理定价与利润风控与合规WF-A 智能补货WF-C 客服分诊WF-D 选品扫描WF-E Review监控WF-F 动态定价WF-H 复购增长WF-K 全域风险防御
年化 ROI30-100 万元
实现难度⭐⭐☆☆☆
业务优先级⭐⭐⭐⭐☆
业务视角
适用角色供应链负责人 · 采购负责人 · CEO / 运营 VP
适用平台Amazon FBA · 海外仓 · 多国仓位(美/欧/日)
什么情况下用库存周转率低,资金压在海外仓出不来;SKU 断货紧急空运,物流成本吃掉毛利;多仓库存分布不均
成功是什么样的库存周转天数从 90 天降到 60 天,断货率 <3%,海外仓综合成本降低 15-25%
业务痛点
库存周转天数太长资金压死了断货了只能空运救急成本爆了多市场库存分配不均

1. 解决的问题

核心供应商交货准时率悄悄从 97% 降到 88%,没有人发现直到断货损失百万——月度 KPI 积分卡 + 连续下滑趋势预警,提前 2-3 个月识别风险,避免断供损失 30-100 万元

2. 核心算法逻辑

核心思想:大多数跨境品牌对供应商的评估是"年度打分"——一年只看一次,且主要靠主观印象。当供应商质量开始下滑时(如交期从 98% 准时率悄悄降到 85%),往往要等到断货或大批投诉才发现。供应商绩效追踪系统用月度 KPI 积分卡 + 时序趋势检测,实时掌握每个供应商的绩效动态,提前识别风险。

3. 业务应用场景

- 业务现状:某东莞硅胶厂是品牌核心供应商(占吸奶器硅胶件 80%),月初数据显示交货准时率从 97% 悄悄降到 88%,质量合格率从 99% 降到 94%,但负责人没有发现。 - 预警触发: - 交货准时率连续 2 个月下降 → 🟡 黄色预警 - 质量合格率单月下降 5pp → 🟡 预警(边界) - 综合评级从 A+ 降至 B - 管理动作: - 预警触发后约谈供应商负责人,了解内部原因(产能紧张/工人流失) - 同步激活备选供应商(广州另一家),分担 20% 订单 - 3 个月后复评,若仍未改善则正式切换 - 业务价值:提前 2-3 个月发现供应商风险,避免临时断供损失 30-100 万元

4. 输入数据要求

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

5. 输出结果

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

6. 业务价值 / ROI

  • ROI 预估:提前 2-3 个月识别供应商风险,避免断供损失 30-100 万元;年度评估效率提升 80%
  • 实施难度:⭐⭐☆☆☆(低,主要是采购数据整理 + KPI 计算)
  • 优先级:⭐⭐⭐⭐☆(核心供应商数量有限(5-15 家),建立追踪系统一次性投入小收益大)
  • 评估依据:供应商 KPI 积分卡是供应链管理行业标准,时序预警是 Lean 制造中成熟实践

7. 代码模板

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

from dataclasses import dataclass, field
from typing import List, Dict, Optional

@dataclass
class MonthlyRecord:
    month: str
    on_time_rate: float
    quality_pass_rate: float
    avg_response_hours: float
    price_vs_benchmark: float
    compliance_score: float

@dataclass
class SupplierProfile:
    supplier_id: str
    name: str
    category: str
    history: List[MonthlyRecord] = field(default_factory=list)

WEIGHTS = {"on_time": 0.30, "quality": 0.30, "response": 0.15, "price": 0.15, "compliance": 0.10}

def score_month(record: MonthlyRecord) -> Dict:
    response_score = max(0, 1 - record.avg_response_hours / 48)
    price_score = max(0, 1 - (record.price_vs_benchmark - 1) * 2)
    composite = (record.on_time_rate / 100 * WEIGHTS["on_time"] +
                 record.quality_pass_rate / 100 * WEIGHTS["quality"] +
                 response_score * WEIGHTS["response"] +
                 price_score * WEIGHTS["price"] +
                 record.compliance_score / 100 * WEIGHTS["compliance"])
    grade = "A+" if composite >= 0.95 else "A" if composite >= 0.90 else "B" if composite >= 0.80 else "C" if composite >= 0.70 else "D"
    return {"month": record.month, "composite": round(composite * 100, 1), "grade": grade,
            "on_time": record.on_time_rate, "quality": record.quality_pass_rate,
            "response_score": round(response_score * 100, 1)}

def detect_trend_alerts(supplier: SupplierProfile) -> List[Dict]:
    if len(supplier.history) < 2:
        return []
    scores = [score_month(r) for r in supplier.history]
    alerts = []
    composites = [s["composite"] for s in scores]
    if len(composites) >= 3 and all(composites[-i-1] < composites[-i-2] for i in range(2)):
        alerts.append({"type": "🔴 红色预警", "message": "综合评分连续 3 个月下降",
                        "action": "立即启动备选供应商,准备切换"})
    elif len(composites) >= 2 and composites[-1] < composites[-2]:
        alerts.append({"type": "🟡 黄色预警", "message": "综合评分连续 2 个月下降",
                        "action": "约谈供应商了解原因,设定改善目标"})
    latest = scores[-1]
    prev = scores[-2] if len(scores) >= 2 else latest
    if latest["on_time"] < 85:
        alerts.append({"type": "🚨 紧急", "message": f"交货准时率骤降至 {latest['on_time']}%",
                        "action": "紧急沟通,启动应急备货"})
    if latest["quality"] < 90:
        alerts.append({"type": "🟡 预警", "message": f"质量合格率降至 {latest['quality']}%",
                        "action": "加强入库质检,与品控部门确认原因"})
    return alerts

def generate_scorecard(supplier: SupplierProfile) -> Dict:
    if not supplier.history:
        return {"error": "no data"}
    scores = [score_month(r) for r in supplier.history]

8. 论文来源

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