Chapitre 11 / 39

Schéma Sodiwin — les 21 tables

Statut : Planifié — en attente de la validation de Florian sur la spec et du premier export nocturne. La spécification canonique est ~/sodimo/firstweek/friday-progress/email-jack-sodiwin-spec.md, envoyée à Jack le 2026-04-17.

Chaque table ci-dessous est exportée depuis Sodiwin sous forme de snapshot complet chaque nuit. Il n’y a pas d’export incrémental, pas de filtre, pas d’exclusion commerciale : si une ligne existe dans Sodiwin, elle se retrouve dans le CSV. Les règles de format de fichier sont fixes — en changer une casse chaque parser en aval.


Format de fichier.

ParamètreValeur
Séparateur de champ;
EncodageISO-8859-1 / Windows-1252
DatesDD/MM/YYYY
Séparateur décimal,
Fin de ligneCRLF
Ligne 1en-têtes de colonnes

Dépôt atomique. Chaque fichier est uploadé sous le nom <name>.csv.partial, puis renommé en <name>.csv une fois le transfert terminé. L’ETL ne lit jamais un fichier .partial — le renommage est le commit. Une table vide produit quand même un fichier (ligne d’en-tête uniquement) ; un fichier manquant est traité comme une défaillance et alerte Paul.

Calendrier. Chaque nuit à 02 h 30 Europe/Paris, sept jours sur sept. Le dépôt doit être terminé avant 02 h 50. Trois tentatives espacées de 60 secondes ; en cas d’échec final, un email est envoyé à paul@sodimo.eu avec le log en pièce jointe.


Arborescence sur le NAS.

/volume1/sodiwin-dumps/<slug>/<YYYY-MM-DD>_<slug>.csv

Exemple : /volume1/sodiwin-dumps/base-clients/2026-04-18_base-clients.csv.


Les 21 tables. Les slugs (dossier et préfixe de nom de fichier) sont en minuscules anglaises avec tirets ; les noms de tables source Sodiwin restent verbatim en français — les outils en aval s’appuient sur les noms source, les traduire casserait le chemin de lecture.

SlugTable source SodiwinUsage
base-articlesBaseArticlesCatalogue produits — chaque SKU, marque, unité, palier tarifaire, indicateur de gestion des stocks
base-clientsBaseClientsBase clients — contacts, facturation, conditions de paiement, routage, statistiques
base-prospectsBaseProspectsBase prospects — enregistrements pré-clients non encore convertis en ligne BaseClients
base-fournisseursBaseFournisseursBase fournisseurs — contacts, coordonnées bancaires, affacturage, statistiques achats
base-collabbaseCollabRegistre du personnel interne — commerciaux, acheteurs, livreurs, identités référencées par d’autres tables
base-tarifsbaseTarifsTarifs spécifiques clients venant en surcharge des prix catalogue
base-objectifbaseObjectifObjectifs de vente par commercial, par client, par période
base-stocks-depbasestocksdepNiveaux de stock par dépôt — quantités disponibles dans les entrepôts Sodimo
base-lots-depBaseLotsdepLots de stock par dépôt — traçabilité par lot pour les produits réglementés
base-devisBaseDevisDevis — brouillons et envoyés, y compris expirés et refusés
base-commandes-ventesBaseCommandesVentesCommandes clients — en-têtes et lignes de commande, y compris annulées
base-bon-livraisonBaseBonLivraisonBons de livraison — ce qui a physiquement été expédié, par client, par date
base-ventesBaseventesGrand livre des ventes — chiffre d’affaires facturé, comptabilisé
base-encoursBaseencoursComptes clients — montants en attente par client et tranche d’ancienneté
base-commandes-achatBaseCommandesAchatCommandes fournisseurs — en-têtes et lignes de commande aux fournisseurs
base-receptionsBaseReceptionsRéceptions de marchandises — ce qui est physiquement arrivé des fournisseurs
base-achatsBaseachatsGrand livre des achats — factures fournisseurs comptabilisées
base-demande-de-prixBaseDemandeDePrixDemandes de prix aux fournisseurs
base-echeancesBaseecheancesÉchéances de paiement — échéanciers clients et fournisseurs
base-reglementsbaseReglementsPaiements reçus et émis — lettrés contre Baseecheances
recettes-par-niveaurecettes_par_niveauRevenus agrégés par niveau hiérarchique — catégorie, famille, marque

Periscope — ce que contient chaque export.

Chaque colonne de la table source, chaque ligne, sans filtre temporel. L’historique complet est réexporté chaque nuit. Pas de projection, pas d’agrégation, pas de calcul dérivé — les fichiers sont les tables Pervasive.SQL brutes telles qu’elles existent ce matin-là.


Largeur des tables de référence principales.

L’export Sodiwin que Florian a partagé le 2026-02-17 était un sous-ensemble pour trois tables. L’export nocturne doit être plus large que ce fichier de référence. La spec liste les colonnes qui doivent être incluses même si elles étaient absentes du fichier de février.

base-clients — référence : le rapport standard Sodiwin liste_tiers (~130 colonnes). Trente-cinq colonnes absentes du fichier du 17 février doivent être incluses :

tel, tel2, tel4, fax, portable, contact2, contact3, edcont, iban, bic, rib, rum, rumdate, factor, cfactor, enfactor, ixnlat, ixnlng, abc, freqcmd, groupe, centrale, collectif, encde, enbl, entraite, encheque, reliquat, rfa, rfa1, rfa2, rfa3, rfac, rfac1, rfac2, rfac3, crfa1, crfa2, crfa3, phonefq, phonedate, phonepar, phoneobjet, rue1, rue2, rue3, siret, l0, l1, l2, l2a, nomfac, paysliv, lieufonc, lieufonc2, lieufonc3, tournee2, tourordre, condliv, datemodif, usermodif.

base-fournisseurs — même logique : largeur complète du rapport liste_tiers côté fournisseurs.

base-articles — référence : largeur complète de BaseArticles. Quarante-sept colonnes absentes du fichier du 17 février doivent être incluses, parmi elles : rupture, sous_rupt, rup1, rup2, rup3, librup1, librup2, librup3, activit, cb_colis, c_profond, c_volume, codart2, nomart2.

Règle générale. Toute colonne qui apparaît dans un rapport Sodiwin standard que Sodimo utilise aujourd’hui doit figurer dans l’export de la table correspondante. Si elle est dans liste_tiers, elle est dans base-clients. Si elle est dans stats_articles, elle est dans base-articles. L’export de février est un point de référence, pas une liste blanche.


Changements de schéma.

Si Sodiwin renomme, supprime ou ajoute une colonne, Florian en informe Thomas par email avant que le changement n’atteigne la production. Les ajouts de colonnes passent sans casser les parsers. Les renommages et suppressions cassent les parsers et nécessitent une gestion coordonnée des deux côtés.


Pourquoi ce chapitre est dans le manuel.

Sodiwin est une boîte noire (chapitre 14). Les 21 CSVs constituent l’intégralité du contrat entre Sodiwin et tout ce que Sodimo fait tourner en aval — D1, la couche IA, le CRM, le brief nocturne. Un changement sur cette liste ou sur le format de fichier est le seul événement qui peut casser le pipeline de données depuis l’amont ; tout autre mode de défaillance se situe de notre côté et est récupérable depuis D1 Time Travel (chapitre 23).