Une sauvegarde qui marchait et avait quand même l'air cassée
The save persisted correctly but never invalidated the React Query cache, so reopening the form showed stale data and looked like the write had been lost.
Ça disait que ça marchait
Vert, 200, enregistré, « déjà géré » — et faux. Aucune erreur sur laquelle s'appuyer.
Ajouté un champ dans le form builder, cliqué Enregistrer le brouillon, rouvert, et le champ avait disparu. Reproduit une fois de plus avant d'y faire confiance.
J'ai vérifié les suspects évidents d'abord — peut-être qu'Ajouter un champ ne touche que l'état local, peut-être que la sauvegarde échoue silencieusement. Ni l'un ni l'autre. La sauvegarde crée vraiment une nouvelle version et persiste chaque section et chaque champ, confirmé côté serveur. Le bug est une étape plus tard : le handler de sauvegarde n'invalide jamais la liste de templates en cache que Éditer le formulaire lit pour décider quelle version rouvrir, contrairement à ses deux mutations sœurs qui le font toutes les deux. Donc la sauvegarde réussit complètement et la lecture suivante sert une réponse périmée, affichant une version plus ancienne qui n'a vraiment pas le champ.
Un seul appel qc.invalidateQueries(). « Les données n'ont pas été enregistrées » et « les données ont été enregistrées et l'interface lit un cache périmé » ont l'air identiques du côté de l'utilisateur, et un seul est un bug de persistance. Ça vaut la peine de vérifier contre la base ou un rechargement forcé avant de supposer que la mutation est cassée, surtout quand des mutations sœurs dans le même fichier invalident déjà correctement — c'est un fort indice que le bug est une incohérence entre sœurs.