22 févr. 2025·8 min de lecture

Historique des modifications par champ : UX pour les diffs du panneau admin

L’historique des modifications par champ dans un panneau d’administration doit être facile à parcourir, filtrer et restaurer. Modèles UX et schéma pour diffs, événements et actions.

Historique des modifications par champ : UX pour les diffs du panneau admin

Pourquoi l’historique des modifications est ignoré dans les panneaux d’administration

La plupart des utilisateurs n’ignorent pas l’historique parce qu’ils s’en fichent. Ils l’ignorent parce que cela demande trop d’attention pour trop peu de bénéfices. Quand un client attend ou qu’une commande est bloquée, personne n’a le temps de lire une longue liste grise d’événements « mis à jour ».

Un historique lisible, par champ, mérite sa place quand il répond aux questions que les gens se posent déjà :

  • Qui a effectué la modification (et d’où, si ça a de l’importance)
  • Ce qui a changé (nom du champ plus avant et après)
  • Quand cela s’est produit (et dans quel fuseau horaire)
  • Pourquoi cela s’est produit (une raison, un ticket, le nom d’une automatisation, ou au moins un indice)

La plupart des journaux échouent sur au moins un de ces points. Le mode d’échec le plus courant, c’est le bruit : chaque sauvegarde crée 20 entrées, des jobs d’arrière-plan écrivent des horodatages inoffensifs toutes les minutes, et les processus système ressemblent aux actions humaines. Les diffs sont souvent vagues aussi. Vous voyez « statut changé » mais pas « En attente -> Approuvé », ou vous obtenez un blob JSON sans indication de ce qu’il faut regarder.

Le manque de contexte finit le travail. On ne peut pas dire quel workflow a déclenché un changement, s’il a été manuel ou automatisé, ou pourquoi deux champs ont changé ensemble.

Le résultat est prévisible. Les équipes cessent de faire confiance à la piste d’audit et passent à des suppositions, demandent autour d’elles, ou refont le travail. Cela devient dangereux dès que des actions de restauration sont ajoutées.

Un bon historique réduit le temps de support, prévient les erreurs répétées et rend les restaurations sûres parce que les utilisateurs peuvent vérifier avant et après rapidement. Traitez l’UI d’audit comme une fonctionnalité primaire, pas comme un écran de debug, et concevez-la pour être scannée sous pression.

Commencez par les jobs à accomplir

Un historique lisible commence par une décision : qui l’utilisera quand quelque chose tourne mal. « Tout le monde » n’est pas un rôle. Dans beaucoup de panneaux admin, la même vue d’audit est imposée au support, aux ops et aux managers, et elle ne sert finalement aucun d’eux.

Choisissez vos rôles principaux et ce qu’ils doivent en retirer :

  • Le support a besoin d’une histoire claire à raconter au client.
  • Les ops doivent repérer des motifs et attraper rapidement les erreurs de processus.
  • Les finances ont besoin de preuves pour approbations, remboursements et rétrofacturations.
  • Les managers exigent de la responsabilité sans se noyer dans les détails.

Définissez les tâches principales que votre historique doit supporter :

  • Enquêter sur ce qui a changé, quand et par qui
  • Expliquer le changement en langage clair à un client ou un collègue
  • Annuler une erreur en toute sécurité (restaurer une valeur précédente)
  • Exporter ou conserver des preuves pour conformité et audits

Ensuite, décidez ce que vous suivrez, et rendez-le explicite. Un historique solide par champ inclut généralement les éditions de champs, les transitions de statut et les actions clés de workflow (comme « approuvé », « verrouillé », « remboursé »). Beaucoup d’équipes ajoutent aussi les uploads et suppressions de fichiers, les changements de permissions et les mises à jour déclenchées par des intégrations. Si vous ne suivez pas quelque chose, les utilisateurs supposent que le système le cache.

Enfin, définissez à l’avance les règles de restauration. La restauration ne doit être autorisée que lorsqu’elle est sûre et pertinente. Restaurer une adresse de livraison peut être acceptable. Restaurer un statut « payé » peut être bloqué une fois qu’un paiement a été traité. Indiquez la raison du blocage dans l’UI ("Restauration désactivée : remboursement déjà émis").

Un scénario rapide : un client affirme que son plan a été rétrogradé sans autorisation. Le support doit voir si c’était un agent, le client ou une règle de facturation automatique, et si une restauration est possible. Concevez autour de cette histoire et les décisions UI deviennent plus simples.

Schémas de données pour les événements d’audit

Si votre modèle de données est en désordre, votre historique le sera aussi. L’UI ne peut être plus claire que les enregistrements qui la sous-tendent.

Événement vs instantané

Un modèle par événement stocke seulement ce qui a changé (champ, avant, après). Un modèle par instantané stocke l’enregistrement complet après chaque modification. Pour les panneaux admin, un hybride fonctionne souvent le mieux : conservez les événements comme source de vérité, et stockez éventuellement un instantané léger pour un affichage ou une restauration rapide.

Les événements répondent à ce qui a changé, qui l’a fait et quand. Les instantanés aident quand les utilisateurs ont besoin d’une vue « état à t » rapide, ou quand il faut restaurer plusieurs champs ensemble.

Le minimum à logger

Gardez chaque enregistrement de changement petit, mais suffisamment complet pour s’expliquer plus tard. Un minimum pratique :

  • actor_id (et actor_type comme user, system, integration)
  • occurred_at (timestamp en UTC)
  • entity_type + entity_id (ce qui a été modifié)
  • field_key (stable, pas une étiquette affichée)
  • before_value + after_value (stocker en texte ou JSON, plus un data_type)

Pour répondre au « pourquoi cela s’est produit ? », ajoutez du contexte optionnel. Un court commentaire suffit souvent, mais des références structurées sont encore meilleures quand vous les avez : ticket_id, workflow_run_id, import_batch_id, ou une raison_automatisée comme "nightly sync".

Grouper les modifications multi-champs dans un change set

Les gens pensent rarement en champs isolés. Ils pensent « j’ai mis à jour l’adresse du client » même si cinq champs ont changé. Modelez cela avec un change_set_id qui lie plusieurs événements de champ.

Un schéma simple :

  • Une ligne change_set par action de sauvegarde
  • Plusieurs lignes field_change pointant vers ce change_set
  • Une raison/commentaire partagé sur le change_set (non répété par champ)

Cela permet à l’UI d’afficher une entrée lisible par sauvegarde, avec une option d’expansion pour voir chaque diff de champ.

Modèles de layout que l’on peut scanner rapidement

Un bon historique appartient à l’endroit où se pose la question : sur l’écran détail de l’enregistrement. Un onglet « Historique » à côté de « Détails » et « Notes » garde les gens dans le contexte pour qu’ils puissent confirmer ce qui a changé sans perdre le fil.

Une page d’audit séparée a toujours sa place. Servez-vous-en quand le travail consiste à rechercher à travers plusieurs enregistrements (par exemple, « montre-moi chaque changement de prix fait par Kim hier ») ou quand des auditeurs ont besoin d’exports. Pour le travail quotidien de support et ops, l’historique au niveau de l’enregistrement l’emporte.

La vue par défaut doit répondre en un coup d’œil à quatre questions : ce qui a changé, qui l’a changé, quand cela s’est produit et si cela faisait partie d’une édition plus large. Trier du plus récent au plus ancien est attendu, mais le regroupement par session d’édition rend la lecture vraiment possible : un élément par sauvegarde, avec les champs modifiés à l’intérieur.

Pour garder la lecture rapide, affichez uniquement ce qui a changé. Ne réimprimez pas tout l’enregistrement. Cela transforme l’historique en bruit et rend les vraies modifications plus difficiles à repérer.

Une carte d’événement compacte fonctionne généralement bien :

  • En-tête : nom (ou étiquette système) et horodatage exact
  • Étiquette source : Édition manuelle, Import, API, Automatisation
  • Champs modifiés : une ligne par champ avec anciennes et nouvelles valeurs
  • « Afficher plus » pour les textes longs
  • Champs importants épinglés en haut (statut, responsable, prix)

Faites ressortir visuellement « qui l’a fait » et « quand » ; ne les enterrez pas. Utilisez un alignement cohérent et un format d’heure unique.

Diffs avant et après qui restent lisibles

Centralize audit logging
Capture UI, API, and automation changes with one Business Process flow.
Create project

Les gens ouvrent l’historique quand quelque chose semble incorrect. Si le diff est difficile à analyser, ils abandonnent et demandent à un collègue. De bons diffs rendent le changement évident d’un coup d’œil et détaillé en un clic.

Pour la plupart des champs, l’affichage inline fonctionne le mieux : afficher Avant -> Après sur une ligne, en ne mettant en évidence que la partie modifiée. Le côte à côte est utile quand les valeurs sont longues (comme les adresses) ou quand il faut comparer plusieurs parties, mais cela prend de la place. Règle simple : par défaut inline, passer en côte à côte seulement lorsque le retour à la ligne masque la différence.

Les textes longs demandent un soin particulier. Montrer un paragraphe entier dans une liste dense fait tout ressembler à du bruit. Affichez un extrait court (120 à 200 caractères) et un contrôle Développer qui révèle la valeur complète. Quand on développe, conservez les sauts de ligne. N’utilisez une police à chasse fixe que pour du contenu véritablement code-like, et mettez en évidence seulement les fragments modifiés pour donner un point d’ancrage visuel.

Les nombres, monnaies et dates paraissent souvent « inchangés » alors qu’ils ne le sont pas. Quand cela compte, montrez la valeur brute et le format destiné à l’utilisateur. Par exemple, "10000" -> "10,000.00 USD" peut être un vrai changement (précision et devise), pas seulement une question de présentation.

Les enums et statuts sont un autre piège. Les gens reconnaissent les libellés, tandis que les systèmes s’appuient sur des codes internes. Affichez d’abord le libellé, et montrez la valeur interne seulement quand le support ou la conformité en a besoin.

Schémas pratiques de diff qui restent scannables

  • Inline : Avant -> Après, ne mettre en évidence que la portion modifiée
  • Côte à côte : deux colonnes pour les champs longs ou multi-parties
  • Texte long replié : extrait avec Développer, préserver les sauts de ligne quand on ouvre
  • Formatage typé : afficher la valeur plus son format (fuseau horaire, devise, précision)
  • Statut/enums : libellé plus code interne optionnel

Filtres qui réduisent le bruit sans cacher les faits

La plupart des gens ouvrent l’historique seulement quand quelque chose ne va pas. Si le premier écran affiche 300 petites modifications, ils le fermeront. De bons filtres font deux choses : couper rapidement le bruit et garder la vérité complète à un clic.

Commencez par un jeu restreint et prévisible de filtres :

  • Plage temporelle (dernière heure, 24 heures, 7 jours, personnalisé)
  • Acteur (une personne, un compte de service, inconnu)
  • Champ (statut, prix, adresse, permissions)
  • Type de changement (créé, mis à jour, effacé, restauré)
  • Source (action utilisateur vs automatisation/import/API)

Les défauts comptent plus que des contrôles sophistiqués. Un défaut solide est « Champs importants » et « 7 derniers jours », avec une option claire pour basculer sur « Tous les champs » et des plages plus longues. Un simple bascule « Montrer le bruit » fonctionne bien pour des choses comme last_seen_at, de petites modifications de format ou des totaux recalculés automatiquement. L’objectif n’est pas de cacher les faits, mais de les tenir à l’écart tant qu’ils ne sont pas nécessaires.

La recherche dans l’historique est souvent le moyen le plus rapide de confirmer une suspicion. Gardez-la tolérante : autorisez les correspondances partielles, ignorez la casse et cherchez dans le nom du champ, le nom de l’acteur et les valeurs affichées. Si quelqu’un tape "refund", il doit voir les notes, les changements de statut et les mises à jour d’état de paiement sans deviner où cela se trouve.

Les vues de filtres enregistrées aident à répéter les enquêtes. Les équipes de support font les mêmes vérifications sur chaque ticket. Conservez-en quelques-unes et rendez-les adaptées aux rôles (par exemple, « Champs orientés client uniquement » ou « Changements d’automatisation »).

Actions de restauration qui inspirent confiance

Track high-risk changes clearly
Log approvals, refunds, and permission changes with clear attribution.
Start audit

Un bouton Restaurer n’est utile que si les gens lui font confiance. La restauration doit se ressentir comme une modification soigneuse et visible, pas comme un retour en arrière magique.

Affichez la restauration là où l’intention est claire. Pour des champs simples (statut, plan, assigné), une restauration par champ fonctionne bien car l’utilisateur comprend exactement ce qui changera. Pour des éditions multi-champs (bloc d’adresse, jeu de permissions, détails de facturation), préférez restaurer le change_set complet, ou proposez « restaurer tout depuis cette édition » à côté des restaurations individuelles. Cela évite les demi-restaurations qui créent des combinaisons étranges.

Rendez l’impact explicite avant toute action. Une bonne confirmation de restauration nomme l’enregistrement, le champ et les valeurs exactes, et montre ce qui sera touché.

  • Exigez la permission appropriée (séparée de « modifier ») et montrez qui y a droit.
  • Confirmez avec les valeurs exactes avant et après.
  • Prévenez des effets secondaires (par exemple, restaurer un e‑mail peut déclencher une notification).
  • Proposez un défaut sûr : prévisualiser d’abord, puis appliquer.

Les conflits sont là où la confiance se casse, alors traitez-les calmement. Si le champ a changé après l’événement que vous restaurez, n’écrasez pas aveuglément.

Gestion des conflits

Quand la valeur actuelle diffère de la valeur « après » de l’événement, affichez une courte vue comparative : « Vous essayez de restaurer en X, mais la valeur actuelle est Y. » Puis proposez des actions comme restaurer quand même, copier l’ancienne valeur, ou annuler. Si cela correspond à votre flux, ajoutez une zone de raison pour que la restauration ait du contexte.

Ne supprimez jamais l’historique en restaurant. Enregistrez la restauration comme un nouvel événement avec une attribution claire : qui a restauré, quand, et de quel événement elle provient.

Pas à pas : implémenter un historique lisible de bout en bout

Build a readable audit trail
Model events and diffs in PostgreSQL and show clear history in your admin UI.
Start building

Vous pouvez construire un historique en lequel les gens ont confiance si vous prenez quelques décisions en amont et les maintenez cohérentes entre l’UI, l’API et les automatisations.

Une construction pratique en 5 étapes

  • Étape 1 : Choisissez les entités qui ont vraiment besoin d’un historique. Commencez par les objets qui provoquent des litiges ou un risque financier : utilisateurs, commandes, tarification, permissions. Si vous ne pouvez pas répondre à « Qui a changé ça et quand ? » pour ceux-là, le support et les finances le sentiront en premier.
  • Étape 2 : Définissez votre schéma d’événement et ce qui compte comme un change_set. Décidez si une sauvegarde devient un événement pouvant contenir de nombreuses éditions de champs. Stockez le type/id de l’entité, l’acteur (utilisateur ou système), la source (UI admin, API, automatisation), l’horodatage, plus la liste des champs modifiés avec les valeurs avant/après.
  • Étape 3 : Capturez les changements de la même manière partout. Les éditions via l’UI sont simples. La partie difficile, ce sont les appels API et les jobs en arrière-plan. Placez l’audit en un seul endroit (couche service ou logique métier) pour ne pas oublier une voie.
  • Étape 4 : Construisez la page d’enregistrement et l’ensemble de filtres ensemble. Commencez par une liste en ordre inverse où chaque item indique qui, quand, et un court résumé « 3 champs modifiés ». Les filtres doivent correspondre à de vraies questions : par champ, par acteur, par source, et « montrer seulement les changements importants ».
  • Étape 5 : Ajoutez la restauration avec des permissions strictes et de la journalisation supplémentaire. La restauration est une nouvelle modification, pas une machine à remonter le temps. Quand un utilisateur restaure une valeur, créez un événement d’audit qui capture qui l’a fait, ce qui a changé, et (optionnellement) pourquoi.

Avant la mise en production, testez un scénario réaliste : un agent support ouvre une commande, filtre sur les champs de tarification, voit une seule sauvegarde qui a modifié sous‑total, remise et taxe, puis restaure seulement la remise. Si ce flux se lit clairement sans explication, votre historique sera utilisé.

Erreurs communes et pièges

La plupart des vues d’historique échouent pour une raison simple : elles ne respectent pas l’attention. Si le journal est bruyant ou déroutant, les gens cessent de l’utiliser et reviennent aux suppositions.

Un piège courant est d’enregistrer trop. Si vous consignez chaque frappe, chaque tick de sync en arrière-plan ou chaque mise à jour automatique, le signal disparaît. Le personnel ne peut plus repérer la modification qui comptait. Enregistrez des commits significatifs : "Statut changé", "Adresse mise à jour", "Limite augmentée", pas "Utilisateur a tapé A, puis B".

Trop peu logger est tout aussi dommageable. Une vue d’historique sans acteur, sans horodatage, sans raison ou sans valeur avant n’est pas un historique. C’est une rumeur.

Les libellés peuvent aussi briser la confiance silencieusement. Les noms de base de données bruts (comme cust_id), des IDs internes ou des valeurs d’enum cryptiques obligent le personnel non technique à interpréter le système au lieu de l’événement. Utilisez des libellés humains (« Client », « Plan », « Adresse de livraison ») et affichez les noms conviviaux à côté des IDs seulement quand c’est nécessaire.

Les erreurs qui tuent le plus souvent l’utilisabilité :

  • Traiter le bruit système comme des événements de première importance (syncs, heartbeats, calculs automatiques)
  • Stocker des changements sans contexte (acteur manquant, raison manquante, source comme API vs UI)
  • Afficher des clés de champ techniques au lieu de mots utilisateurs
  • Mélanger des changements sans rapport dans un seul blob, rendant les diffs difficiles à lire
  • Cacher des événements importants derrière des filtres agressifs ou des défauts trompeurs

Les actions de restauration sont la zone à plus haut risque. Un undo en un clic semble rapide jusqu’à ce que cela casse autre chose (paiements, permissions, inventaire). Faites en sorte que les restaurations semblent sûres :

  • Confirmez toujours et montrez exactement ce qui sera reverté
  • Avertissez des effets secondaires (règles déclenchées, champs dépendants recalculés)
  • Exigez une note de raison pour les champs sensibles
  • Montrez ce qui s’est passé après la restauration (un nouvel événement, pas des modifications silencieuses)

Liste de contrôle rapide pour un bon historique des changements

Prototype history UI fast
Use AppMaster UI builders to create a scan-friendly History tab in hours.
Try AppMaster

Un bon affichage d’historique est celui que votre équipe de support peut utiliser pendant que le client est encore en ligne. Si cela prend plus de quelques secondes pour répondre à « quoi a changé, quand et par qui ? », les gens arrêtent de l’ouvrir.

  • Test des 10 secondes : depuis le premier écran, quelqu’un peut‑il pointer l’entrée exacte qui explique le changement, en montrant les anciennes et nouvelles valeurs sans clics supplémentaires ?
  • Attribution claire à chaque fois : chaque événement montre qui l’a fait (utilisateur nommé) ou ce qui l’a fait (système, import, automatisation), plus un horodatage lisible et le fuseau horaire de l’utilisateur si pertinent.
  • Réduction rapide sans deviner : les filtres permettent de sauter facilement sur un champ et une fenêtre temporelle serrée (par exemple Statut + 7 derniers jours), et l’UI affiche combien de résultats restent.
  • La restauration rassure, elle n’effraie pas : la restauration est visible uniquement pour les bons rôles, exige une confirmation qui nomme le champ et la valeur exacte restaurée, et avertit si elle écrasera un changement plus récent.
  • Les restaurations sont enregistrées comme de vrais événements : une restauration crée un nouvel enregistrement d’audit (pas un renversement caché) qui capture qui a restauré, quelle valeur a été restaurée et quelle valeur elle a remplacée.

Un moyen pratique de valider ceci est un petit exercice « dispute support ». Choisissez un enregistrement avec beaucoup d’éditions et demandez à un collègue : « Pourquoi le client voit-il une adresse de livraison différente de celle d’hier ? » S’ils peuvent filtrer sur Adresse, voir le diff avant/après et identifier l’acteur en moins de 10 secondes, vous êtes proche.

Exemple : résoudre un litige support avec l’historique d’audit

Un client ouvre un ticket : "Le total de ma facture a changé après que j’aie appliqué une remise. On m’a surfacturé." C’est là que l’historique par champ fait gagner du temps, mais seulement s’il est lisible et exploitable.

Dans l’enregistrement de facture, l’agent support ouvre l’onglet Historique et réduit d’abord le bruit. Il filtre sur les 7 derniers jours et sélectionne les champs Remise et Total. Puis il filtre par acteur pour n’afficher que les changements faits par un utilisateur interne (ni le client ni une automatisation).

La timeline affiche maintenant trois entrées claires :

  • 2026-01-18 14:12, Acteur : Sales Rep, Champ : Discount, 10% -> 0%, Raison : "Promo expired"
  • 2026-01-18 14:12, Acteur : System, Champ : Total, $90 -> $100, Raison : "Recalculated from line items"
  • 2026-01-18 14:13, Acteur : Sales Rep, Commentaire : "Customer requested removal"

L’histoire est évidente : la remise a été supprimée, et le total recalculé juste après. L’agent peut maintenant confirmer si la suppression était correcte en vérifiant le commentaire et les règles promo.

Si c’était une erreur, l’agent utilise un flux de restauration sécurisé sur le champ Discount. L’UI prévisualise ce qui va changer (Remise retournée à 10%, Total recalculé) et demande une note.

  • Cliquer sur Restaurer à côté de "Discount: 10% -> 0%"
  • Ajouter commentaire : "Restored discount per ticket #18421. Promo still valid."
  • Confirmer et notifier l’équipe facturation (et éventuellement le client)

Si vous construisez un panneau admin avec une plateforme no-code comme AppMaster (appmaster.io), vous pouvez modéliser les tables d’audit dans PostgreSQL, centraliser les écritures d’audit dans des Business Processes, et réutiliser les mêmes patterns d’UI d’historique sur le web et le mobile pour que l’histoire reste cohérente partout où votre équipe travaille.

FAQ

Why do users ignore change history in admin panels?

La plupart des gens l’ignorent parce que c’est difficile à parcourir et rempli de bruits peu utiles. Faites en sorte que chaque entrée réponde immédiatement à quatre choses : qui l’a fait, ce qui a changé avec les valeurs avant/après, quand cela s’est produit dans un format cohérent, et pourquoi ou quelle source a provoqué le changement.

What changes should we track to make history useful without creating noise?

Enregistrez des commits significatifs, pas chaque petite modification. Suivez les éditions de champs, les transitions d’état et les actions clés de workflow, et indiquez clairement si l’acteur était une personne, une automatisation, une importation ou un appel API pour que le bruit système ne ressemble pas à une action humaine.

Should we store audit data as events or full snapshots?

Commencez par un modèle d’événements qui enregistre uniquement ce qui a changé, puis ajoutez éventuellement des instantanés légers si vous avez besoin d’une vue rapide de « l’état à t » ou d’une restauration groupée. Un hybride est souvent le meilleur compromis : événements pour la vérité et la lisibilité, instantanés pour les performances et les restaurations multi-champs.

What fields are non-negotiable in an audit record?

Un minimum pratique : identité et type de l’acteur, horodatage en UTC, type d’entité et ID, clé de champ stable, et valeurs avant/après avec type de données. Ajoutez du contexte optionnel (commentaire, workflow_run_id, import_batch_id, ou raison d’automatisation) pour pouvoir répondre au « pourquoi » plus tard.

How do we group multi-field edits so the timeline stays readable?

Utilisez un change_set ID pour regrouper toutes les modifications de champs issues d’un même enregistrement ou d’un même workflow. L’interface pourra alors afficher une seule entrée lisible comme « 5 champs modifiés » avec une vue développable, au lieu d’inonder la timeline de 20 lignes séparées.

What’s the best way to display before/after diffs for different field types?

Par défaut, affichez avant-et-après inline sur une seule ligne, et basculez en mode côte à côte seulement quand le retour à la ligne masque la différence significative. Pour les textes longs, montrez un extrait par défaut et développez sur demande en conservant les sauts de ligne afin de préserver la lisibilité.

How should we handle time zones in audit history?

Conservez le stockage en UTC et affichez ensuite dans le fuseau horaire du lecteur quand c’est pertinent. Si les équipes travaillent sur plusieurs fuseaux, affichez l’étiquette du fuseau à côté de l’heure affichée pour que le « quand » soit sans ambiguïté lors des appels support.

Which filters actually help people find the right change fast?

Commencez par un petit ensemble qui reflète les vraies questions : plage temporelle, acteur, champ, type de changement et source (manuel vs automatisation/import/API). Choisissez un défaut sûr comme « 7 derniers jours » + « champs importants » et montrez clairement comment révéler tout le reste quand nécessaire.

How do we make restore actions feel safe and prevent bad rollbacks?

Traitez la restauration comme une nouvelle édition visible avec des permissions strictes et un aperçu clair de ce qui va changer. Si la valeur actuelle diffère de la valeur « après » de l’événement que vous restaurez, affichez le conflit clairement et exigez un choix explicite pour ne pas écraser du travail plus récent en silence.

How can we implement this end to end on AppMaster without missing API or automation changes?

Centralisez l’écriture des audits en un seul point pour que les modifications depuis l’UI, les appels API et les jobs en arrière-plan soient toutes journalisées de la même façon. Dans AppMaster, vous pouvez modéliser les tables d’audit dans PostgreSQL, écrire les événements d’audit depuis des Business Processes, et réutiliser les mêmes patterns d’interface d’historique sur le web et le mobile pour que l’histoire reste cohérente partout.

Facile à démarrer
Créer quelque chose d'incroyable

Expérimentez avec AppMaster avec un plan gratuit.
Lorsque vous serez prêt, vous pourrez choisir l'abonnement approprié.

Démarrer