Comportement observé
Tous les retours HTTP 200 en amont étaient acheminés comme s’ils étaient acceptés, même lorsque le corps de la réponse JSON retournait needs_input ou failed.
Exemple de dossier de réparation · DEMO-001
Le projet pilote à 99 $ CA (CAD 99) comprend le diagnostic, un correctif contrôlé s’il y a lieu, des éléments de validation, des notes de retour en arrière et une liste de vérification en préproduction.
01 / Problème
Tous les retours HTTP 200 en amont étaient acheminés comme s’ils étaient acceptés, même lorsque le corps de la réponse JSON retournait needs_input ou failed.
La logique corrigée doit suivre le résultat dans le corps de la réponse, relever les identifiants de prospect manquants, s’arrêter de façon sécuritaire devant un état inconnu et conserver l’identifiant d’événement entrant pour les vérifications de rejeu du client en préproduction.
02 / Diagnostic
Le flux traitait la réussite au niveau HTTP comme un prospect accepté sans lire le résultat opérationnel dans body.status. Un deuxième mappage attendait seulement lead_id; les charges utiles utilisant leadId perdaient donc leur identifiant avant l’étape de réponse.
avant : accepted = response.statusCode === 200
après : outcome = normalizeStatus(response.body?.status)
leadId = input.leadId ?? input.lead_id ?? null
03 / Correctif sécuritaire
leadId et lead_id dans un seul champ interne avant tout embranchement.accepted, needs_input et failed.04 / Validation
| Cas d’essai | Variation d’entrée | Branche attendue | Résultat observé |
|---|---|---|---|
| F-01 | lead_id + accepted | accepted | RÉUSSI · LOGIQUE ISOLÉE |
| F-02 | leadId + accepted | accepted | RÉUSSI · LOGIQUE ISOLÉE |
| F-03 | HTTP 200 + needs_input | needs_input | RÉUSSI · LOGIQUE ISOLÉE |
| F-04 | HTTP 200 + failed | failed | RÉUSSI · LOGIQUE ISOLÉE |
| F-05 | identifiant de prospect manquant | validation_error | RÉUSSI · LOGIQUE ISOLÉE |
| F-06 | état inconnu dans le corps | failed_closed | RÉUSSI · LOGIQUE ISOLÉE |
05 / Plan de retour en arrière
Importer le fichier JSON corrigé dans un projet en préproduction, reconnecter les identifiants d’accès appartenant au client, rejouer F-01 à F-06 et confirmer que les écritures en aval utilisent l’identifiant de prospect normalisé. Les réussites hors ligne ne remplacent pas cette vérification d’exécution dans n8n.
Désactiver le flux de travail corrigé, réactiver l’exportation originale intacte, puis effectuer un rejeu seulement après que le client a vérifié que l’identifiant d’événement est absent du journal de destination. Aucune déduplication automatique n’est comprise.