La réconciliation du contenu
Livrer du contenu sans le détruire : c'est le problème que ce mécanisme résout. Auparavant, une mise à jour vidait les pages puis réécrivait celles de l'émetteur. Les uuid survivaient, mais tout ce que l'autre côté avait créé ou modifié disparaissait. C'était tolérable tant que seuls des développeurs coordonnés modifiaient les pages. Cela ne l'est plus quand deux développeurs travaillent sur les mêmes pages d'un ERP — le cas le plus fréquent et le plus conflictuel, qui se présente chaque semaine plutôt qu'une fois par an.
Un seul mécanisme, pas deux
La base ne se soucie pas d'être en développement, en préproduction ou en production. Elle voit un fichier de mise à jour, elle le joue, et elle en produit un autre. Une livraison de l'éditeur vers un client et un échange entre deux développeurs sont le même objet, traité par le même code.
Conséquence : chaque import produit son contre-import. Un aller-retour complet entre les machines les amène toutes au même état.
Le fichier d'échange est un instantané complet
Jamais un delta. Un export complet converge quel que soit l'ordre des échanges ; un fichier de différences suppose de savoir par rapport à quoi il diffère, ce qui est justement le problème à éliminer.
Il contient :
- l'image complète des tables web ;
- des horodatages par champ, tirés de
BSPK_HISTORY(qui travaille au champ, là oùmodifiedOntravaille à l'enregistrement) ; - les enregistrements supprimés, avec leur horodatage ;
- dans son en-tête, sa date de génération et la date du dernier import de l'émetteur.
L'export git automatique main.json est inchangé et sans rapport : le fichier de mise à jour coûte plus cher à produire, et il est généré à la demande depuis une page d'administration.
Une seule valeur par base
Chaque base ne conserve qu'un seul état : la date de son dernier import, rangée dans la table BSPK à côté de currentVersion. Aucun historique d'instantanés n'est nécessaire, et c'est ce qui rend le mécanisme abordable.
L'arbitrage se fait bloc par bloc
Quand les deux côtés ont touché la même chose, le conflit est présenté bloc par bloc, avec un aperçu de chaque version, et c'est une personne qui tranche — pas une règle qui choisirait un gagnant en silence. Reconcile_FC produit cet écran (renderConflicts, _diffValeurs, _apercuVisuel) à l'adresse /bweb/reconcile.
Pièges
?pk=est réservé par le routeur. N'utilisez pas ce nom de paramètre pour vos propres besoins sur un écran de réconciliation.- Une livraison en attente met le site dans un état d'attente : vérifiez
hasPendingavant de supposer qu'un import a déjà eu lieu.
Voir aussi
- Le modèle de données — ce qui est échangé
- L'API Claude —
export-template/import-templatepour un gabarit isolé

