Aller au contenu

É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 de pipeline ;
  • complète les écrans de pipeline au lieu de les remplacer ;
  • réagit à ce qui se passe dans pipeline sans 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 nommezVous 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

1Le module d’extensionLe manifeste, la dépendance, et ce qu’on n’écrit pas.
2Ajouter des champsContribuer à un modèle qui n’est pas le vôtre.
3Compléter un écranUne rustine, pas un remplacement.
4Réagir, et s’en allerÉcouter sans importer, et se désinstaller proprement.