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 卡片。