1
📥
Ambil data SLA kurierAPI logistik — OTD, kerosakan, kos
2
🧮
Kira metrik prestasiOTD peratus, kadar kerosakan, kos seunit
3
🔍
Ranking & skorBandingkan kuriers dan beri rating A-C
4
📊
Laporan & notifikasiCadangan kontrak semula + alert
import requests, json, pandas as pd
API_SLA = "https://api.logistics.com/v2/courier/sla"
def fetch_courier_sla(month):
resp = requests.get(API_SLA, params={"period": month})
return resp.json().get("couriers", [])
def analyze_performance(couriers):
df = pd.DataFrame(couriers)
df["score"] = df["otd"] * 0.5 - df["damage"] * 0.3 + (1 / df["cost"]) * 20
ranking = df.sort_values("score", ascending=False)
return {
"avg_otd": round(df["otd"].mean(), 2),
"avg_cost": round(df["cost"].mean(), 2),
"avg_damage": round(df["damage"].mean(), 2),
"top_courier": ranking.iloc[0]["name"],
"scorecard": ranking.to_dict("records")
}
report = analyze_performance(fetch_courier_sla("2026-06"))
print(json.dumps(report, indent=2))