Aller au contenu

Indicateurs (KPI)

En bref

Le connecteur calcule 128 indicateurs répartis en 18 familles directement sur la base Sage 100c, au moment de l'appel. Trois routes suffisent : le catalogue, l'exécution d'une famille entière, l'exécution d'un indicateur précis. Le résultat est toujours indexé par dossier Sage.

Les trois routes

Méthode et route Rôle Exécute du SQL
GET /v2/kpi catalogue des familles et des codes disponibles non
GET /v2/kpi/{type} exécute tous les indicateurs d'une famille oui
GET /v2/kpi/{type}/{code} exécute un indicateur oui

{type} est le code de famille (par exemple clients-ca), {code} celui de l'indicateur (par exemple ca-n). Les deux doivent correspondre exactement aux valeurs du catalogue.

Les mêmes routes existent sans le préfixe /v2 dans la surface historique du connecteur (GET /kpi, /kpi/{type}, /kpi/{type}/{code}). Elles renvoient la même charge utile mais sans l'enveloppe v2 : pour une intégration neuve, utilisez /v2.

Paramètres

Paramètre Type Défaut Rôle
targets chaîne tous les dossiers autorisés dossiers cibles, séparés par des virgules. Alias hérités acceptés : target_base, target, base, bases (séparateurs , ou \|)
limit entier 0 (illimité) nombre maximum de lignes, par dossier et par indicateur
offset entier 0 décalage, à combiner avec limit

Rien d'autre n'est à fournir : les dates d'exercice, les filtres utilisateur et les seuils métier sont appliqués côté connecteur.

Ce que le connecteur applique automatiquement

Élément Valeur
Exercice N dates d'exercice comptable courant du dossier Sage
Exercice N-1 exercice précédent (N moins un an)
Filtres utilisateur filtres par dossier, profil, utilisateur, et restriction collaborateur
Seuil « dormant » 12 mois
Seuil « churn » 24 mois
Seuil « VIP » 50 000
Période de référence 365 jours

Un utilisateur ne voit donc que les données qui le concernent, sans que le client ait à le gérer.

Format des réponses

Sur /v2, la charge utile est emballée dans l'enveloppe habituelle : elle se trouve dans data, et meta.dossiers liste les dossiers réellement interrogés (voir Conventions).

GET /v2/kpidata est un tableau de familles, chacune listant ses indicateurs. Pas d'exécution SQL, pas de dimension dossier.

{
  "success": true,
  "data": [
    {
      "type": "clients-ca",
      "libelle": "Clients - Chiffre d'affaires & rentabilité",
      "kpis": [
        { "code": "ca-n",  "libelle": "CA exercice N (factures - avoirs)", "note": null },
        { "code": "ca-n1", "libelle": "CA exercice N-1", "note": null }
      ]
    }
  ],
  "meta": { "correlationId": "…", "durationMs": 12, "dossiers": null }
}

GET /v2/kpi/{type}data est indexé par dossier, puis par code. La valeur de chaque code est un tableau de lignes.

{
  "success": true,
  "data": {
    "DEMO": {
      "ca-n":  [ { "CA_N": 1234567.89 } ],
      "ca-n1": [ { "CA_N1": 1100000.00 } ],
      "top10-clients": [
        { "CT_Num": "C0001", "CT_Intitule": "Client de démonstration", "CA": 250000.00 }
      ]
    },
    "DEMO2": { }
  },
  "meta": { "correlationId": "…", "durationMs": 840, "dossiers": ["DEMO", "DEMO2"] }
}

GET /v2/kpi/{type}/{code}data est indexé par dossier, la valeur étant directement le tableau de lignes.

{
  "success": true,
  "data": {
    "DEMO":  [ { "CA_N": 1234567.89 } ],
    "DEMO2": [ { "CA_N":  456000.00 } ]
  },
  "meta": { "correlationId": "…", "durationMs": 96, "dossiers": ["DEMO", "DEMO2"] }
}

Règles de sérialisation

  • Un résultat est toujours un tableau d'objets : une entrée par ligne, les clés étant les noms de colonnes.
  • Un indicateur scalaire (ca-n par exemple) renvoie un tableau d'une seule ligne : lisez l'indice [0].
  • Un indicateur sans donnée renvoie [].
  • Les dossiers sans données ou non autorisés sont omis de la réponse.
  • Les dates « vides » de Sage (1753-01-01, 1900-01-01) peuvent apparaître : traitez-les côté client si besoin.
  • Si un indicateur échoue sur un dossier, il renvoie [] pour ce dossier ; l'appel entier n'échoue pas.

Ne jamais supposer un seul dossier

Toute réponse d'exécution est indexée par nom de dossier au premier niveau, même quand un seul dossier est autorisé. C'est l'erreur d'intégration la plus fréquente.

Catalogue des 128 indicateurs

18 familles. La colonne Colonnes retournées liste les champs de chaque ligne renvoyée.

Clients

clients-activite — Activité commerciale

Code Libellé Colonnes retournées
nb-clients-total Nombre total de clients (actifs + en sommeil) NbClientsTotal
nb-clients-actifs-n Nombre de clients actifs sur l'exercice NbClientsActifsN
clients-inactifs Clients inactifs (sommeil ou sans facture sur l'exercice) ClientsEnSommeil, ClientsSansFactureN
nouveaux-clients-n Nouveaux clients de l'exercice NbNouveauxClientsN
clients-churn Clients perdus : actifs en N-1 mais sans facture en N NbClientsChurn
taux-churn Taux de churn : churn / clients actifs N-1 TauxChurn
taux-reactivation Taux de réactivation : actifs en N mais inactifs en N-1 NbClientsReactives, TauxReactivation
nb-moyen-commandes Nombre moyen de commandes par client sur l'exercice NbMoyenCommandesParClient
frequence-achat Fréquence d'achat (jours moyens entre commandes par client) JoursMoyensEntreCmd
panier-moyen Panier moyen HT (montant moyen d'une facture de vente) PanierMoyenHT
delai-moyen-commandes Délai moyen entre commandes (vue globale) DelaiMoyenEntreCmd

clients-ca — Chiffre d'affaires et rentabilité

Code Libellé Colonnes retournées
ca-total CA total clients (toutes périodes, factures - avoirs) CA_Total_Clients
ca-n CA exercice N (factures - avoirs) CA_N
ca-n1 CA exercice N-1 CA_N1
evolution-ca Évolution du CA en % CA_N, CA_N1, EvolutionPct
ca-moyen-client CA moyen par client sur l'exercice CA_MoyenParClient
top10-clients Top 10 clients (CA décroissant sur l'exercice) CT_Num, CT_Intitule, CA
pareto-top20 Part du CA des 20 % meilleurs clients CA_Top20Pct, CA_Total, PartTop20Pct
marge-brute Marge brute HT sur l'exercice MargeBrute
marge-moyenne-client Marge moyenne par client MargeMoyenneParClient
rentabilite-client Rentabilité par client (CA, marge, taux de marge) CT_Num, CT_Intitule, CA_HT, Marge, TauxMarge
clients-non-rentables Clients non rentables (marge négative ou nulle) CT_Num, CT_Intitule, Marge

clients-risque — Risque et finance

Code Libellé Colonnes retournées
nb-clients-retard Nombre de clients en retard de paiement NbClientsEnRetard
montant-retards Montant total des retards MontantRetards
dso DSO (délai moyen d'encaissement) DSO_Jours
encours-client Encours client (factures non réglées, par client) CT_Num, CT_Intitule, Encours
impayes Impayés (échéances avec date d'impayé renseignée) NbImpayes, MontantImpayes
taux-impayes Taux d'impayés : montant impayés / CA TTC de l'exercice TauxImpayes
clients-bloques Clients bloqués (sommeil ou sous surveillance) CT_Num, CT_Intitule, CT_Sommeil, CT_Surveillance
risque-client Risque client (plafond d'encours face à l'encours réel) CT_Num, CT_Intitule, PlafondEncours, EncoursReel, DepassementEncours, NumeroCoface
dependance-client Dépendance client (part du CA total portée par chaque client) CT_Num, CT_Intitule, CA, PartCA

clients-fidelisation — Fidélisation

Code Libellé Colonnes retournées
anciennete-moyenne Ancienneté moyenne client, en mois AncienneteMoyenneMois
taux-fidelisation Taux de fidélisation : actifs N déjà actifs en N-1 TauxFidelisation
derniere-commande-client Date de dernière commande par client CT_Num, CT_Intitule, DerniereCommande
clients-dormants Clients dormants (aucune commande depuis le seuil dormant) CT_Num, CT_Intitule, DerniereCommande
clients-vip Clients VIP (CA de l'exercice au-delà du seuil VIP) CT_Num, CT_Intitule, CA
score-fidelite Score de fidélité (RFM simplifié) CT_Num, CT_Intitule, ScoreFidelite
ltv Valeur vie client approchée CT_Num, CT_Intitule, CA_HT_Total, LTV_Marge

clients-analyse — Analyse avancée

Code Libellé Colonnes retournées
repartition-geographique Répartition géographique, par pays Pays, NbClients
repartition-secteur Répartition par secteur (code APE) CodeAPE, NbClients
analyse-abc Analyse ABC clients (A = 80 %, B = 15 %, C = 5 % du CA) CT_Num, CT_Intitule, CA, PartCumulee, ClasseABC
prevision-ca Prévision de CA (extrapolation linéaire depuis le début d'exercice) CA_YTD, JoursEcoules, JoursTotal, PrevisionCA
cross-sell Potentiel de vente croisée (familles non achetées par client) CT_Num, CT_Intitule, FamillesTotal, FamillesAchetees, FamillesPotentielles
upsell Potentiel de montée en gamme (clients dont le panier moyen croît) CT_Num, CT_Intitule, PanierN1, PanierN, CroissancePanier

Articles

articles-catalogue — Activité catalogue

Code Libellé Colonnes retournées
nb-articles-total Nombre total d'articles NbArticlesTotal
nb-articles-actifs Articles actifs (non en sommeil) NbArticlesActifs
nb-articles-inactifs Articles inactifs (en sommeil) NbArticlesInactifs
nb-familles Nombre de familles NbFamilles
nb-sous-familles Nombre de sous-familles NbSousFamilles
nouveaux-articles Nouveaux articles sur l'exercice NbNouveauxArticles
articles-sommeil-n Articles mis en sommeil sur l'exercice NbArticlesMisEnSommeilSurN

articles-vente — Vente et performance

Code Libellé Colonnes retournées
ca-par-article CA de l'exercice par article AR_Ref, AR_Design, CA
ca-n1-par-article CA N-1 par article AR_Ref, AR_Design, CA_N1
evolution-ca-article Évolution du CA en % par article AR_Ref, AR_Design, CA_N, CA_N1, EvolutionPct
qte-vendue-article Quantité vendue par article sur l'exercice AR_Ref, AR_Design, QteVendue
top-articles Top articles (CA décroissant, 20 premiers) AR_Ref, AR_Design, CA
articles-rentables Articles les plus rentables (marge brute décroissante) AR_Ref, AR_Design, Marge
articles-moins-vendus Articles les moins vendus (quantité croissante) AR_Ref, AR_Design, QteVendue
rotation-stock Rotation du stock : quantité vendue / stock moyen AR_Ref, AR_Design, QteVendue, StockMoyen, Rotation
panier-moyen-article Panier moyen article (montant moyen de ligne) AR_Ref, AR_Design, PanierMoyenLigne
taux-marge-article Taux de marge par article AR_Ref, AR_Design, TauxMarge

articles-stock — Stock et logistique

Code Libellé Colonnes retournées
ruptures-stock Ruptures de stock (dépôt principal) AR_Ref, AR_Design, DE_No, AS_QteSto
taux-rupture Taux de rupture TauxRupture
stock-disponible-global Stock disponible global : stock - réservé StockTotal, StockReserve, StockDisponible
valeur-stock-article Valeur du stock par article AR_Ref, AR_Design, ValeurStock
valeur-stock-totale Valeur totale du stock ValeurStockTotale
stock-dormant Stock dormant (stock positif, sans vente depuis le seuil dormant) AR_Ref, AR_Design, Stock, ValeurStock
couverture-stock Couverture de stock, en jours AR_Ref, AR_Design, Stock, ConsoJour, CouvertureJours
stock-mini-atteint Articles ayant atteint leur stock minimum AR_Ref, AR_Design, AS_QteSto, AS_QteMini
delai-reappro Délai moyen de réapprovisionnement AR_Ref, AR_Design, DelaiMoyenJours
taux-disponibilite Taux de disponibilité produit TauxDisponibilite

articles-finance — Analyse financière

Code Libellé Colonnes retournées
valorisation-stock-depot Valorisation du stock, totale et par dépôt DE_No, DE_Intitule, ValeurStock
cmp Coût moyen pondéré estimé par article AR_Ref, AR_Design, CMP
marge-brute-article Marge brute HT par article AR_Ref, AR_Design, CA, MargeBrute
cout-stockage Coût de stockage annuel estimé (20 % de la valeur du stock) CoutStockageAnnuelEstime
obsolescence-stock Obsolescence du stock (stock positif, sans mouvement depuis 12 mois) AR_Ref, AR_Design, Valeur

articles-strategie — Analyse stratégique

Code Libellé Colonnes retournées
analyse-abc-articles Analyse ABC articles (80/15/5 sur le CA de l'exercice) AR_Ref, AR_Design, CA, ClasseABC
saisonnalite Saisonnalité (CA par mois sur 24 mois glissants) Annee, Mois, CA
produits-forte-croissance Produits à forte croissance (évolution du CA au-delà de 20 %) AR_Ref, AR_Design, CA_N1, CA_N, Croissance
produits-faible-rotation Produits à faible rotation (moins de 1 par an) AR_Ref, AR_Design, Qte, Stock, Rotation
taux-retour-sav Taux de retour SAV (approximation : part des avoirs sur les factures de vente) AR_Ref, AR_Design, QteAvoirs, QteFacturees, TauxRetour

Fournisseurs

fournisseurs-activite — Activité

Code Libellé Colonnes retournées
nb-fournisseurs-total Nombre total de fournisseurs NbFournisseursTotal
nb-fournisseurs-actifs-n Fournisseurs actifs sur l'exercice NbFournisseursActifsN
nouveaux-fournisseurs Nouveaux fournisseurs sur l'exercice NbNouveauxFournisseurs
fournisseurs-inactifs Fournisseurs inactifs (sommeil ou sans facture) CT_Num, CT_Intitule, CT_Sommeil
fournisseurs-strategiques Fournisseurs stratégiques (au moins 5 % des achats N) CT_Num, CT_Intitule, Achats, PartAchats

fournisseurs-achats — Achats et finance

Code Libellé Colonnes retournées
total-achats Total des achats fournisseurs (cumul, factures - avoirs) AchatsTotaux
achats-n Achats de l'exercice N Achats_N
achats-n1 Achats de l'exercice N-1 Achats_N1
evolution-achats Évolution des achats en % Achats_N, Achats_N1, EvolutionPct
montant-moyen-fournisseur Montant moyen par fournisseur MontantMoyenParFournisseur
top-fournisseurs Top 10 fournisseurs CT_Num, CT_Intitule, Achats
part-achats Part des achats par fournisseur CT_Num, CT_Intitule, Achats, PartAchats
dependance-fournisseur Dépendance fournisseur (au-delà de 30 %) CT_Num, CT_Intitule, Achats, PartAchats
encours-fournisseur Encours fournisseur (factures d'achat non réglées) CT_Num, CT_Intitule, Encours

fournisseurs-paiements — Paiements

Code Libellé Colonnes retournées
nb-fournisseurs-retard Nombre de fournisseurs en retard de règlement NbFournisseursEnRetard
montant-retards-fournisseur Montant des retards fournisseur MontantRetardsFournisseur
dpo Délai moyen de paiement fournisseur (DPO) DPO_Jours
litiges Litiges fournisseurs (approximation : écart commande / livraison) DO_Piece, cbDO_Tiers, QteCommandee, QteLivree, Ecart
avoirs-attente Avoirs fournisseur en attente d'imputation CT_Num, CT_Intitule, DO_Piece, DO_Date, DO_TotalHTNet

fournisseurs-qualite — Qualité et logistique

Code Libellé Colonnes retournées
retards-livraison Retards de livraison (livraison après la date prévue) CT_Num, CT_Intitule, DO_Piece, DO_Date, DO_DateLivr, RetardJours
taux-livraison-heure Taux de livraison à l'heure TauxLivraisonHeure
taux-conformite Taux de conformité (approximation : 1 - avoirs / livraisons) TauxConformiteProxy
non-conformites Non-conformités (approximation : nombre d'avoirs fournisseur) CT_Num, CT_Intitule, NbAvoirsRecus, MontantAvoirs
taux-retour-fournisseur Taux de retour fournisseur (reprises d'achat) CT_Num, CT_Intitule, MontantRetours, MontantFactures, TauxRetour
ruptures-fournisseur Ruptures causées par un fournisseur (approximation) AR_Ref, AR_Design, CT_Num, CT_Intitule, DO_DateLivr, RetardJours
delai-appro-fournisseur Délai moyen d'approvisionnement par fournisseur CT_Num, CT_Intitule, DelaiMoyenJours

fournisseurs-risque — Risque

Code Libellé Colonnes retournées
score-fournisseur Score fournisseur composite (délai + retards) CT_Num, CT_Intitule, NbLivraisons, NbRetards, Achats, ScoreSimple
fournisseurs-uniques Fournisseurs uniques (articles à fournisseur unique) AR_Ref, AR_Design, FournisseurUnique
risque-geographique Risque géographique (concentration par pays fournisseur) Pays, NbFournisseurs, Achats
risque-financier-fournisseur Risque financier fournisseur (approximation : encours + retards) CT_Num, CT_Intitule, Encours, NbRetards

Transverses et direction

transverses — Évolution et alertes

Code Libellé Colonnes retournées
exercice-n-vs-n1 Exercice N face à N-1 (CA, achats) CA_N, CA_N1, Achats_N, Achats_N1, EvolCA, EvolAchats
mtd-ytd Cumul du mois et cumul de l'année CA_MTD, CA_YTD
alertes-impayes Alertes impayés TypeAlerte, CT_Num, CT_Intitule, DR_Date, DR_Montant
alertes-rupture Alertes rupture TypeAlerte, AR_Ref, AR_Design, DE_No, AS_QteSto
alertes-baisse-ca Alertes baisse de CA (CA N sous 50 % du CA N-1) TypeAlerte, CT_Num, CT_Intitule, CA_N, CA_N1
alerte-fournisseur-critique Alerte fournisseur critique (dépendance + retards) TypeAlerte, CT_Num, CT_Intitule, Achats, Part
alertes-stock-mini Alertes stock minimum atteint TypeAlerte, AR_Ref, AR_Design, AS_QteSto, AS_QteMini

dashboard-direction — Tableau de bord de direction

Code Libellé Colonnes retournées Particularité
snapshot-direction Instantané direction (CA, marge, encours, retards) CA_YTD, Marge_YTD, EncoursClient, Retards filtre utilisateur appliqué au CA de l'année seulement
pareto-80-20 Pareto 80/20 (clients faisant 80 % du CA) CT_Num, CT_Intitule, CA
heatmap-activite Activité par jour de semaine et par semaine JourSemaine, Semaine, CA
score-sante Score de santé de l'entreprise (composite) ScoreSante non filtré par utilisateur
indicateur-couleur-dso Indicateur couleur (vert / orange / rouge) sur le DSO J, Couleur non filtré par utilisateur

premium-ia-bi — Jeux de données pour l'IA et la BI

Ces indicateurs préparent des jeux de variables destinés à un moteur d'analyse externe. Ils ne portent pas de seuil métier final.

Code Libellé Colonnes retournées
features-churn-client Variables de prévision du churn client (RFM, ancienneté, panier) CT_Num, AncienneteMois, DerniereCommande, JoursDepuisDerniereCmd, NbCommandes, CA_Cumul, PanierMoyen, EcartTypePanier
features-rupture-stock Variables de prévision de rupture de stock AR_Ref, AR_Design, StockActuel, DelaiMoyenReapproJ, ConsoAnnuelle
anomalies-prix Détection d'anomalies de prix (écart type au-delà de 3) AR_Ref, AR_Design, DO_Piece, DL_PrixUnitaire, Moy, Sigma, ZScore
score-risque-client-ia Variables de score de risque client CT_Num, Plafond, SousSurveillance, EncoursReel, NbRetards, PireRetardJ, CA_N, CA_N1
detection-baisse-activite Détection de baisse d'activité (fréquence en chute de plus de 50 %) CT_Num, CT_Intitule, Freq_N, Freq_N1, Variation

Exemples

HOTE="https://<votre-connecteur>"

# Catalogue des familles et des codes
curl -s "$HOTE/v2/kpi" -H "Authorization: Bearer $JETON"

# Toute une famille, sur un dossier
curl -s "$HOTE/v2/kpi/clients-ca?targets=DEMO" -H "Authorization: Bearer $JETON"

# Un indicateur, limité à 10 lignes
curl -s "$HOTE/v2/kpi/clients-ca/top10-clients?targets=DEMO&limit=10" \
  -H "Authorization: Bearer $JETON"
def indicateur(client, famille, code=None, dossiers=None, limite=None):
    """Renvoie { "<dossier>": [...lignes] } — ou { "<dossier>": { "<code>": [...] } }
    quand le code est omis."""
    chemin = f"/v2/kpi/{famille}" + (f"/{code}" if code else "")
    params = {}
    if dossiers:
        params["targets"] = ",".join(dossiers)
    if limite:
        params["limit"] = limite
    return client.appeler("GET", chemin, params=params)


# Instantané de direction sur le dossier de démonstration
par_dossier = indicateur(client, "dashboard-direction", "snapshot-direction", ["DEMO"])
lignes = par_dossier.get("DEMO", [])
ca_annee = lignes[0]["CA_YTD"] if lignes else 0

client est celui de la page Démarrer avec l'API v2 : il déballe déjà l'enveloppe.

Précautions

Performance

GET /v2/kpi/{type} exécute toutes les requêtes de la famille, sur chaque dossier autorisé. Pour un affichage réactif, préférez des appels ciblés GET /v2/kpi/{type}/{code} et utilisez limit. Les indicateurs de type liste (top, ABC, encours par tiers) peuvent renvoyer beaucoup de lignes.

  • Indicateurs approchés : certains indicateurs fournisseurs et articles (qualité, conformité, retours, litiges, retour SAV) n'existent pas nativement dans Sage 100c. Ce sont des approximations construites à partir des dates de livraison, des écarts commande / livraison et des avoirs. Les libellés le signalent.
  • Seuils des scores composites (santé, couleur du DSO, score fournisseur) : les bornes sont des valeurs de départ, à calibrer selon le métier.
  • score-sante et indicateur-couleur-dso sont des indicateurs de direction globaux : ils ne sont pas filtrés par utilisateur.

Voir aussi