Thème
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.

Vue d'ensemble
L'écran est divisé en trois onglets alignés en haut de page :
| Onglet | Vocation | Permission requise |
|---|---|---|
| Destinations | Configurer les emplacements de destination (S3, etc.). | organization_read |
| Exécutions | Suivre les jobs d'export (planifiés ou manuels). | organization_read |
| Transactions | Vé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é) :
| KPI | Fenêtre | Description |
|---|---|---|
| Destinations actives | Instantané | Nombre de destinations dont la bascule Activée est sur ON. |
| Jobs réussis (24h) | 24 h | Nombre de jobs terminés en Succès sur les 24 dernières heures. |
| Records exportés (24h) | 24 h | Nombre cumulé de transactions effectivement écrites en destination sur 24 h. |
| Erreurs (24h) | 24 h | Nombre 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
| Colonne | Description |
|---|---|
| Destination | Bloc avec nom logique (libellé), description courte et chemin cible (bucket/préfixe). |
| Type | Badge Parquet sur S3 — pour l'instant le seul type proposé, immuable une fois la destination créée. |
| Activée | Bascule ON/OFF — coupe la destination sans la supprimer. |
| Planification | Configurée / Aucune. Le détail (cron) est visible à l'édition. |
| Prochain run | Horodatage prévu du prochain job, ou — si non planifié. |
| Dernier job | Statut (Succès, Partiel…) + date du dernier job exécuté. |
| Actions | Quatre 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é
| Champ | Obligatoire | Commentaire |
|---|---|---|
| Nom | ✅ | Nom logique unique de la destination. |
| Description | Non | Texte libre. |
| Activée | — | Bascule ON/OFF, ON par défaut à la création. |
Section Cible S3
| Champ | Obligatoire | Exemple |
|---|---|---|
| Endpoint | ✅ | https://s3.af-south-1.amazonaws.com |
| Région | ✅ | af-south-1 |
| Bucket | ✅ | asaci-dwh-prod |
| Préfixe | Non | asaci/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
| Champ | Valeur par défaut | Commentaire |
|---|---|---|
| Compression | SNAPPY | Combobox : SNAPPY / GZIP / ZSTD / NONE. |
| Row group (MiB) | 128 | Taille des row groups Parquet. |
| Taille fichier cible (MiB) | 256 | Taille cible d'un fichier Parquet. |
| Écrire le manifest | ON | Produit un _manifest.json par jour métier — pratique pour l'ingestion incrémentale. |
| Dictionary encoding | ON | Encodage par dictionnaire Parquet — réduit la taille pour les colonnes à faible cardinalité. |
Section Chiffrement
| Champ | Valeur par défaut | Commentaire |
|---|---|---|
| Mode | NONE | Combobox 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)
| Champ | Obligatoire | Commentaire |
|---|---|---|
| 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.
Credentials S3
Les clés d'accès AWS / MinIO ne sont pas saisies dans ce volet : elles sont injectées au niveau du micro-service data-export via Vault. Demandez à l'équipe exploitation de provisionner le secret correspondant avant de créer la destination.
Structure du dépôt
La structure d'un dossier exporté est {prefix}/{businessDay}/{partition}/part-{n}.parquet — chaque journée métier (businessDay) est isolée dans son sous-dossier, ce qui facilite l'ingestion incrémentale par votre data lake.
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.
Colonnes
| Colonne | Description |
|---|---|
| Job ID | Identifiant unique du job. Affiché en badge orange copiable. |
| Destination | Nom de la destination ciblée. |
| BusinessDay | Journée métier traitée (format YYYY-MM-DD). |
| Statut | Succès (🟢), Partiel (🟠), Échec (🔴), En cours… (badge coloré). |
| Déclencheur | SCHEDULED (cron) ou MANUAL (lancement à la main). |
| Mode | Append (par défaut, ajoute aux fichiers existants) ou Overwrite (réécrit les fichiers du businessDay). |
| Records | Nombre 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
FULLsur 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
- Configurer une destination d'export S3 — parcours pas à pas.
- Transmissions — état d'export visible aussi dans le détail de chaque transaction.
- Pistes d'audit — événements
data_export.*audités.