Architecture & état du connecteur Sage
Architecture lecture seule, entités synchronisées, qualité des données.
Architecture du connecteur
Flux de données en lecture seule, de Sage aux cockpits
Entités synchronisées
Projection des tables Sage dans l'entrepôt analytique
| Mouvements de stock | F_DOCLIGNE (mouvements) | 105 405 | 30 sept. 2026 · 02:10 | Nuit | Synchronisé | 4 100 ms |
| Lignes de documents | F_DOCLIGNE | 99 575 | 30 sept. 2026 · 16:00 | Toutes les 2 h | Synchronisé | 2 850 ms |
| Bons de livraison | F_DOCENTETE (DO_Type = 3) | 15 668 | 30 sept. 2026 · 16:00 | Toutes les 2 h | Synchronisé | 690 ms |
| Factures & avoirs | F_DOCENTETE (DO_Type = 6/7) | 8 737 | 30 sept. 2026 · 16:00 | Toutes les 2 h | Synchronisé | 760 ms |
| Commandes clients | F_DOCENTETE (DO_Type = 1) | 8 231 | 30 sept. 2026 · 16:00 | Toutes les 2 h | Synchronisé | 940 ms |
| Règlements & lettrage | F_REGLECH · F_DOCREGL | 7 168 | 30 sept. 2026 · 16:00 | Toutes les 2 h | Synchronisé | 520 ms |
| Lots & dates | F_LOTSERIE | 2 522 | 30 sept. 2026 · 16:00 | Toutes les 2 h | Synchronisé | 380 ms |
| Taux de change | F_DEVISE · Bank Al-Maghrib | 1 096 | 30 sept. 2026 · 02:10 | Quotidien | Synchronisé | 30 ms |
| Balance âgée | F_ECRITUREC (341xxx) | 1 063 | 30 sept. 2026 · 16:00 | Toutes les 2 h | Synchronisé | 260 ms |
| Retours | F_DOCENTETE (DO_Type = 5) | 679 | 30 sept. 2026 · 02:10 | Nuit | Synchronisé | 95 ms |
| Objectifs commerciaux | Fichier Excel (SharePoint) | 666 | 30 sept. 2026 · 07:30 | Hebdomadaire | Synchronisé | 60 ms |
| Commandes fournisseurs | F_DOCENTETE (DO_Type = 11) | 596 | 30 sept. 2026 · 02:10 | Nuit | Synchronisé | 180 ms |
| Réceptions & frais d'approche | F_DOCENTETE (DO_Type = 13) · F_DOCFRAIS | 563 | 30 sept. 2026 · 02:10 | Nuit | À surveiller | 320 ms |
| Tarifs & accords | F_TARIF · F_ARTCLIENT | 321 | 30 sept. 2026 · 02:10 | Nuit | Synchronisé | 160 ms |
| Articles | F_ARTICLE · F_FAMILLE | 118 | 30 sept. 2026 · 02:10 | Nuit | Synchronisé | 210 ms |
| Stocks par dépôt | F_ARTSTOCK · F_DEPOT | 118 | 30 sept. 2026 · 16:00 | Toutes les 2 h | Synchronisé | 140 ms |
| Clients | F_COMPTET (CT_Type = 0) | 90 | 30 sept. 2026 · 02:10 | Nuit | Synchronisé | 85 ms |
| Grand livre | F_ECRITUREC | 90 | 30 sept. 2026 · 02:10 | Nuit | Synchronisé | 1 200 ms |
| Fournisseurs | F_COMPTET (CT_Type = 1) | 26 | 30 sept. 2026 · 02:10 | Nuit | Synchronisé | 42 ms |
| Promotions enseignes | Fichier Excel (SharePoint) | 23 | 30 sept. 2026 · 07:30 | Hebdomadaire | Synchronisé | 45 ms |
Source : journal de synchronisation du connecteur · tables F_* indiquées par entité
Volumétrie par entité
12 entités les plus volumineuses, lignes synchronisées
Source : journal de synchronisation du connecteur
Latence par entité
Durée de la dernière requête SELECT, en millisecondes
Seuils : orange au-delà de 1 000 ms, rouge au-delà de 2 500 ms
Qualité des données Sage
Contrôles exécutés à chaque synchronisation. Les anomalies critiques dégradent la fiabilité des analyses canal / dates limites ; elles sont à corriger dans Sage, jamais depuis Atlantic AI.
- Critique2 × 6 pts
- Avertissement3 × 3 pts
- Information2 × 1 pts
Score = 100 − Σ pondérations · 55 lignes concernées au total
- LOT-NO-DATECritique
Lots sans date limite
F_LOTSERIE12 lignes - CLI-NO-CANALCritique
Clients sans canal GMS / CHR (champ statistique vide)
F_COMPTET4 lignes - REC-NO-FRAISAvertissement
Réceptions sans frais d'approche rattachés
F_DOCFRAIS9 lignes - ART-NO-BRANDAvertissement
Articles sans marque renseignée (famille vide)
F_ARTICLE7 lignes - DUP-CLIAvertissement
Doublons clients probables (même ICE / adresse)
F_COMPTET3 lignes - DOC-NO-REPInformation
Commandes sans commercial affecté
F_DOCENTETE18 lignes - ITEM-NO-PCBInformation
Articles sans PCB / conditionnement
F_ARTICLE2 lignes
Garantie lecture seule
Six verrous indépendants, du type TypeScript au compte SQL
- 01Interface ErpReadAdapter sans méthode d'écriture
Le contrat ne déclare que des lectures (get*) : ni create, ni update, ni delete.
src/lib/erp/adapter.ts - 02Type AssertReadOnly<T>
Garde de type : toute implémentation exposant un nom create*/update*/delete*/post*/put*/patch*/remove*/save* est rejetée à la compilation.
src/lib/erp/adapter.ts - 03Client SQL select() refusant tout verbe non-SELECT
La chaîne marquée SelectStatement n'est constructible que par select(), qui rejette tout ce qui ne commence pas par SELECT ou WITH.
src/lib/erp/sage100/ReadOnlyDb.ts - 04Client HTTP GET-only
Le client Sage X3 ne possède qu'une méthode get() ; aucun POST/PUT/PATCH/DELETE n'existe sur le type.
src/lib/erp/sagex3/SageX3ApiAdapter.ts - 05Compte SQL db_datareader
Le connecteur Sage 100 s'authentifie avec un compte doté uniquement du rôle db_datareader (ou de droits SELECT sur des vues dédiées).
src/lib/erp/sage100/ReadOnlyDb.ts - 06Aucun formulaire d'écriture dans l'UI
Les cockpits ne contiennent ni saisie, ni validation, ni bouton d'action vers Sage ; les statuts de signaux restent locaux (démo).
src/app/**/page.tsx · src/components/cockpits/*