ATP/CTP动态承诺交期计算 — 基于实时库存+PLT的订单交货承诺日期引擎
Skill-Order-Promise-Date-Calculation · 24-标签工程
causalexperimentforecastingoptimization供应链与补货WF-A 智能补货WF-D 选品扫描
收录于供应链全链路智能化手册
实现难度⭐⭐⭐☆☆
业务视角
适用角色数据架构师 / 供应链数字化负责人 · CTO · 数据工程师 · 供应链团队
什么情况下用多平台数据孤岛导致断货识别延迟8小时;标签覆盖率不足使AI决策触发率<30%;想实现分析→行动自动闭环但不知从何下手
成功是什么样的统一 Tag Schema + 传播引擎将标签覆盖率从 30% 提升至 97%;Palantir 风格 Object-Action-Writeback 将补货响应从 2 天缩短至 4 小时自动触发
业务痛点
1. 解决的问题
运营面临"承诺交期不准导致大量差评"——ATP/CTP引擎将承诺准确率从70%提升至92%,减少30%因交期不准导致的退款
2. 核心算法逻辑
ATP(AvailabletoPromise) 和 CTP(CapabletoPromise) 是订单承诺的两个层次:
3. 业务应用场景
未自动抽取;请查看原始 Skill 卡片。
4. 输入数据要求
请查看原始代码模板获取输入规格。
5. 输出结果
请查看原始代码模板获取输出规格。
6. 业务价值 / ROI
- ROI预估:动态承诺日期准确率从70%→92%,减少因承诺不准导致的差评约30%;Amazon Delivery Promise准确率是Prime资格的核心指标,提升2pp可减少约5%的退款率
- 实施难度:⭐⭐⭐☆☆(依赖准确的库存数据和PLT参数,算法本身较清晰)
- 优先级评分:⭐⭐⭐⭐⭐(承诺交期直接影响转化率和客户满意度,Amazon将其列为账号健康核心指标)
7. 代码模板
代码块数量:1 · 路径:未检测到
"""
ATP/CTP 动态承诺交期计算引擎
功能:ATP计算 / CTP推导 / 承诺日期生成 / 可靠性标签 / 批量承诺
"""
from dataclasses import dataclass, field
from datetime import datetime, timedelta
from typing import Optional
import warnings
warnings.filterwarnings('ignore')
@dataclass
class SKUSupplyPosition:
sku_id: str
warehouse_id: str
on_hand_qty: int
reserved_qty: int
planned_receipts: list = field(default_factory=list) # [(date, qty)]
plt_p85_days: float = 35.0
daily_demand: float = 10.0
@property
def atp_today(self) -> int:
return max(0, self.on_hand_qty - self.reserved_qty)
@property
def dos(self) -> float:
return self.on_hand_qty / max(0.1, self.daily_demand)
@dataclass
class PromiseResult:
order_id: str
sku_id: str
requested_qty: int
promise_type: str # ATP / CTP / PARTIAL / REJECT
promise_date: Optional[datetime]
available_qty: int
reliability: str # HIGH / MEDIUM / LOW
reason: str
tags: dict = field(default_factory=dict)
class PromiseDateEngine:
TRANSIT_DAYS = {
("WH-NJ", "US-East"): 2, ("WH-NJ", "US-Midwest"): 4,
("WH-CA", "US-West"): 2, ("WH-CA", "US-East"): 5,
}
def calculate_promise(self, order_id: str, sku_pos: SKUSupplyPosition,
qty: int, destination: str, priority: str) -> PromiseResult:
now = datetime.now()
transit = self.TRANSIT_DAYS.get((sku_pos.warehouse_id, destination), 4)
# 场景1: ATP充足
if sku_pos.atp_today >= qty and sku_pos.dos >= 7:
promise_date = now + timedelta(days=1 + transit) # 1天出库+运输
reliability = "HIGH" if sku_pos.dos >= 14 else "MEDIUM"
return PromiseResult(8. 论文来源
- 2308.09823
- 2402.11234