Étendre un module existant
Le premier parcours construit un module à partir de rien. Celui-ci fait l’autre moitié du travail, et c’est celle que vous ferez le plus souvent : un module existe déjà, il fait presque ce qu’il faut, et il vous manque trois champs et une règle.
La mauvaise réponse est de le copier pour le modifier. Le jour où sa version suivante sort, vous avez deux codes à réconcilier et personne pour le faire.
Ce qu’on va construire
pipeline est le module d’affaires : des pistes, des étapes, des prévisions. Il ne sait rien
de la concurrence, or c’est la première question d’une revue de portefeuille : contre qui
étions-nous, et qui a gagné ?
Nous ajoutons un module pipeline_rivals qui :
- apporte son propre modèle,
rivals_competitor; - ajoute deux champs à
pipeline_lead, sans toucher au code depipeline; - complète les écrans de
pipelineau lieu de les remplacer ; - réagit à ce qui se passe dans
pipelinesans jamais l’importer.
À la fin, la fiche d’une affaire porte « Up against » et « Lost to », la liste porte une
colonne de plus, et pipeline n’a pas changé d’une ligne.
La règle qui tient tout
Un module métier n’importe jamais un autre module métier. C’est l’interdiction n° 8 de
CLAUDE.md, et ce n’est pas un dogme de style : un import modules.pipeline vous lie à ses
fonctions internes, que rien ne vous promet de garder. Vous en dépendez, il ne le sait pas, et
sa prochaine version vous casse.
Ce que vous nommez, ce sont des faits publics :
| Vous nommez | Vous ne nommez pas |
|---|---|
un modèle (pipeline_lead) | le module Python derrière |
un champ (state, source_id) | la fonction qui le calcule |
un événement (record.updated) | la ligne qui l’émet |
un code de groupe (pipeline_manager) | l’objet groupe |
Tout le reste du parcours découle de ça.
Ce qu’il faut avoir sous la main
Une instance où pipeline est installé et activé, et le premier parcours au moins
survolé : on ne réexplique pas ici ce qu’est un modèle, une vue ou un fichier de traductions.
Les étapes
| 1 | Le module d’extension | Le manifeste, la dépendance, et ce qu’on n’écrit pas. |
| 2 | Ajouter des champs | Contribuer à un modèle qui n’est pas le vôtre. |
| 3 | Compléter un écran | Une rustine, pas un remplacement. |
| 4 | Réagir, et s’en aller | Écouter sans importer, et se désinstaller proprement. |