08 — Fleet Services Group
Quatre portails, aucune API, plus une seule facture à aller chercher
Quatre logiciels facturaient l'entreprise sans jamais envoyer leurs factures. J'ai fait un outil qui va les chercher tout seul, chaque mois, sans stocker le moindre mot de passe.
Chaque mois, quelqu'un se connectait à quatre portails différents pour récupérer les factures des outils de l'équipe, les renommer, les ranger et les transmettre à la comptabilité. Une tâche sans aucune valeur ajoutée, mais qui ne peut pas être sautée.
Le problème
Aucun des quatre fournisseurs n'expose d'interface programmable de facturation. Deux délèguent à un prestataire de paiement sans accès client. Et le quatrième — le plus important — n'envoie pas ses reçus par e-mail : le portail est la seule source possible. Il n'y a donc pas de solution propre ; il y a le portail, ou rien.
S'y ajoutent trois contraintes : ce fournisseur refuse les connexions scriptées et impose une authentification à deux facteurs ; aucun mot de passe ne doit être stocké ; et le traitement doit être relançable sans produire de doublons ni retélécharger ce qui est déjà là.
Ce que j’ai construit
Un outil qui pilote un véritable navigateur avec la session de l'utilisateur. La connexion se fait une seule fois par fournisseur, à la main — mot de passe, double facteur, authentification unique, tout fonctionne puisque c'est un vrai navigateur. Les cookies restent dans un profil local ; les exécutions suivantes tournent sans interface, sans intervention et sans secret stocké.
Les fichiers sont rangés par fournisseur et par année, accompagnés d'un manifeste ouvrable dans un tableur — date, référence, montant, devise, chemin, empreinte cryptographique, source. Chaque exécution est incrémentale.
Décisions structurantes
01Un moteur générique plutôt que quatre scripts spécialisés
Le moteur repère les liens et boutons de facture, suit les pages hébergées jusqu'au document réel, et se rabat sur un déclenchement programmatique quand aucun lien exploitable n'existe. Conséquence directe : un portail qui change sa mise en page continue de fonctionner tant qu'il reste reconnaissable. Quatre scripts spécialisés auraient cassé quatre fois par an.
02Les adresses se corrigent sans toucher au code
Les portails déplacent leurs pages. Une adresse exacte se déclare par variable d'environnement et vient s'ajouter à celles connues par défaut. Réparer ne demande ni développeur ni nouvelle version.
03Quand le fournisseur ne produit pas de PDF, on l’imprime
Un des portails n'affiche ses reçus qu'en page web. Chaque reçu est donc imprimé en PDF par le navigateur lui-même. Cette contrainte en impose une autre — l'impression n'est disponible qu'en mode sans interface — qui est documentée dans l'outil, parce que c'est exactement le genre de détail qui fait perdre une demi-journée à celui qui reprendra.
04Une commande de diagnostic livrée avec l’outil
Quand un fournisseur ne rend plus rien, une commande dédiée ouvre chaque adresse connue, rapporte ce qu'elle y trouve et dépose la page complète sur disque. Réparer prend dix minutes au lieu d'une session de débogage. Un outil d'automatisation qui ne sait pas expliquer pourquoi il échoue finit toujours par être abandonné.
05Idempotence par empreinte, pas par nom de fichier
Un index d'empreintes évite les doublons même quand un portail renomme ses fichiers ou republie un document. C'est la condition pour que la tâche tourne en automatique sans jamais être surveillée.
Stack
Collecte
- Python
- Playwright (Chromium)
- Profils de session persistants
Sortie
- Manifeste CSV
- Empreintes SHA-256
- Index anti-doublon
Exploitation
- PowerShell
- Tâches planifiées Windows
- Mode diagnostic