Les données de démo
Un module installé sur une base vide ne montre rien. On peut demander au lecteur de saisir quinze fiches avant de voir un écran, ou lui livrer de quoi regarder.
Le dossier
modules/pipeline_rivals/ demo/ rivals_competitor.json assets/ logo.svgUn fichier par modèle, nommé comme lui. Rien à appeler : le noyau lit ce dossier.
[ { "ref": "pipeline_rivals.demo_meridian", "name": "Meridian Suite", "tier": "direct", "notes": "Strong on reporting, sells to the CFO." }]Le chargement
kewos demo load --database-url "$KEWOS_DATABASE_URL" -m pipeline_rivalsdemo: 1 record(s) createdLa même commande, une seconde fois :
demo: 0 record(s) createdC’est l’ref qui rend le rejeu inoffensif : il est enregistré dans le registre
d’identifiants externes, et une fiche déjà liée est sautée. Un ref absent, c’est une
fiche recréée à chaque appel.
En production, ça refuse
kewos demo load --database-url "$KEWOS_DATABASE_URL"DemoDataError: demo data loading refuses to run outside development(KEWOS_ENV is 'production'); demo data is never seeded into a real environment.Le garde-fou est dans le chargeur, pas dans une consigne. Un jeu d’essai versé dans la base d’un client ne se distingue plus de ses données réelles au bout de quelques jours : c’est irréversible sans sauvegarde, et personne ne s’en aperçoit tout de suite.
Les quatre conventions qui évitent les surprises
Une relation se donne par ref. Un champ Link dont la valeur est une chaîne est
résolu contre le registre :
{ "ref": "pipeline.demo_lead_acme", "stage_id": "pipeline.demo_stage_proposition" }Un ref inconnu lève en nommant le champ et la valeur, plutôt que d’écrire un lien
vide.
L’ordre est celui des dépendances, puis celui des noms de fichiers dans le module. Une
fiche référencée doit être chargée avant celle qui la référence : core avant sales, et
pipeline_stage.json avant pipeline_lead.json.
Une image est un chemin, pas un contenu. Un champ fichier dont la valeur est une chaîne
désigne un fichier de demo/assets/. Il est téléversé dans le stockage puis rattaché après
la création de la ligne. Sans stockage configuré, la fiche se charge quand même, sans image.
Un montant se donne par sa seule jambe _amount. Le triplet monétaire est complété par
le noyau, à la devise de la société. Écrire les trois colonnes à la main, c’est risquer d’en
figer une qui devrait être dérivée.
Ce que ça vaut d’écrire
Les données de démo passent par la session filtrée, comme des données réelles : les ACL, l’audit, les séquences, les valeurs dérivées et le calcul des champs stockés s’appliquent. Elles ne sont donc pas seulement de la décoration : elles exercent votre module de bout en bout, et un jeu qui ne se charge pas révèle un modèle qui ne se remplit pas.
C’est aussi ce que voit une démonstration client. Une piste appelée « Test 3 » avec un montant de 1 € raconte quelque chose sur le produit, et ce n’est pas flatteur.