Methodologie de calcul

Documentation exhaustive des regles appliquees a chaque indicateur. A lire avant toute interpretation.

1. Sources de donnees 3CX

Les dashboards sont generes a partir de 7 fichiers Call Reports hebdomadaires (1 semaine chacun, export 3CX via « Call Reports ») et d'un fichier Extension Statistics by Group :

Fichier sourceLibelle pipelinePeriodeLignes
call_reports (23).csvS10 01-07/032026-03-01 Dim → 2026-03-07 Sam10 526
call_reports (24).csvS11 08-14/032026-03-08 Dim → 2026-03-14 Sam10 443
call_reports (25).csvS12 15-21/032026-03-15 Dim → 2026-03-21 Sam9 612
call_reports (26).csvS13 22-28/032026-03-22 Dim → 2026-03-28 Sam7 648
call_reports (27).csvS14 29/03-04/042026-03-29 Dim → 2026-04-04 Sam8 477
call_reports (28).csvS15 05-11/042026-04-05 Dim → 2026-04-11 Sam6 882
call_reports (29).csvS16 12-18/042026-04-12 Dim → 2026-04-18 Sam7 672
extension_statistics_by_group (9).csv—cumul Mars + Avrilreference audit

Cumul lignes brutes sur les 7 CSV : 61 260 lignes. Audit du 2026-04-22 (scenario 2) : chaque fichier couvre exactement 7 jours calendaires, aucun chevauchement, aucune troncature.

2. Dedoublonnage par Call ID

Chaque appel 3CX genere generalement plusieurs lignes dans le journal, avec le meme Call ID :

Pour eviter le double comptage, chaque Call ID est conserve une seule fois selon une priorite documentee :

Inbound Answered > Outbound Answered > Internal Answered
  > Inbound Unanswered > Outbound Unanswered > Internal Unanswered
  > Inbound Queue Waiting > Inbound Queue Unanswered

3. Classification des extensions

PlageTypeInclusion dans les dashboards
6xx / 7xxAgents humainsInclus dans Agents / Primes
8xxFiles d'attente, SVI, renvois de fermetureUtilise pour attribution client
9xxSystemes IA Volubil, support techniqueExclu des calculs agents

4. Attribution client

Chaque Call ID est rattache a un client (MDF, PSUD, SLF) via le nom de la file d'attente rencontree (colonne To des lignes Inbound Queue). Mapping applique :

File d'attente (sous-chaine)Client
MDF Standard 27 28 21 · MDF METIER - RSS 27.90.39 · MDF PAM 28.00.20 · DRING - MDF * fermetureMDF
PSUD - AIDEMED · IA PSUD DPASS · DRING - PSUD AIDEMED fermeturePSUD
SLF BDV · DRING - SLF BDV fermetureSLF

Heuristique complementaire : les libelles contenant « MDF », « PSUD », « AIDEMED », « DPASS », « SLF » ou « BDV » sont rattaches au client correspondant meme si la file exacte ne figure pas dans le mapping principal.

5. Calcul des primes agents

Criteres d'eligibilite d'un appel (tous criteres cumulatifs) :

Paliers journaliers (palier le plus eleve atteint uniquement, non cumulatif) :

Appels eligibles / jourPrime (F CFP)
≥ 64 appels500
≥ 80 appels1 000
≥ 100 appels3 000

6. Semaines standard (periode analysee)

SemaineDates (jours ouvres dans data.json)Nb jours
Mars S102, 03, 04, 05, 065
Mars S209, 10, 11, 12, 135
Mars S316, 17, 18, 19, 205
Mars S423, 24, 25, 26, 27, 30, 317
Avril S101, 02, 033
Avril S207, 08, 09, 10 06/04 exclu4
Avril S313, 14, 15, 16, 175
Total34

Week-ends (samedis/dimanches) exclus par l'ingestion : tres faible activite agent (< 20 appels) et pas d'attribution agent humain.

7. Jours exclus de l'analyse agent (feries identifies)

Audit du 2026-04-22 (scenario 2) : recompte des jours ouvres a partir des 7 CSV bruts, avant passage dans ingest2.py. Resultat :

DateJour ferieJour Lignes brutesAnswered SVIUnanswered Call IDs apres dedupRepartition client
2026-04-06Lundi de PaquesLundi66323429MDF=10, PSUD=18, SLF=1

Regle d'exclusion appliquee : un jour est exclu de data["dates"] si ingest2.py ne genere aucun record agent_daily pour ce jour (i.e. aucun appel attribue a une extension 6xx/7xx). Les appels captes par les SVI de fermeture (800 MDF, 883 PSUD, 840 SLF) ne creent pas de record agent car le champ To pointe sur une queue (ext 8xx), pas sur un agent humain.
Cette regle est coherente avec la realite operationnelle (aucun agent en poste) mais le jour reste present dans daily_hourly avec ses 29 Call IDs (visible dans la vue Clients si un filtre large est applique).

7bis. Horaires d'ouverture officiels des lignes clients (scenario A, v2026.04.22.1)

Horaires confirmes par le directeur Pascal Leroy le 2026-04-22. Ils servent de perimetre de reference pour les regles de detection superviseur par creneau horaire (regles R1/R2/C1/C2/A1/A2 dependant de l'heure/jour). Un appel recu en dehors de ces plages tombe sur le SVI de fermeture (ext 800 MDF / 883 PSUD / 840 SLF) et ne doit pas etre compte comme un appel manque par un agent.

ClientJours ouvresPlage horaireRegime
MDFLundi a Vendredi07h30 - 16h30Continu (pas de pause meridienne)
PSUDLundi a Vendredi07h30 - 16h00Continu (pas de pause meridienne)
SLFLundi a Jeudi07h00 - 16h00-
Vendredi07h00 - 15h00-

Implementation technique : parametre HORAIRES_CLIENT dans _common.py + helper in_plage_client(client, dow, hour). Precision a l'heure entiere (approximation +/-30 min en bord de plage, car data.json est agrege par heure entiere).

Impact mesure (audit 2026-04-22, re-mesure sur data.json courant) : sur 26 149 (somme client_hourly.total), 384 appels (1,47%) sont hors plage d'ouverture — MDF 131/13 859 (0,95%), PSUD 236/11 553 (2,04%), SLF 17/737 (2,31%). Ces appels restent comptes dans les totaux et les primes (qui sont calculees par agent, pas par creneau horaire) ; ils sont uniquement exclus des regles de detection creneau et signales visuellement sur les heatmaps avec un motif rayure gris + bordure dashed.

Ce qui n'est PAS affecte par ce filtrage : taux globaux agent, primes agent (paliers 64/80/100 → 500/1000/3000 F CFP), volumes cumulus par client, Ext Stats.

8. Parametres d'analyse superviseur

ParametreValeurSource (code)
Cible productivite agent8 appels/h_common.py : PROD_TARGET
Representativite agent : jours actifs min.10_common.py : MIN_JOURS_ACTIFS
Representativite agent : Talk effectif min.2.0h_common.py : MIN_TALK_H_STAT
Cible taux global decrochage80%gen_index.py R1
Seuil alerte jour (taux decrochage)< 70%gen_index.py R2
Seuil pic de volume journalier> moy + 1.5σgen_index.py R4

9. Tracabilite

Pipeline de generation complet :

  1. ingest2.py — chargement des 7 CSV, normalisation, dedoublonnage, agregations, vue Ext Stats, calcul primes → produit data.json
  2. build_compare.py — comparaison vs Ext Stats by Group → produit compare_3cx.json
  3. gen_index.py / gen_agent.py / gen_client.py / gen_pivot.py / gen_affectation.py / gen_recap_primes.py / gen_comparaison.py — templates HTML avec JSON embarque
  4. gen_analyse_superviseur.py — tableau de bord superviseur consolide
  5. gen_methodo.py — la presente page

Chaque dashboard est un fichier HTML autonome ; aucune dependance externe ni appel reseau. Ils fonctionnent en local et peuvent etre ouverts directement dans un navigateur.

Pour mettre a jour les dashboards avec de nouvelles donnees : remplacer les fichiers CSV dans le dossier Dashboard de supervision et relancer ingest2.py, build_compare.py, puis tous les gen_*.py.

Version courante : v2026.07.06.1. Journal des versions : CHANGELOG.md.

10. Limites identifiees et perimetre non couvert

Dashboard DRING Supervision — genere automatiquement depuis les exports 3CX.
Toutes les valeurs sont calculees a partir des fichiers sources ; aucune donnee n'est interpolee.
Version v2026.07.06.1 — build 2026-09-28 13:21 journal des versions