09 — Fleet Services Group
Contourner un plafond d’export qui tronque en silence
L'outil de reporting de l'entreprise coupait discrètement ses exports au-delà de 150 000 lignes. Les équipes travaillaient sur des fichiers incomplets sans le savoir. J'ai supprimé le problème.
Les fichiers de travail des équipes commerciales sont alimentés chaque nuit depuis les rapports décisionnels de l'entreprise. Le problème n'était pas de les télécharger : c'était de s'apercevoir qu'ils étaient incomplets.
Le problème
La plateforme tronque tout export à 150 000 lignes. Silencieusement. Un export qui atteint le plafond ne renvoie aucune erreur, aucun avertissement : il rend simplement un fichier plus court, dont personne ne sait qu'il est plus court.
C'est le pire mode de panne possible pour une chaîne automatisée : les équipes continuent de travailler, en confiance, sur des données amputées. Et comme le volume grossit lentement, le jour où le plafond est franchi ne se remarque pas.
Ce que j’ai fait
01Découper la requête plutôt que subir le plafond
La chaîne génère automatiquement une exécution par tranche d'effectif — treize au total — à partir d'une capture de requête servant de gabarit, puis reconcatène l'ensemble. Chaque tranche passe seule sous le plafond, et le découpage suit une dimension métier réelle plutôt qu'une pagination arbitraire, ce qui le rend lisible pour ceux qui exploitent le fichier.
02Journaliser l’approche du plafond, pas seulement son franchissement
Un avertissement est écrit dès qu'une tranche s'approche du seuil. La répartition des effectifs bouge ; mieux vaut le savoir avant que le fichier ne soit tronqué que le découvrir après. C'est la différence entre une chaîne qu'on surveille et une chaîne qui se surveille.
03Alerter dès que l’authentification n’est plus possible
Le jeton est mis en cache et rafraîchi automatiquement. Quand le rafraîchissement échoue, un message part immédiatement vers une adresse désignée. Un export planifié qui échoue en silence est plus dangereux que pas d'export du tout : les équipes continuent sur le fichier de la veille sans le savoir.
04Une capture de requête plutôt qu’une API inexistante
La plateforme n'expose pas d'interface programmable pour ce besoin. La chaîne rejoue donc la requête réelle observée dans le navigateur, conservée comme gabarit et paramétrée. C'est moins élégant qu'une API, c'est ce qui existe, et c'est documenté comme tel pour celui qui reprendra.
Stack
Chaîne
- Python
- MSAL
- OAuth 2.0
- Cache de jetons
Sortie
- XLSX
- Concaténation par tranche
- Journal horodaté
Exploitation
- Tâches planifiées Windows
- Alerte e-mail
- Avertissements de seuil