Mystix est construit comme un monolithe modulaire. Les limites fonctionnelles restent explicites, tandis que le déploiement conserve la simplicité d’une application unifiée.

Chaîne de traitement

01RAWEntrée intacte
02PARSEDStructure lue
03CANONICALModèle métier
04OUTFormat cible

Aucun format n’est converti directement vers un autre. Chaque parseur alimente un modèle canonique versionné, puis un générateur produit le format demandé. Cette approche évite une matrice de transformations difficile à maintenir.

Modules principaux

ModuleResponsabilité
tenantSociétés, utilisateurs et rôles
invoiceCycle de vie des factures et contrôles
messageArtefacts, états et historique
canonicalModèle EN 16931 étendu Maroc et GS1
format.*Parseurs, mappers et générateurs
connector.*API, AS2, SFTP et webhooks
queueTraitement, reprises et file d’erreurs

Invariants techniques

  • Chaque donnée métier appartient à une société et porte son company_id.
  • Une entrée identique produit le même résultat sans doublon.
  • Les montants utilisent BigDecimal avec un arrondi explicite.
  • Les dates sont stockées avec fuseau ; le fuseau métier est Africa/Casablanca.
  • Chaque erreur expose un code, une étape, un caractère rejouable et une action proposée.