Versions documentaires
NFZ Docs Notion Editor 0.1.70 consolide une fondation de versioning documentaire pour sécuriser les opérations de sauvegarde, suppression et restauration des pages Markdown.
Objectif
Le service docs-versions conserve des snapshots Markdown associés au tenant courant. Il est conçu pour préparer un usage SaaS commercial : auditabilité, restauration contrôlée, support client et preuve de modification.
Fonctionnement
Des snapshots sont créés automatiquement :
- après la création d’une page Markdown ;
- avant une sauvegarde complète ;
- avant un patch de contenu ;
- avant une suppression ;
- avant une restauration.
Chaque version contient :
- le chemin de la page ;
- le contenu Markdown ;
- un hash SHA-256 ;
- la taille ;
- le numéro de version ;
- l’action source ;
- l’auteur si disponible ;
- le tenant ;
- la date de création.
Page d’administration
La page /admin/versions permet de :
- filtrer l’historique par page ;
- filtrer par action ;
- rechercher dans les métadonnées ;
- prévisualiser le Markdown d’une version ;
- copier le contenu ;
- restaurer une version antérieure ;
- comparer deux versions avec l’onglet Diff visuel ;
- identifier rapidement les lignes ajoutées, supprimées ou modifiées.
Sécurité
La consultation et la restauration sont protégées par :
NFZ_LICENSE_ENFORCEMENT=true
auditTrail=trueLa création directe de versions depuis le client est interdite. Les snapshots sont générés côté serveur par les hooks NFZ/Feathers.
Verrou optimiste
La sauvegarde depuis /admin/docs-editor utilise maintenant un hash contentHash chargé avec la page. Lors de docs-pages.patch(), l’éditeur transmet expectedHash. Si le contenu a changé entre le chargement et la sauvegarde, le serveur renvoie une erreur 409 Conflict au lieu d’écraser silencieusement la page.
Ce mécanisme est indispensable pour une offre SaaS multi-utilisateurs : il protège contre les pertes de modifications concurrentes et pousse l’administrateur à recharger ou comparer les versions avant de continuer.
Restauration
Une restauration remplace le contenu Markdown courant par le snapshot choisi. Avant l’écrasement, le contenu courant est lui-même snapshoté, afin de pouvoir revenir en arrière.
Limites actuelles
Cette itération pose la fondation. Les évolutions recommandées sont :
- affichage diff visuel ligne à ligne ;
- politique de rétention automatique par édition ;
- export de l’historique ;
- comparaison entre deux versions ;
- verrou optimiste avec hash côté éditeur.