🏗️ Architecture SI DYNORS
Architecture des systèmes d'information DYNORS - Communication inter-services, patterns, mécanismes
🎯 Vue d'Ensemble
Cette section documente l'architecture globale du système d'information DYNORS, incluant :
- Les communications entre services
- Les mécanismes métier (facturation, PDF, media)
- Les patterns architecturaux
- Les flux de données
📚 Documents d'Architecture
Mécanismes Métier
| Document | Description |
|---|---|
| Mécanisme Facturation → PDF → Media | Flux complet de génération de factures avec RAGNAR → FISCAL → dynors-pdf → dynors-media |
| Besoins Architecture Apps | Synthèse des besoins architecturaux (fiscal, yobale, dawalale) |
Services Centraux
| Service | Documentation |
|---|---|
| FISCAL | Bibliothèque Projets |
| dynors-pdf | Génération PDF multi-formats |
| dynors-media | Bibliothèque Projets |
🔄 Diagramme d'Architecture Globale
┌─────────────────────────────────────────────────────────────────┐
│ ÉCOSYSTÈME DYNORS │
└─────────────────────────────────────────────────────────────────┘
┌──────────────────┐
│ RAGNAR (ESN) │ Orchestre la facturation ESN
└────────┬─────────┘
│ REST API
↓
┌────────────────────┐
│ FISCAL (Factures) │ Moteur technique facturation
│ - Taxes │ - Numérotation séquentielle
│ - Compliance │ - Validation multi-juridiction
│ - Numérotation │
└────┬───────────┬───┘
│ │
│ SDK │ REST API
↓ ↓
┌─────────────┐ ┌──────────────────┐
│ dynors-pdf │ │ dynors-media │
│ (Templates) │ │ (Hub central) │
│ - SN, FR │←─│ - Images/Logos │
└─────────────┘ │ - PDFs générés │
│ - Documents │
└──────────────────┘
↑
│ REST API
┌───────────────────┼───────────────────┐
│ │ │
┌─────────────┐ ┌────────────────┐ ┌──────────────┐
│ YOBALÉ │ │ DAWALALE │ │ Autres │
│ (Photos │ │ (Documents │ │ Apps │
│ livraison) │ │ permis) │ │ │
└─────────────┘ └────────────────┘ └──────────────┘
📊 Tableau de Communication SI
| De | Vers | Pour | Protocole | Auth | Données transitées |
|---|---|---|---|---|---|
| RAGNAR | FISCAL | Créer facture | REST | JWT + tenant | Invoice (JSON) |
| FISCAL | dynors-pdf | Générer PDF | SDK (direct) | N/A | Invoice + templateId |
| FISCAL | dynors-media | Récupérer logo | REST | JWT + tenant | Request: code client |
| FISCAL | dynors-media | Stocker PDF | REST | JWT + tenant | PDF bytes + metadata |
| dynors-pdf | dynors-media | Logos dans templates | REST | JWT + tenant | Request: logo ID |
| YOBALÉ | dynors-media | Photos livraison | REST | JWT + tenant | Images + metadata |
| DAWALALE | dynors-media | Docs permis | REST | JWT + tenant | PDF/Images + metadata |
💪 Points Forts Architecturaux
1. Séparation des Responsabilités
Chaque service a une responsabilité claire : - RAGNAR : Orchestration métier ESN - FISCAL : Moteur technique facturation - dynors-pdf : Génération PDF - dynors-media : Hub central stockage
2. Réutilisabilité
dynors-pdf → utilisé par FISCAL, RAGNAR, YOBALÉ, DAWALALE
dynors-media → utilisé par TOUS (hub central)
FISCAL → utilisé par RAGNAR + autres apps qui facturent
3. Multi-tenant Natif
- Chaque appel inclut
tenantCode - Isolation automatique des données
- Pas de fuite entre clients
4. Patterns Reconnus
- Strategy Pattern : TaxStrategy (SN, FR), ComplianceValidator (par pays)
- Adapter Pattern : Storage (MinIO, S3, local)
- Service-Oriented : Chaque domaine = un service
5. Traçabilité Complète
// Dans dynors-media
metadata: {
"source_application": "fiscal",
"source_version": "1.0.0",
"source_instance": "fiscal-pod-3",
"entityType": "invoice",
"entityId": "INV-2025-001"
}
🌍 Multi-Juridiction
L'architecture supporte nativement plusieurs pays :
// FISCAL détecte le pays depuis la facture
String country = invoice.getClient().getCountry(); // "SN", "FR"
// Calcule taxes selon pays
taxCalculator.calculateTax(amount, country); // 18% ou 20%
// Utilise template PDF par pays
pdfService.generateFromTemplate("invoice-template", data, country);
// → invoice-template-sn.html ou invoice-template-fr.html
🔐 Sécurité Intégrée
┌──────────────────────────────────────────┐
│ Chaque appel inclut JWT + tenantCode │
├──────────────────────────────────────────┤
│ RAGNAR → FISCAL │
│ Headers: │
│ Authorization: Bearer <JWT> │
│ X-Tenant-Code: teranga-cereales │
└──────────────────────────────────────────┘
📚 Documentation Complémentaire
Dernière mise à jour : 30 janvier 2026