Skip to content

Export des données ​

URL : /data-export/{onglet} (ex. /data-export/destinations) • Menu : Données ▸ Export des données • Permission requise : organization_read + internal_* selon l'onglet

Module d'exportation des transactions vers un entrepôt de données externe (data lake S3). Il publie les transmissions historisées au format colonne (Parquet par défaut), à intervalle régulier et/ou à la demande, vers un ou plusieurs buckets configurés.

Export des données — onglet Destinations

Vue d'ensemble ​

L'écran est divisé en trois onglets alignés en haut de page :

OngletVocationPermission requise
DestinationsConfigurer les emplacements de destination (S3, etc.).organization_read
ExécutionsSuivre les jobs d'export (planifiés ou manuels).organization_read
TransactionsVérifier l'export d'une transaction précise par son identifiant.transaction_read

Quatre KPI cards en haut récapitulent l'état du module — toutes calculées sur une fenêtre fixe de 24 h (sauf Destinations actives, qui est instantané) :

KPIFenêtreDescription
Destinations activesInstantanéNombre de destinations dont la bascule Activée est sur ON.
Jobs réussis (24h)24 hNombre de jobs terminés en Succès sur les 24 dernières heures.
Records exportés (24h)24 hNombre cumulé de transactions effectivement écrites en destination sur 24 h.
Erreurs (24h)24 hNombre de jobs ayant échoué ou marqués Partiel sur 24 h.

Onglet Destinations ​

Liste des emplacements de destination configurés.

Toolbar ​

  • Recherche : Rechercher une destination (par nom).
  • Sélecteur de colonnes (icône grille).
  • Bouton rafraîchir (icône cycle).
  • Bouton orange « Nouvelle destination ».

Colonnes ​

ColonneDescription
DestinationBloc avec nom logique (libellé), description courte et chemin cible (bucket/préfixe).
TypeBadge Parquet sur S3 — pour l'instant le seul type proposé, immuable une fois la destination créée.
ActivéeBascule ON/OFF — coupe la destination sans la supprimer.
PlanificationConfigurée / Aucune. Le détail (cron) est visible à l'édition.
Prochain runHorodatage prévu du prochain job, ou — si non planifié.
Dernier jobStatut (Succès, Partiel…) + date du dernier job exécuté.
ActionsQuatre icônes : 🖊️ Modifier • 🔌 Tester la connexion • ▶ Lancer maintenant • 📋 Voir les jobs (filtre l'onglet Exécutions sur cette destination).

Créer une destination ​

Le bouton « Nouvelle destination » ouvre un volet titré « Nouvelle destination » avec le sous-titre « Configurer une nouvelle cible d'export Parquet sur S3. ». Le Type est Parquet sur S3 (étiqueté immuable) — c'est le seul type proposé aujourd'hui.

Le volet est organisé en 5 sections :

Section Identité ​

ChampObligatoireCommentaire
Nom✅Nom logique unique de la destination.
DescriptionNonTexte libre.
Activée—Bascule ON/OFF, ON par défaut à la création.

Section Cible S3 ​

ChampObligatoireExemple
Endpoint✅https://s3.af-south-1.amazonaws.com
Région✅af-south-1
Bucket✅asaci-dwh-prod
PréfixeNonasaci/transactions
Path-style access—Bascule, ON par défaut. À garder ON pour MinIO/Ceph et la plupart des fournisseurs S3-compatibles. À mettre OFF uniquement si le fournisseur exige le mode virtual-hosted style.

Section Format Parquet ​

ChampValeur par défautCommentaire
CompressionSNAPPYCombobox : SNAPPY / GZIP / ZSTD / NONE.
Row group (MiB)128Taille des row groups Parquet.
Taille fichier cible (MiB)256Taille cible d'un fichier Parquet.
Écrire le manifestONProduit un _manifest.json par jour métier — pratique pour l'ingestion incrémentale.
Dictionary encodingONEncodage par dictionnaire Parquet — réduit la taille pour les colonnes à faible cardinalité.

Section Chiffrement ​

ChampValeur par défautCommentaire
ModeNONECombobox du chiffrement Parquet côté client. À ajuster selon votre politique de sécurité.

Section Credentials ​

🛡️ « Stockés dans Vault — non lisibles ensuite. » (note d'avertissement affichée dans le formulaire)

ChampObligatoireCommentaire
Access Key Id✅Clé d'accès S3 (placeholder AKIA…).
Secret Access Key✅Secret correspondant. Champ password — masqué à la saisie, non relisible après enregistrement.

Boutons : Annuler • Créer.

Credentials saisis dans le formulaire

Contrairement aux autres secrets de la plateforme (qui passent par Vault au démarrage du micro-service), les credentials S3 d'une destination sont saisis ici à la création et persistés en Vault par la console. Ils ne sont plus relisibles ensuite — vous devrez créer une nouvelle destination ou contacter l'équipe exploitation pour les modifier.

Validation à la création

La création d'une destination déclenche une validation backend qui peut tester la connectivité au bucket S3. Avec des credentials invalides ou un bucket inaccessible, la console affiche un toast d'erreur générique « Une erreur s'est produite, réessayer plus tard. » — vérifiez les logs côté data-export pour la cause exacte.

Structure du dépôt

La structure d'un dossier exporté est {prefix}/{businessDay}/{partition}/ avec les fichiers part-{n}.parquet et un sous-dossier payloads/ — chaque journée métier (businessDay) est isolée dans son sous-dossier, ce qui facilite l'ingestion incrémentale par votre data lake.

Contenu exporté (export auto-suffisant) ​

L'export ne se limite pas aux métadonnées : le contenu de chaque transaction est matérialisé dans le bucket de destination, pour une copie fidèle et rejouable sans dépendre de la plateforme :

  • Les payloads (requête/réponse, côté entrant et côté organisation) sont écrits sous payloads/{eventId}-{side}.json dans le préfixe de partition. Les colonnes *_ref des fichiers Parquet pointent vers ces objets dans votre bucket (pas vers le stockage interne de la plateforme).
  • Le fichier batch d'une transmission par fichier (dépôt SFTP) est copié sous payloads/{eventId}-file.{ext} et référencé par la colonne Parquet file_ref — la transmission est ainsi complète dans l'export (manifeste + lot de données).
  • Les archives volumineuses sont lues sur le stockage interne de la plateforme avec une identité en lecture seule, puis transférées en streaming vers la destination — aucune configuration supplémentaire côté bucket destinataire.

Onglet Exécutions ​

Suivi opérationnel des jobs d'export — qu'ils soient planifiés (cron) ou déclenchés manuellement. Le compteur affiche le nombre total de jobs sur la fenêtre filtrée (ex. « 41 éléments trouvés »).

Toolbar ​

  • Filtre période Ce mois-ci (défaut), Aujourd'hui, Cette semaine, Cette année, Personnalisé.
  • Recherche : Rechercher un Job ID.
  • Bouton Filtres (panneau).
  • Sélecteur de colonnes + bouton rafraîchir.

La liste est paginée par curseur : boutons Précédent / Suivant et « Charger plus » en pied de tableau (le compteur d'éléments total reste affiché).

Colonnes ​

ColonneDescription
Job IDIdentifiant unique du job. Affiché en badge orange copiable.
DestinationNom de la destination ciblée.
BusinessDayJournée métier traitée (format YYYY-MM-DD).
StatutSuccès (🟢), Partiel (🟠), Échec (🔴), En cours… (badge coloré).
DéclencheurSCHEDULED (cron) ou MANUAL (lancement à la main).
ModeAppend (par défaut, ajoute aux fichiers existants) ou Overwrite (purge d'abord la partition du businessDay — fichiers Parquet et payloads/ — puis réécrit tout).
RecordsNombre de transactions effectivement écrites par le job.
Actions👁️ Voir le détail.

Statut Partiel

Un job Partiel (orange) a réussi à écrire une partie des transactions du businessDay mais a échoué avant la fin. Ouvrez le détail pour voir combien de records sont écrits et l'erreur de blocage. Un re-lancement manuel en mode Overwrite permet de reprendre depuis le début sans dupliquer.

Filtres ​

Bouton Filtres : panneau latéral avec filtrage par Destination et Statut.

Détail d'un job ​

Cliquez sur 👁️ pour ouvrir le volet « Détail du job » : métadonnées (jobId, destinationId, businessDay, mode, trigger, startedAt, endedAt, duration), compteurs de records, référence du manifest, et message d'erreur en cas d'échec.

Onglet Transactions ​

Breadcrumb : « Export des données ▸ Traçabilité transactions ». Vue transaction par transaction — utile pour répondre à une question précise du type « est-ce que cette transaction X a bien été exportée ? ».

H2 : « Historique d'export d'une transaction », sous-titré « Suivi d'une transaction à travers les jobs et destinations. »

Recherche ​

Champ unique « Identifiant de la transaction » (placeholder « Coller un eventId »). Collez l'eventId au format CloudEvents UUID v4 — c'est l'identifiant émis par data-capture, distinct du correlationId métier de la transmission. Cliquez ensuite sur Voir.

eventId vs correlationId

Le module attend un eventId (UUID v4), pas un correlationId. Le correlationId corrèle un échange métier de bout en bout (qui peut comporter plusieurs événements liés) ; l'eventId identifie un événement de capture unique. Vous trouvez l'eventId dans les audit-events ou dans la metadata d'une transmission.

Résultat ​

L'écran affiche l'historique d'export de la transaction :

  • Pour chaque destination active à la date de capture : statut (EXPORTED, PENDING, FAILED, DLQ), horodatage de l'export, référence du job qui a écrit la ligne.
  • Si la transaction n'est dans aucun fichier exporté : message « Pas encore exporté ».

DLQ — Dead Letter Queue

Une transaction marquée DLQ est restée bloquée après épuisement des tentatives automatiques de l'export. Il faut alors investiguer la cause (intégrité de la donnée, accès à la destination) et rejouer manuellement via le micro-service data-export. Contactez l'équipe exploitation.

Bonnes pratiques ​

  • Une destination par usage métier : ne mélangez pas, dans un même bucket, des données qui n'ont pas la même cible (BI, conformité, archivage long terme). Configurez plusieurs destinations distinctes.
  • Vérifiez le quota du bucket avant d'activer une destination sur un historique long. Le mode FULL sur un an de transactions peut peser plusieurs téraoctets.
  • Surveillez les KPI d'échec quotidiennement — un blocage prolongé sur DLQ peut faire perdre des données si la rétention de la file de capture est dépassée.
  • Testez avec une plage limitée (1 jour) avant d'activer un export complet sur l'historique.

Voir aussi ​

Documentation ASACI Santé Connect