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ètre | Valeur |
|---|---|
| Séparateur de champ | ; |
| Encodage | ISO-8859-1 / Windows-1252 |
| Dates | DD/MM/YYYY |
| Séparateur décimal | , |
| Fin de ligne | CRLF |
| Ligne 1 | en-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.
| Slug | Table source Sodiwin | Usage |
|---|---|---|
base-articles | BaseArticles | Catalogue produits — chaque SKU, marque, unité, palier tarifaire, indicateur de gestion des stocks |
base-clients | BaseClients | Base clients — contacts, facturation, conditions de paiement, routage, statistiques |
base-prospects | BaseProspects | Base prospects — enregistrements pré-clients non encore convertis en ligne BaseClients |
base-fournisseurs | BaseFournisseurs | Base fournisseurs — contacts, coordonnées bancaires, affacturage, statistiques achats |
base-collab | baseCollab | Registre du personnel interne — commerciaux, acheteurs, livreurs, identités référencées par d’autres tables |
base-tarifs | baseTarifs | Tarifs spécifiques clients venant en surcharge des prix catalogue |
base-objectif | baseObjectif | Objectifs de vente par commercial, par client, par période |
base-stocks-dep | basestocksdep | Niveaux de stock par dépôt — quantités disponibles dans les entrepôts Sodimo |
base-lots-dep | BaseLotsdep | Lots de stock par dépôt — traçabilité par lot pour les produits réglementés |
base-devis | BaseDevis | Devis — brouillons et envoyés, y compris expirés et refusés |
base-commandes-ventes | BaseCommandesVentes | Commandes clients — en-têtes et lignes de commande, y compris annulées |
base-bon-livraison | BaseBonLivraison | Bons de livraison — ce qui a physiquement été expédié, par client, par date |
base-ventes | Baseventes | Grand livre des ventes — chiffre d’affaires facturé, comptabilisé |
base-encours | Baseencours | Comptes clients — montants en attente par client et tranche d’ancienneté |
base-commandes-achat | BaseCommandesAchat | Commandes fournisseurs — en-têtes et lignes de commande aux fournisseurs |
base-receptions | BaseReceptions | Réceptions de marchandises — ce qui est physiquement arrivé des fournisseurs |
base-achats | Baseachats | Grand livre des achats — factures fournisseurs comptabilisées |
base-demande-de-prix | BaseDemandeDePrix | Demandes de prix aux fournisseurs |
base-echeances | Baseecheances | Échéances de paiement — échéanciers clients et fournisseurs |
base-reglements | baseReglements | Paiements reçus et émis — lettrés contre Baseecheances |
recettes-par-niveau | recettes_par_niveau | Revenus 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).