Aller au contenu

🏗️ 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