Chapitre 10 / 39
L'entrepôt de données
Statut : Bloqué — en attente du premier export nocturne de Florian depuis Sodiwin.
Chaque matin à 03h00, le job ETL nocturne charge les données Sodiwin de la veille dans D1 (l’entrepôt de données sur Cloudflare). Chaque outil IA, chaque note de synthèse, et chaque tableau de bord lit depuis D1 — pas directement depuis Sodiwin. D1 conserve l’historique complet de chaque table, indéfiniment.
Ce que vous pouvez interroger :
- Chiffre d’affaires par client, marque, commercial, ou toute période
- Comptes clients : qui doit quoi, dans quel tranche de vieillissement
- Niveaux de stock dans tous les dépôts Sodimo
- Historique de commandes complet pour tout client
- Cadence d’achat des clients et prévisions de réapprovisionnement
- Factures en cours et enregistrements de paiement
Le cycle quotidien.
Florian dépose les CSV du jour sur le NAS (le boîtier Synology en salle serveur) à 02h50. Un timer systemd unique sur le Framework Desktop se déclenche à 03h00, valide les fichiers, et les charge dans D1. Quand l’équipe arrive le matin, les données de la veille sont déjà interrogeables. Un export historique unique — tout depuis le début de l’ERP jusqu’à fin 2025 — sera chargé par Florian séparément.
L’historique est préservé.
Quand la tarification d’un client change ou que le statut d’un produit est mis à jour, l’ancien et le nouvel état sont tous deux enregistrés avec la date. Cela répond à des questions comme « quel était le tarif de ce client le 15 janvier » ou « quand les conditions de paiement de ce compte ont-elles changé ».
Si un mauvais jour atterrit dans l’entrepôt.
D1 Time Travel conserve une sauvegarde ponctuelle glissante de 30 jours de l’entrepôt. Si un fichier nocturne arrive corrompu ou qu’un chargement produit des chiffres qui ne correspondent pas à Sodiwin, voici ce qui se passe :
- Le jour précédent reste la référence — le mauvais chargement est signalé et mis de côté, il n’écrase pas les bonnes données.
- Paul reçoit un email du job ETL indiquant la table et le problème.
- Paul transfère l’alerte à Florian chez Sodiwin si le problème vient des données. Paul débogue le chargement avec Claude en utilisant ce manuel comme contexte, et envoie un message à Thomas si bloqué.
- Une fois le correctif en amont disponible, toute personne autorisée peut effectuer un retour arrière de l’entrepôt à n’importe quel point dans les 30 derniers jours, puis avancer à travers l’export corrigé. La procédure est une seule commande Cloudflare CLI ; la notice correspondante est disponible avec le runbook ETL.
L’équipe ne perd jamais un jour de données, et Michel ne voit jamais un chiffre que Paul n’a pas signé.
Porte de parité.
Avant que D1 devienne la source faisant autorité pour tout chiffre que Michel consulte, Paul le valide. Il choisit deux tables, exécute la même requête sur la vue manuelle Sodiwin et sur D1, et confirme qu’elles correspondent. Quelles deux tables — c’est un choix que Paul fait avec l’équipe ETL — ce sera fixé avant la clôture du chapitre 2. Cette validation est ce qui clôt le chapitre 2.