1
📦
Ambil data penghantaranAPI kurier tracking updates, SLA threshold
2
⏱️
Bandingkan masa vs SLAKira jam lewat, peratusan masa tinggal
3
🔴
Kategorikan severityNormal / Warning / Breached / Critical
4
📢
Escalasi & notifikasiWhatsApp alert ke customer + pasukan
import requests, json
from datetime import datetime, timedelta
API_TRACKING = "https://api.logistics.co/v2/tracking"
def fetch_shipments(merchant_id):
resp = requests.get(API_TRACKING, params={"merchant": merchant_id})
return resp.json().get("shipments", [])
def evaluate_sla(shipments):
results = []
for s in shipments:
elapsed = s["delivery_hours"]
sla = s["sla_hours"]
ratio = elapsed / sla
if ratio >= 2.0:
severity = "CRITICAL"
elif ratio >= 1.0:
severity = "BREACHED"
elif ratio >= 0.75:
severity = "WARNING"
else:
severity = "ON_TIME"
results.append({
"order": s["order_id"],
"courier": s["courier"],
"elapsed": elapsed,
"sla": sla,
"severity": severity
})
return results
alerts = evaluate_sla(fetch_shipments("MCH-079"))
print(json.dumps(alerts, indent=2))