1
📥
Fetch cancelled ordersAPI pesanan dibatalkan
2
🔍
Analyze reasonsHarga, stok, penipuan
3
💡
Suggest recoveryVoucher, restock, alternatif
4
📊
Update dashboardLaporan pemulihan
import requests, json, pandas as pd
API_ORDERS = "https://api.ecommerce.com/v2/orders/cancelled"
def fetch_cancelled_orders():
resp = requests.get(API_ORDERS, params={"status": "cancelled"})
return resp.json().get("orders", [])
def analyze_cancellations(orders):
reasons = {"price": 0, "stock": 0, "fraud": 0, "other": 0}
for o in orders:
r = o.get("cancel_reason", "other")
if r in reasons: reasons[r] += 1
top_reason = max(reasons, key=reasons.get)
recovered = [o for o in orders if o.get("recovered")]
recovery_rate = len(recovered) / len(orders) * 100 if orders else 0
return {
"top_reason": top_reason,
"recovery_rate": round(recovery_rate, 1),
"reasons": reasons,
"recovered": len(recovered)
}
report = analyze_cancellations(fetch_cancelled_orders())
print(json.dumps(report))