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
| Module | Responsabilité |
|---|---|
| tenant | Sociétés, utilisateurs et rôles |
| invoice | Cycle de vie des factures et contrôles |
| message | Artefacts, états et historique |
| canonical | Modèle EN 16931 étendu Maroc et GS1 |
| format.* | Parseurs, mappers et générateurs |
| connector.* | API, AS2, SFTP et webhooks |
| queue | Traitement, 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.