Aller au contenu

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.svg

Un 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

Fenêtre de terminal
kewos demo load --database-url "$KEWOS_DATABASE_URL" -m pipeline_rivals
demo: 1 record(s) created

La même commande, une seconde fois :

demo: 0 record(s) created

C’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

Fenêtre de terminal
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.