Réponse directe
Choisissez une plage de dates (cohorte created_at). Par ville normalisée : comptez total_orders, delivered_orders (delivery_status delivered), refused_returned_orders (regroupement refus/retour KPI). delivery_rate_pct = livrés / total × 100. Pour les classements « pires villes », CodDeliveryAnalyticsService exige au minimum WORST_CITY_MIN_ORDERS = 10 commandes. Ne comparez pas des villes à 3 commandes.
Étape 1 — Définir la cohorte
Les métriques COD Insights filtrent sur created_at entre start et end.
Une commande créée hors période n’entre pas dans le total, même livrée dedans.
Étape 2 — Résolution ville
La ville affichée combine delivery_city_override → customer_city → provider_city_name, avec normalisation d’alias pour le rapport.
Deux commandes même client avec override différent peuvent apparaître dans des buckets distincts — vérifiez les overrides avant d’analyser.
Étape 3 — Compter livrés et refus/retours
delivered_orders : delivery_status = delivered uniquement.
refused_returned_orders : expression SQL miroir DashboardCodKpiService — regroupe libellés refusé/refused/retourné/returned/etc.
Ce regroupement sert au KPI ; pour isoler refus pur, croisez libellés bruts (guide refus dédié).
| Métrique | Calcul |
|---|---|
| total_orders | COUNT commandes cohorte |
| delivered_orders | COUNT delivery_status delivered |
| refused_returned_orders | COUNT classification refus/retour KPI |
| delivery_rate_pct | delivered / total × 100, arrondi 0,1 |
Étape 4 — Taux par ville et prudence échantillon
getWorstCitiesByRefusedRate : villes avec ≥ 10 commandes (WORST_CITY_MIN_ORDERS), tri par taux refus décroissant.
Une ville à 4 commandes et 100 % refus n’apparaît pas dans ce classement filtré — c’est voulu pour la stabilité.
- Ouvrir COD Delivery Insights (ou export CSV).
- Sélectionner start/end.
- Lire summary global puis table villes.
- Ignorer conclusions fortes si orders < 10 pour une ville.
- Comparer périodes comparables (même durée, même canaux).
Exemple illustratif (fictif) — calcul manuel
Ville Casablanca, 30 jours : 45 commandes créées, 28 delivered → delivery_rate_pct ≈ 62,2 %. refused_returned groupés = 9 sur 45. Ville X : 8 commandes → ne pas utiliser le widget « pires villes » (seuil 10) ; note « échantillon insuffisant ».
CodDeliveryAnalyticsService en pratique
getSummary : agrégats globaux cohorte.
getTopCitiesByOrders / getTopCitiesByDelivered : volumes.
getWorstCitiesByRefusedRate : seuil 10 commandes minimum.
Export CSV et tendances journalières getDeliveryRateTrendByDay / getRefusedRateTrendByDay.
Pour conclure
Calculez avec les définitions produit, pas avec des formules maison divergentes.
Respectez le seuil de 10 commandes pour les classements « pires villes ».
Limites et points d’attention
- refused_returned_orders groupe refus et retours — pas refus seul.
- Pas de benchmark « taux idéal » publié par ERP-STOK.
- Normalisation ville = affichage rapport ; données source inchangées.