Le CRM commercial
Modéliser un bien, son état projeté et son éligibilité réglementaire — et réconcilier une grandeur définie de trois façons différentes.
Le besoin
Ce CRM couvre tout le cycle commercial — clients, affaires, devis, factures — avec une modélisation très riche du bien immobilier et de son éligibilité aux dispositifs de financement. Mes livraisons y étaient pilotées par les retours du client.
Le moteur de règles d'éligibilité
Il s'agit de traduire en code une partie de la réglementation. Une série de conditions techniques détermine si un bien est éligible à une fiche de financement donnée. Le point intéressant est le compromis : j'ai prévu un mode « souple » où un critère non renseigné produit un avertissement plutôt qu'un blocage.
Ce n'est pas de la complaisance envers la réglementation, c'est du réalisme envers la saisie. Un commercial en rendez-vous n'a pas toujours toutes les caractéristiques thermiques sous la main ; bloquer le dossier entier pour un champ manquant garantit surtout qu'on remplira n'importe quoi pour passer.
L'état actuel et l'état projeté
Pour un même bâtiment, il faut stocker ses caractéristiques avant travaux et leur projection après travaux : c'est indispensable pour calculer un gain énergétique. Cela double le nombre de champs du modèle et impose une discipline stricte pour ne jamais confondre les deux états — une confusion silencieuse ici fausse tous les calculs en aval sans lever la moindre erreur.
Le bug qui n'était pas un bug de calcul
Un défaut de calcul de marge s'est révélé exemplaire d'un problème d'administration des données plutôt que de programmation : la même grandeur métier était définie de trois façons différentes dans trois parties du code.
Le corriger n'a pas consisté à réparer une formule, mais à réconcilier une définition unique et à la rendre cohérente partout. C'est exactement le type de travail qui garantit que les chiffres affichés à l'utilisateur veulent dire la même chose d'un écran à l'autre — et sans lequel personne ne peut faire confiance à un tableau de bord.