供应链风险管理
风险不是"会不会来",而是"什么时候来"——做好准备才能快速恢复。
风险管理框架
graph TD
IDENTIFY[识别风险] --> ASSESS[评估风险]
ASSESS --> PRIORITIZE[优先排序]
PRIORITIZE --> MITIGATE[制定对策]
MITIGATE --> MONITOR[持续监控]
MONITOR --> RESPOND[应急响应]
RESPOND --> RECOVER[恢复]
RECOVER --> LEARN[复盘学习]
LEARN --> IDENTIFY
style ASSESS fill:#ffebee,stroke:#c62828,stroke-width:2px
style MITIGATE fill:#c8e6c9,stroke:#388e3c,stroke-width:2px
供应链风险类型
| 风险类别 | 示例 | 影响 |
|---|---|---|
| 供应中断 | 供应商倒闭、产能不足 | 生产停线 |
| 需求波动 | 突发热销/滞销 | 缺货或积压 |
| 物流中断 | 港口封锁、暴雨封路 | 交付延迟 |
| 地缘政治 | 贸易制裁、关税壁垒 | 成本飙升 |
| 自然灾害 | 地震、洪水、疫情 | 全链中断 |
| 网络安全 | 勒索软件、数据泄露 | 系统瘫痪 |
| 质量问题 | 批次不良、召回 | 品牌损失 |
风险评估
"""
供应链风险评估
"""
from dataclasses import dataclass
@dataclass
class Risk:
name: str
probability: int # 1-5 发生可能性
impact: int # 1-5 影响程度
detection: int # 1-5 检测难度(1=容易,5=难)
category: str
class RiskAssessor:
"""风险评估器"""
@staticmethod
def risk_priority_number(risk: Risk) -> int:
"""RPN = 可能性 × 影响 × 检测难度"""
return risk.probability * risk.impact * risk.detection
@classmethod
def assess_all(cls, risks: list[Risk]) -> list[dict]:
"""评估并排序"""
results = []
for r in risks:
rpn = cls.risk_priority_number(r)
if rpn >= 60:
level = "极高 — 立即行动"
elif rpn >= 30:
level = "高 — 制定预案"
elif rpn >= 10:
level = "中 — 监控"
else:
level = "低 — 接受"
results.append({
"风险": r.name,
"类别": r.category,
"RPN": rpn,
"等级": level,
"P×I×D": f"{r.probability}×{r.impact}×{r.detection}",
})
results.sort(key=lambda x: x["RPN"], reverse=True)
return results
# 评估
risks = [
Risk("核心芯片供应商断供", 3, 5, 4, "供应"),
Risk("海运港口拥堵", 4, 3, 2, "物流"),
Risk("原材料涨价 30%", 3, 4, 2, "成本"),
Risk("仓库火灾", 1, 5, 3, "灾害"),
Risk("ERP 系统故障", 2, 4, 3, "IT"),
Risk("关键人员离职", 3, 3, 4, "人力"),
]
print("=== 供应链风险评估 ===")
for r in RiskAssessor.assess_all(risks):
print(f" [{r['等级'][:2]}] {r['风险']} — RPN:{r['RPN']} ({r['P×I×D']})")
多源策略
"""
多源供应策略
"""
SOURCING_STRATEGIES = {
"单一来源": {
"优势": "成本低、关系深、管理简单",
"风险": "供应中断无备选",
"适用": "专利技术、独家物料",
},
"双源策略": {
"优势": "有备选、可比价",
"风险": "管理成本增加",
"适用": "核心物料",
"分配": "70% 主供 + 30% 备供",
},
"多源策略": {
"优势": "充分竞争、抗风险强",
"风险": "管理复杂、批次差异",
"适用": "标准品、大宗物料",
"分配": "40% + 35% + 25%",
},
"区域多元化": {
"优势": "地缘政治风险分散",
"风险": "长供应链、时差",
"适用": "跨国生产",
"分配": "国内60% + 东南亚30% + 其他10%",
},
}
print("=== 多源策略对比 ===")
for name, info in SOURCING_STRATEGIES.items():
print(f"\n{name}:")
for k, v in info.items():
print(f" {k}: {v}")
应急预案模板
| 阶段 | 行动 | 责任方 |
|---|---|---|
| 预警 | 监测到异常信号 | 控制塔 |
| 启动 | 评估影响、激活预案 | 供应链总监 |
| 响应 | 切换备供/调拨库存 | 采购/仓储 |
| 沟通 | 通知客户、内部协调 | 客服/销售 |
| 恢复 | 产能恢复、库存回补 | 生产/采购 |
| 复盘 | 根因分析、预案更新 | 全体 |
供应链韧性指标
| 指标 | 定义 | 目标 |
|---|---|---|
| MTTR | 平均恢复时间 | <48小时 |
| 备选供应商比例 | 有备选的物料占比 | >80% |
| 安全库存覆盖天数 | 关键物料覆盖 | >14天 |
| 订单重路由能力 | 可切换履约路径 | >2条 |
行动清单
- [ ] 对公司供应链进行 RPN 风险评估:列出 10 个主要风险,按 P×I×D 排序
- [ ] 对 RPN ≥ 60 的高危风险,在 30 天内制定具体应急预案
- [ ] 审核核心物料(Scope:战略物料 + 瓶颈物料)是否都有备选供应商
- [ ] 确认安全库存覆盖天数:关键物料 ≥ 14 天,高风险场景 ≥ 30 天
- [ ] 建立供应链韧性 KPI 看板:MTTR、备选供应商覆盖率、安全库存达标率
- [ ] 每季度更新风险清单,特别关注地缘政治和供应商财务健康变化
下一节:02-业务连续性规划BCP — 量化每种中断场景的影响,构建可执行的恢复路径。