payload/gate English

Troncature silencieuse : quand un système enregistre moins que ce qu’on lui envoie

L’appel réussit. L’import ne signale aucune erreur. Une semaine plus tard, un client reçoit un document avec un nom de produit coupé au milieu. Rien n’a échoué, et c’est bien le problème.

Comment cela arrive

Chaque champ enregistré a une taille. Une colonne de base de données, une position dans un fichier à largeur fixe, une zone dans un logiciel métier ancien : chacun contient un nombre de caractères défini. Quand une valeur plus longue arrive, le système qui reçoit a trois possibilités. Il peut refuser tout le message, refuser l’enregistrement, ou garder ce qui rentre et abandonner le reste. Beaucoup choisissent la troisième, parce qu’elle laisse l’import de la nuit se terminer.

La troncature existe rarement le premier jour. Elle apparaît plus tard, de l’une de ces trois façons :

  • La source grandit. Les libellés de produits faisaient 25 caractères depuis des années. On y ajoute la matière et la norme, et ils en font 50.
  • La cible rétrécit. Une nouvelle version du logiciel qui reçoit, ou une nouvelle règle, ramène une zone de 35 à 30 caractères.
  • Une nouvelle cible s’ajoute. Le même export alimente désormais aussi un transporteur, une place de marché ou une plateforme de facturation, chacun avec ses propres limites.

Pourquoi personne ne le remarque

L’émetteur reçoit un code de succès. Le récepteur consigne un import normal. La valeur tronquée reste un texte plausible, donc aucun écran ne semble cassé. Les personnes qui pourraient faire le lien, celle qui connaît la limite et celle qui connaît les données, travaillent le plus souvent dans deux entreprises différentes.

Comment le détecter

  1. Écrire les limites. Pour chaque champ que le récepteur accepte : son type, s’il est obligatoire, sa longueur maximale. Cette liste, c’est le format. Elle est courte, et en général elle n’existe nulle part.
  2. Comparer ce que vous envoyez à cette liste. Avant que le fichier ou l’appel parte, confronter chaque valeur au format. Le validateur CSV et le validateur JSON le font dans le navigateur, avec la ligne et le champ de chaque problème.
  3. Contrôler de vraies données, pas un fichier de test. Un exemple écrit à la main a des libellés courts. L’export du mois dernier contient les longs.

Comment l’empêcher durablement

Un contrôle ponctuel trouve les problèmes d’aujourd’hui. Deux habitudes évitent les suivants.

Refuser au lieu de tronquer. Placer le contrôle entre les deux systèmes, pour qu’une valeur qui ne rentre pas soit refusée avec son motif, dans le même appel, avant que le récepteur la voie. Un refus se voit ; une troncature, non. C’est exactement ce que fait un point de contrôle.

Considérer que le format a des versions. Quand le récepteur annonce un changement, comparez le nouveau format à l’actuel et testez des messages récents contre lui. Vous apprenez combien échoueraient, et lesquels, tant qu’il est encore temps de prévenir l’émetteur.