P—05 · Étude de cas
Lecteur de résultats
Pour la Fédération Française d’Escrime, un outil web qui lit l’export brut d’une compétition et en sort poules, matchs, classements et statistiques, prêts à partager avec les entraîneurs.
Code sur GitHub ↗ État des besoins (PDF) ↗Après chaque compétition, Excel.
À la fin d’une compétition, le logiciel d’arbitrage produit un fichier XML qui contient tout : les poules, chaque assaut, les tableaux d’élimination directe, le classement, les arbitres.
Le problème, c’est que personne ne lit du XML. Les responsables ouvraient le fichier à la main pour retrouver qui avait battu qui, recopiaient les scores dans Excel et reconstruisaient les classements avant de les envoyer aux entraîneurs. À chaque compétition, tout était refait, et ça dépendait de qui était disponible ce week-end-là.
Rapide, fiable, utilisable sans être développeur.
Avant d’écrire du code, j’ai rédigé un état des besoins qui décrit chaque page attendue, les données affichées et la navigation. Concrètement, j’ai joué le rôle de chef de produit avant celui de développeur.
| Page | Contenu |
|---|---|
index.php | Nom de la compétition, lieu, date, formule (poules → élimination directe). |
inscrits.php | Tireurs engagés : nom, club, catégorie, arme, avec recherche. |
arbitre.php | Arbitres affectés à l’événement, avec club et niveau. |
poules.php | Chaque poule et chaque assaut : touches données/reçues, victoires, arbitre. |
classement_f.php | Classement final, médailles, tour atteint par chaque tireur. |
match.php | Vue détaillée d’un match pour l’analyse avec l’entraîneur. |
Un fichier en entrée, des pages en sortie.
Le choix principal : pas de base de données. Tout est calculé en mémoire à partir du XML à chaque chargement. Pour une nouvelle compétition, on remplace le fichier et le site est à jour, sans rien reprogrammer ni migrer.
Logiciel d’arbitrage (ex. lille.xml)
Extraction, calcul des indicateurs
Une URL par vue, simple à partager
Lire une poule.
Extrait simplifié de poules.php : on charge l’export, on parcourt chaque poule, puis chaque match avec son score. Le même schéma sert pour le classement, les arbitres et les inscrits.
// Charger les données de la compétition $xml = simplexml_load_file("lille.xml"); $pools = []; foreach ($xml->Poule as $poule) { $num = (string) $poule['Num']; $pools[$num] = ["referee" => (string) $poule['Arbitre'], "matches" => []]; foreach ($poule->Match as $m) { $pools[$num]["matches"][] = [ "a" => (string) $m->TireurA['Nom'], "b" => (string) $m->TireurB['Nom'], "sa" => (int) $m['ScoreA'], "sb" => (int) $m['ScoreB'], ]; } } // … puis rendu HTML de chaque poule sous forme de tableau
Démo, retours, deuxième version.
J’ai présenté l’outil en direct au responsable fédéral. Ses retours ont surtout porté sur quels indicateurs comptent vraiment pour un entraîneur : j’ai retravaillé les statistiques affichées et la présentation en conséquence.
L’état des besoins prévoyait aussi des évolutions : suivi des cartons par tireur, statistiques d’arbitrage, mise en avant des surprises (un tireur mal classé qui bat un favori).
Des minutes au lieu d’heures.
Surtout, j’ai appris à traduire « on veut des stats » en indicateurs calculables, et à présenter l’information comme les gens en ont besoin sur le terrain.