Aller au contenu principal

Erreurs d'intégration

L'écran Erreurs d'intégration est l'outil d'analyse des échecs construit sur la table de validation (F564236). Il affiche chaque entrée enregistrée par le pipeline de validation — des échecs de règles XSD / Schematron jusqu'aux erreurs d'intégration de cycle de vie (PDF, PA, base, …) — au travers de trois vues complémentaires :

  • par règle — cartes classées et regroupées par (règle, source), qui indiquent chacune le nombre de factures touchées par la règle et les pastilles de sévérité associées. Le moyen le plus rapide pour repérer la règle qui pose le plus de problèmes en ce moment.
  • par événement — tableau plat de chaque événement d'erreur, avec sa sévérité, sa source, sa règle, son message, son triplet documentaire et le statut courant de la facture. L'endroit pour analyser une ligne précise.
  • détaillée — une ligne par facture avec l'évènement le plus récent et une pastille +N qui compte les évènements plus anciens ; déplier pour lire toute la chronologie de la facture. L'endroit pour lire toutes les erreurs d'une facture d'un coup d'œil.

La page s'applique quel que soit le système source — JD Edwards, SAP, NetSuite ou ERP personnalisé. Les erreurs proviennent du pipeline de validation, qui travaille sur l'UBL généré ; le format source est donc transparent à ce stade.

Refonte en 2026.05.4

La page était limitée jusqu'ici à la vue des erreurs orphelines — un tableau plat des lignes F564236 sans en-tête de facture rattaché. Elle devient un vrai outil d'analyse des échecs : bascule par règle / par événement, filtre catégorie (UBL vs Intégration / cycle de vie), descriptions lisibles tirées des Schematron embarqués, et case Sans rattachement uniquement qui rétablit l'ancien comportement en un clic. La vue par défaut affiche désormais toutes les erreurs ; l'orphelin n'est plus le filtre principal.

Mise à jour 2026.06.02

Un troisième onglet Détaillée rejoint Par règle et Par événement. Une ligne par facture par défaut, avec l'évènement le plus récent et une pastille +N qui compte les autres — déplier pour lire toute la chronologie de la facture. Le filtre de période (par exemple 30 derniers jours) sélectionne d'abord les factures puis ramène tous leurs évènements, de sorte que la chronologie d'une facture est toujours complète en un seul endroit. L'export Excel écrit toutes les lignes du périmètre, y compris celles cachées dans un groupe replié. Les messages Schematron passent à la ligne dans la cellule au lieu d'être tronqués ; la colonne Statut actuel accepte un redimensionnement manuel et affiche le libellé complet.


Ouverture

  • Barre latérale → Application → Erreurs d'intégration.
  • Depuis le Tableau de bord : le lien Tout voir du widget Règles en échec ouvre la page sur l'onglet par règle ; un clic sur une règle précise ouvre l'onglet par événement avec cette règle pré-appliquée comme puce de filtre.

Vue d'ensemble

Erreurs d'intégrationPar règlePar évènementDétailléeToutes sources ▾☐ Sans rattachement↻ RafraîchirToutesFATALERRORWARNINGINFOBR-CL-23EN1693152Le code devise doit suivre la listeà trois caractères ISO 4217.ERROR · 50WARNING · 2BR-FR-12CIUSFR38Le SIRET BT-46 doit figurer surune facture B2B française.ERROR · 38PA_SENDINTEG14Soumission PA rejetée au niveauHTTP (timeout / 4xx / 5xx).ERROR · 14UBL_CREATIONINTEG9La transformation XSL n'a pasproduit un UBL exploitable.FATAL · 9Vue par événement (aperçu)SEV · DOC · DCT · KCO · SEQN · SOURCE · RULE · MESSAGEERROR · 12345 · RI · 00070 · 7 · CIUSFR · BR-FR-12 · SIRET manquantERROR · 12345 · RI · 00070 · 12 · EN16931 · BR-CL-23 · Code devise invalideFATAL · 12399 · RI · 00070 · 1 · INTEG · UBL_CREATION · XSL en exceptionWARNING · 12345 · RI · 00070 · 18 · CIUSFR · BR-FR-09 · BT-49 absent sur avo…Bascule de vuePar règle / Par évènement / DétailléeFiltre catégorieUBL contre IntégrationPastilles de sévéritéFATAL / ERROR / WARN / INFOCarte de règlecode · source · décompte · sévéritéDescription de règleextraite des fichiers .schCodes cycle de viePA_SEND, UBL_CREATION, …Clic → modale factureouverte sur l'onglet Historique

Les cartes de règles sont dimensionnées en CSS via auto-fill plutôt que auto-fit : une dernière rangée incomplète n'étire donc plus une carte unique sur toute la largeur.


Barre d'outils

La même barre d'outils pilote les deux vues.

ContrôleComportement
Bascule de vuePar règle (vue par défaut après un lien profond depuis le tableau de bord), Par évènement ou Détaillée (2026.06.02). Les autres filtres sont conservés au changement de vue — la recherche, la sévérité et la catégorie restent appliquées.
RechercheCorrespondance par sous-chaîne sur DOC, DCT, KCO et le texte du message. Exécutée côté serveur, avec un délai (debounce).
CatégorieToutes sources (par défaut), Validation UBL (règles Schematron / XSD — UVSRCL IN ('EN16931', 'CIUSFR', 'FREXTIC', 'CPRO', 'XSD', 'UBL')), Intégration / cycle de vie (le reste — erreurs runtime émises par le dispatcher : PDF, PA, base, …).
Pastilles de sévéritéToutes / FATAL / ERROR / WARNING / INFO. Une seule sévérité à la fois ; cliquer à nouveau sur la pastille active retire le filtre.
Sans rattachement uniquement (par évènement uniquement)Rétablit le comportement « orphelin » de la version précédente — ne garde que les lignes sans en-tête de facture rattaché. Désactivé par défaut, accessible en un clic au besoin.
RafraîchirRelance la requête en cours.
Exporter (vue détaillée uniquement)Génère un fichier Excel avec tous les évènements du périmètre. Les évènements de chaque groupe sont écrits — y compris ceux cachés dans un groupe replié à l'écran. Mêmes données que celles envoyées par le Rapport quotidien en pièce jointe.

Filtres avancés (2026.05.10)

Un panneau Filtres avancés pliable sous la barre d'outils propose une ligne par colonne filtrable de la spec Vues de liste active (view.integration-errors) — avec des sélecteurs d'opérateurs par colonne (contains, equals, , <, , >, , between, empty, not empty). Les modifications restent en brouillon tant que Exécuter ne les valide pas.

Le drill-through Erreurs récentes du Tech Dashboard remonte aussi ici : quand le tableau de bord transmet { doc, dct, kco }, une pastille indique le filtre actif et propose un × pour le retirer. Utile quand le panneau est replié et que le filtre serait sinon invisible.

Depuis 2026.05.12, la page fonctionne en mode hybride client-side — une tranche serveur capée par Exécuter (spec.maxRows, 5000 par défaut), puis TanStack gère filter / sort / paginate dans la tranche. Un message X / Y lignes à côté de Exécuter signale quand le cap est atteint. Depuis 2026.05.13, la colonne refList invoiceStatus reçoit un picker multi-sélection qui émet une clause IN (?,?,?) côté serveur — choisir plusieurs statuts renvoie l'union.


Vue par règle

Chaque carte regroupe tous les événements d'erreur qui partagent le même couple (règle, source) et affiche :

ÉlémentSourceSignification
Code de règle (en haut à gauche)UVY56RULEIdentifiant de la règle — par exemple BR-CL-23, BR-FR-12, UBL_CREATION.
Source (sous le code)UVSRCLLe moteur de validation — EN16931, CIUSFR, FREXTIC, CPRO, XSD, UBL, ou l'un des compartiments d'intégration (INTEG, PROCESS, XSL, PDF, PA, DB, …).
Description (ligne secondaire)ValidationRuleCatalogDescription lisible, dans la langue de l'interface quand disponible.
Décompte (en haut à droite)COUNT(DISTINCT doc, dct, kco) agrégéNombre de factures touchées par la règle pour les filtres actifs.
Pastilles de sévérité (en bas)(level, count) agrégéRépartition par sévérité — FATAL · n, ERROR · n, WARNING · n, INFO · n.

Les cartes sont triées par décompte décroissant ; un clic bascule sur la vue par événement avec la règle pré-appliquée comme puce de filtre.

Provenance des descriptions

Depuis 2026.05.4, la page affiche pour chaque code de règle sa description lisible : un code comme BR-CL-23 n'a plus besoin d'être croisé avec un fichier Schematron externe.

Un nouveau ValidationRuleCatalog analyse les .sch embarqués au premier appel et extrait un dictionnaire {id de règle → description} en repérant les lignes [<id>]<séparateur><description> dans chaque bloc <assert>. Le séparateur est souple (- ou :, espaces autour optionnels) et couvre les trois formats des quatre Schematron embarqués :

SchematronFormatExemple
EN 16931[<id>]-<description> (sans espaces)[BR-CL-23]-Currency code must follow ISO 4217.
FREXT-IC[<id>] - <description> (avec espaces)[BR-FREXT-IC-08] - SIRET must be present on B2B.
CIUS-FR[<id>] : <description> (deux-points, convention FNFE-MPE)[BR-FR-23/BT-49] : Document is missing the order reference.

Le catalogue ajoute aussi douze codes de cycle de vie / intégration avec une description française : UBL_CREATION, DB_INSERT, DB_UPDATE, PA_SEND, PA_TIMEOUT, PDF_RENDER, XSL_TRANSFORM, EMAIL_SEND, NOTIFY_DISPATCH, STATUS_TRANSITION, EXTRACT_BIP, EXTRACT_FTP — ce sont les codes émis par ErrorCatalog quand une étape runtime échoue.

Le catalogue fusionné est exposé sur GET /api/integration-errors/catalog ; le frontend le met en cache une fois par chargement de page via le hook useRuleCatalog.

Lacune connue

Les 34 assert du Schematron BR-FR-CPRO n'ont pas d'attribut id. Le validateur enregistre donc un code de règle vide pour ces événements ; ils apparaissent dans la vue par événement avec une colonne Règle vide et n'apparaissent pas dans les cartes par règle. Le Schematron lui-même fonctionne ; seules les étiquettes de règle manquent.


Vue par événement

Tableau plat, une ligne par événement de validation. Le tri par défaut est la clé documentaire ascendante (les lignes d'une même facture restent ainsi groupées) et la pagination affiche 50 lignes par page par défaut.

Depuis 2026.05.10, la table passe par DataTableV2 en mode piloté par spec : la forme des colonnes vient de la spec view.integration-errors sur db-nomaubl et le défaut embarqué livre toutes les colonnes listées ci-dessous. Ajouter des colonnes depuis le catalogue ou retirer une colonne de la liste blanche de filtres se fait depuis l'éditeur Vues de liste.

ColonneSourceDescription
SévéritéUVY56LEVELBadge coloré — FATAL / ERROR / WARNING / INFO.
Date (2026.05.9)UVUPMJ + UVUPMTDate et heure d'enregistrement de l'événement. Même contexte temporel que la carte « erreurs récentes » du Tableau de bord IT — le triage n'a plus besoin d'ouvrir une ligne au préalable.
DocUVDOCNuméro de document issu des données source.
DctUVDCTType de document.
KcoUVKCOCode société.
SeqUVSEQNNuméro de séquence — ordre dans lequel les règles de validation se sont déclenchées au cours du traitement défaillant.
SourceUVSRCLMoteur de validation — EN16931, CIUSFR, FREXTIC, CPRO, XSD, UBL, ou un compartiment d'intégration.
RègleUVY56RULEIdentifiant de règle. La cellule affiche le code accompagné de sa description en dessous (et en infobulle au survol).
Facture maintenantjointure F564231Statut courant de la facture, récupéré en temps réel pour vérifier si l'échec a déjà été retraité. Vide quand il n'y a pas d'en-tête (erreur orpheline).
ClientF564231.UHALPHNom du client quand la facture existe. Utile pour trier par contrepartie.
Colonne Message retirée — 2026.05.9

La colonne Message est retirée en 2026.05.9. Les messages Schematron / XPath étaient trop longs pour une cellule de grille (la colonne consommait ~720 px et continuait de tronquer le contexte), le message complet vit donc désormais dans une modale de détail ouverte par un clic sur la ligne. La modale sépare aussi le contexte de debug CTC-FR (Num Fact : …, Code : S, rate : 20, …) de l'explication française — l'explication devient la ligne principale, les champs de debug s'affichent dans une petite grille monospace en dessous.

Clic sur une ligne

Le clic sur une ligne est toujours cliquable depuis 2026.05.9 — les lignes appariées et les lignes orphelines ouvrent toutes les deux une modale :

  • Lignes appariées (quand la facture existe dans F564231) ouvrent la modale de détail complète E-Invoicing sur l'onglet Historique — la même modale que celle ouverte par un clic sur une ligne de la boîte Notifications. Le cycle de vie, les erreurs de validation et la charge utile PA restent à un seul onglet.
  • Lignes orphelines ouvrent la nouvelle ErrorDetailModal — une vue ciblée dimensionnée pour un seul événement de validation sans facture autour. Elle affiche : le badge de niveau, l'identifiant de règle + sa description (résolue via useRuleCatalog), la source, la date, le triplet doc / dct / kco (avec la mention aucune facture correspondante dans F564231), le client quand il est connu, et le message complet rendu via le même helper splitValidationMessage que la modale des lignes appariées.

Sans rattachement uniquement

Une petite case dans la barre d'outils — Sans rattachement uniquement — rétablit le comportement de la version précédente : seules les lignes sans en-tête de facture rattaché. Ce sont les erreurs orphelines, typiquement des échecs de transformation qui ont empêché l'enregistrement de la facture (le XSL a produit un document que le validateur UBL ne peut pas analyser, ou un FATAL a interrompu le pipeline avant l'insertion en base).

La vue par défaut affiche toutes les erreurs, rattachées ou non. Cocher la case se fait en un clic ; rien d'autre n'est nécessaire.


Vue détaillée

Ajoutée en 2026.06.02.

La vue détaillée transforme le tableau plat par évènement en chronologie par facture. Une ligne par facture par défaut — l'évènement le plus récent que les filtres actifs sélectionnent, accompagné d'un chevron et d'une pastille +N qui compte les évènements antérieurs. Cliquer sur le chevron déplie tous les évènements de la facture ; un nouveau clic les replie.

ÉlémentComportement
Ligne par défautL'évènement le plus récent de la facture (date maximale). Mêmes colonnes que la vue par évènement — sévérité, date, doc / dct / kco / seq, source, règle + description, Statut actuel, client.
Pastille +NNombre d'évènements supplémentaires de la facture dans le périmètre chargé. Les lignes +0 s'affichent sans pastille pour qu'une facture à évènement unique reste lisible.
Chevron de dépliageAffiche tous les évènements de la facture, du plus ancien au plus récent. Indenté sous la ligne par défaut, avec la même structure de colonnes.
TriLes factures sont triées par évènement le plus récent décroissant — l'incident le plus frais remonte en tête, suivi des évènements antérieurs de la même facture. L'ordre est stable d'un rafraîchissement à l'autre.
Renvoi à la ligne sur la colonne messageLe message Schematron / XPath passe à la ligne dans la cellule, le texte complet est visible sans ouvrir la modale de détail. Utile pour un triage d'un coup d'œil quand l'explication est courte.
Colonne Statut actuel élargieLa colonne accepte un redimensionnement manuel et affiche le libellé de statut en entier au lieu d'être bornée à une largeur fixe.

Le filtre de période s'élargit à toute la facture

Quand un filtre de date (30 derniers jours, Hier, une plage personnalisée) sélectionne une facture, la vue détaillée ramène tous les évènements de cette facture — y compris ceux antérieurs à la période. La logique : quand un opérateur ouvre la chronologie d'une facture, l'historique pertinent est toutes les erreurs jamais enregistrées pour cette facture, pas seulement la tranche qui tombe dans la période.

C'est volontaire et ne s'applique qu'à la vue détaillée. Les onglets par évènement et par règle continuent de filtrer strictement sur la période sélectionnée.

Export Excel

Le bouton Exporter de la barre d'outils génère un fichier Excel avec le jeu de données complet du périmètre — tous les évènements de toutes les factures, sans tenir compte des groupes actuellement repliés à l'écran. Les colonnes correspondent à celles du tableau ; une ligne par évènement. Le fichier est le même que celui que le Rapport quotidien joint à ses envois programmés — c'est le format pratique à partager quand le triage passe à une autre équipe.

Quelle vue choisir

ObjectifVue
Quelle règle frappe le plus fort en ce moment ?Par règle.
Voir tous les évènements de sévérité X aujourd'hui.Par évènement.
Lire toutes les erreurs d'une facture dans l'ordre.Détaillée (ou cliquer sur une ligne en par évènement — les deux mènent à la modale d'historique par facture).
Trier un incident d'intégration récent sur quelques factures.Détaillée, triée par évènement le plus récent.
Envoyer les erreurs du jour à une autre équipe.Détaillée → Exporter, ou configurer un Rapport quotidien pour que l'email parte sans action manuelle.

Démarche d'instruction

La page est en lecture seule — la correction se fait en amont (donnée source, template, XSL, connecteur) et un nouveau traitement vide la ligne. Démarche typique :

  1. Ouvrir la vue par règle en premier. Examiner les trois cartes de tête — une règle qui frappe des centaines de factures est le point de départ évident.
  2. Cadrer la catégorie. Validation UBL n'affiche que les événements Schematron / XSD ; Intégration / cycle de vie n'affiche que les erreurs runtime émises par le dispatcher. Mélanger les deux n'est utile que pour rechercher un document précis.
  3. Cliquer sur la règle pour basculer sur Par événement avec la puce de filtre pré-appliquée. La liste affiche alors chaque facture concernée par la règle.
  4. Cliquer sur une ligne pour ouvrir l'onglet Historique de la facture. Les erreurs de validation, le cycle de vie et la charge utile PA y sont rassemblés.
  5. Lire le message et la description de la règle. La description donne le quoi ; le message donne le (champ concerné, ligne concernée). Pour les règles Schematron, recouper avec la page Codes motifs au besoin.
  6. Ouvrir le XML source dans Outils UBL → XML Viewer pour le triplet (doc, dct, kco) — le fichier se trouve dans dirInput/<template>/. La lecture de la source confirme si l'échec vient des données (champ manquant) ou du template (bug du XSL).
  7. Relancer le pipeline une fois la source corrigée. Utiliser Traitement de document sur le fichier corrigé. Une fois la facture enregistrée avec succès, Facture maintenant passe d'une cellule vide au nouveau statut, et la ligne n'est plus orpheline.

Conseils & bonnes pratiques

  • Commencer par la vue par règle. Une seule règle qui frappe des centaines de factures indique un seul changement amont (champ renommé, code TVA périmé, liste de contreparties régénérée). Corriger la règle vide alors la majorité des lignes en une seule relance.
  • Utiliser le filtre catégorie pour trier. Les échecs de validation UBL viennent en général de bugs template / XSL ; les erreurs Intégration / cycle de vie viennent plutôt de l'environnement / connecteur (PA indisponible, timeout SMTP, verrou base). Identifier la bonne catégorie divise par deux le temps d'analyse.
  • Surveiller FATAL en priorité. Un FATAL non nul signifie que le pipeline s'est interrompu — la facture n'a jamais été enregistrée et seule la ligne orpheline existe. Les lignes ERROR signifient que la facture est passée partiellement et que la page E-Invoicing standard en garde aussi la trace.
  • Sans rattachement uniquement est la vue historique. La version précédente n'affichait que les orphelins. Cocher la case rétablit ce comportement pour la compatibilité — la vue par règle, le filtre catégorie et les descriptions de règle restent actifs.
  • Les erreurs disparaissent automatiquement après un ré-import réussi. Une fois l'en-tête de facture créé ou mis à jour, la colonne Facture maintenant de la ligne reflète le nouveau statut. Les lignes orphelines (sans en-tête du tout) n'apparaissent plus comme telles dès qu'un traitement aboutit. La ligne sous-jacente reste dans F564236 pour l'audit, mais sort de l'ensemble non rattaché.
  • Les liens profonds depuis le tableau de bord évitent une étape. Le widget Règles en échec du Tableau de bord ouvre cette page pré-filtrée — un seul clic entre la constatation « cette règle pose problème » et l'examen détaillé des événements.