Aller au contenu

ELISA — Assistant Logistique Intelligent

ELISA (Electronic Logistics Interface & Shipping Assistant) by DYNORS
Plateforme de livraison urbaine on-demand, transport B2B/B2C, GP diaspora.
Anciennement connue sous le nom YOBALÉ — rebranding complet en avril 2026.


Identité & Positionnement

Propriété Valeur
Marque ELISA by DYNORS
Tagline « ELISA — Votre assistant logistique intelligent. »
Code app (source-app) elisa
Repository dynors-projects/elisa
Route SLY /elisa/**
Status 📋 Spécifié (v1.1, avril 2026) — développement à lancer
Spec complète docs/DAW-YOB-FISC/YOBALE/ELISA_00_Master.md (+ 01/02/03/04)
URL prod (cible) https://app.elisa.dynors.com · API https://api.elisa.dynors.com
Port local dev 8190 (backend) — SLY local = 8090, ne pas confondre

Vision en 3 axes

Phase Axe Marché
M1–M2 Livraison urbaine on-demand (B2C/B2B e-commerce) + GP diaspora Sénégal, Afrique de l'Ouest
M3+ Transport professionnel (tournées) + white-label partenaires Multi-pays
Post-M3 Marketplace logistique (capacités, points relais, multi-transporteurs) Régional

Moteurs internes (invisibles utilisateur)

Moteur Nom Rôle Tag observabilité
FATOU Fast Access Transport & Optimized Utility Scoring livreurs, dispatch, pricing dynamique, calcul ETA service:fatou
SIRA Smart Instant Routing App Calcul itinéraires, distances, multi-stop, contraintes trafic service:sira

Ces noms organisent le code et l'observabilité — l'utilisateur final voit uniquement ELISA.


Comment fonctionne ELISA

Acteurs

Acteur Rôle Interface
Client B2C Passe une commande de livraison (domicile, bureau) Web public (elisa-web-customer)
Tenant B2B Boutique e-commerce, entreprise — intègre ELISA via API ou console Console SaaS (elisa-tenant-console) + API B2B
Livreur Pickup + delivery de colis ; mode push ou hub App mobile (elisa-mobile-courier, React Native, offline-first)
GP (Grand Porteur) Voyageur diaspora qui transporte des colis entre pays Web/mobile client
Admin DYNORS Back-office : KPIs, suspensions, KYC, dispatch override Admin Panel (elisa-admin-panel)
Point relais Partenaire commerçant qui stocke et remet les colis Intégré via console

Workflow de livraison standard (B2C/B2B)

1. Création devis      Client/Tenant → POST /api/v1/quotes
                                        └─ SIRA calcule distance + itinéraire
                                        └─ FATOU calcule prix (pricing dynamique)

2. Confirmation        Client confirme → POST /api/v1/deliveries
                                        └─ Statut : PENDING
                                        └─ event eli.delivery.created

3. Dispatch FATOU      Cron toutes 30s → FATOU analyse livreurs disponibles
  Scoring 5 critères :
  ┌─────────────────────────────────────────────────────┐
  │  Provider type      ×0.30  (fiabilité, ancienneté)  │
  │  Proximité          ×0.25  (distance GPS en temps réel via Redis) │
  │  Disponibilité      ×0.20  (charge actuelle, fenêtre horaire) │
  │  Prix               ×0.15  (tarif livreur vs prix client)     │
  │  Véhicule           ×0.10  (type, capacité, poids max)        │
  └─────────────────────────────────────────────────────┘
                        └─ Assignation au meilleur score
                        └─ Notification push FCM → livreur
                        └─ Statut : ASSIGNED

4. Pickup              Livreur arrive → scan QR code expéditeur
                                        └─ Photo POD (preuve de prise en charge)
                                        └─ Stockée via dynors-media
                                        └─ Statut : PICKED_UP

5. Livraison           Livreur remet → scan QR code destinataire
                                        └─ Photo POD + signature digitale
                                        └─ Hash SHA-256 horodaté
                                        └─ Statut : DELIVERED

6. Post-livraison      Automatique     → FISCAL (facture B2C via SLY /fiscal/**)
                                        → Wallet livreur crédité (70% net de commission)
                                        → event eli.delivery.completed
                                        → Notifications (SMS + email + push)

Workflow GP Diaspora

1. Création trajet     GP publie son trajet (Paris→Dakar, date, kg disponibles)
                       → Référence ELI-GP-2026-XXXXXX

2. Réservation         Expéditeur réserve N kg sur le trajet
                       → Paiement via DYNORS PAIEMENT (Wave/OM/carte)

3. Pickup pré-départ   GP collecte les colis chez les expéditeurs (ou point relais)
                       → Étiquettes générées (QR + Code 128 + NINEA)

4. Transit             Traitement douanier géré par les restrictions GP
                       → Liste produits autorisés/refusés vérifiée à la création

5. Livraison arrivée   GP remet au destinataire ou dépose en point relais
                       → POD + code retrait si point relais

6. Facturation         FISCAL génère facture GP : ELI-GPINV-XXXXXXXX
                       → Commission ELISA 12% déduite
                       → Virement GP via DYNORS PAIEMENT

Mode Offline (App Livreur)

L'app livreur fonctionne sans connexion (zones peu couvertes) :

Actions en file locale (WatermelonDB/SQLite)
    │
    ▼
Synchronisation dès reconnexion
    │  Chaque action : idempotency-key unique
    │  Conflits résolus côté serveur (last-write-wins ou merge)
    ▼
Backend accepte/rejette + renvoie état canonique

Notifications multi-canaux

Événement SMS Email Push FCM WhatsApp
Livraison créée ✓ client ✓ client opt.
Livreur assigné ✓ client ✓ livreur
Pickup effectué ✓ destinataire opt.
Livrée ✓ tout ✓ tout ✓ tout opt.
Incident / retard

Routage via dynors-notify (extension DYNORS) — jamais direct Twilio/SMTP dans ELISA.


Architecture

Portail Client (Angular)   Console Tenant (Angular)   Admin (Angular)
         │                          │                       │
         └──────────────────────────┴───────────────────────┘
                                    │
                        App Livreur (React Native)
                                    │
                          SLY — /elisa/**
                                    │
                         ELISA Backend (port dev **8190**)
                          Java 21 · Spring Boot · Hexagonal
                           ┌───────────────────────────┐
                           │  FATOU (optimisation)     │
                           │  SIRA  (routing)          │
                           └───────────────────────────┘
                                    │
          ┌──────────┬──────────────┼────────────────┬──────────┐
          ▼          ▼              ▼                ▼          ▼
       FISCAL  DYNORS PAIEMENT   BOOKS            notify     media
    /fiscal/** /paiement/**   /books/**         /notify/**  /media/**

Stack technique

Couche Technologie Notes
Backend Java 21 + Spring Boot 3.x Architecture hexagonale obligatoire
API REST (/api/v1/) + WebSocket STOMP (tracking temps réel)
Frontend web Angular 17+ 3 portails : elisa-web-customer, elisa-tenant-console, elisa-admin-panel
Mobile React Native 0.74+ (livreur, offline-first) Flutter client envisagé post-M3
Base de données PostgreSQL 15+ (multi-tenant, RLS) Schéma tenant_elisa
Cache Redis 7+ Positions GPS, sessions, dispatch, rate limiting
Events dynors-events (bus Kafka/RabbitMQ/Redis selon env) Activable via dynors.events.enabled=true
Build Gradle 8.5+ — train core 1.0.7 / extensions 1.0.3 Voir Versions et dépendances
Secrets HashiCorp Vault (secret/data/dynors/{env}/elisa/…) ESO → K8s Secrets
Observabilité Loki (logs) · Prometheus · Grafana · Sentry (erreurs) Tags service:fatou, service:sira — cf. note logging
CI/CD GitLab CI → Docker → ECS/K8s Cycle SIRRAT + templates Forge (pas de sirrat.config.yml dans le repo app)

Intégrations DYNORS (via SLY)

App cible Path SLY Usage
FISCAL /fiscal/** Facturation B2C/B2B, certification DGI SN, attestations livreurs/GP
DYNORS PAIEMENT /paiement/** Encaissement (Wave, OM, PayTech), wallet livreur, paiements GP — jamais de SDK PSP direct
DYNORS BOOKS /books/** Comptabilité commissions, réconciliation financière
notify /notify/** SMS, email, push notifications multi-canaux
dynors-media /media/** (contrat v2 : POST /media/media/upload, etc.) Photos livraison (POD), documents KYC — via SLY, jamais HTTP direct
dynors-pdf via extension / appel SLY selon déploiement Bordereaux de livraison, reçus, étiquettes QR/Code 128

Références de facturation ELISA

Cas Préfixe FISCAL Exemple
Facture livraison B2C ELI-INV- ELI-INV-20260001
Facture tenant B2B ELI-TINV- ELI-TINV-20260001
Avoir / remboursement ELI-CN- ELI-CN-20260001
Attestation livreur ELI-CERT- ELI-CERT-20260001
Commission point relais ELI-RINV- ELI-RINV-20260001
Rémunération GP ELI-GPINV- ELI-GPINV-20260001
Tracking livraison ELI-2026- ELI-2026-000123

API B2B (style Stripe)

Les tenants B2B intègrent ELISA via deux clés (pk_live_… + sk_live_…) gérées via dynors-api-client :

POST /api/v1/quotes          → Obtenir un devis
POST /api/v1/deliveries      → Créer une livraison
GET  /api/v1/deliveries/{id} → Suivre une livraison
POST /api/v1/webhooks        → Recevoir événements (HMAC sha256)
GET  /api/v1/tracking/{ref}  → Tracking public (sans auth)

Webhooks signés via dynors-webhooks : X-Elisa-Signature: sha256=…


Design System — Tokens ELISA

Token Valeur Usage
--elisa-primary #FF6B35 CTA, accents (orange sahélien)
--elisa-deep #0B1F3A Header, navigation, contraste
--elisa-fatou #FFB800 Indicateurs FATOU (admin uniquement)
--elisa-sira #1B998B Indicateurs SIRA (admin uniquement)
--dynors-violet #6F3BA8 Endorsement « by DYNORS »

Typographie : Inter (UI) + Inter Tight (display) — fallback Segoe UI / Roboto.


Corrections obligatoires avant développement (C1–C5)

Issues identifiées dans le corpus historique YOBALÉ — toutes BLOQUANTES.

# Problème Correction
C1 dynors-invoicing dans le corpus Remplacer par FISCAL via SLY uniquement
C2 Flyway pour migrations Migrer vers Liquibase (changesets XML/YAML)
C3 Appels HTTP directs entre services SLY / InterAppCallService obligatoire
C4 Tokens JWT en localStorage HttpOnly cookies uniquement
C5 DTOs exposent infra interne DTOs minimalistes (pas de tenant_id, UUID internes)

Nomenclature (rebranding YOBALÉ → ELISA)

Élément Ancien (YOBALÉ) Nouveau (ELISA)
Code app yobale elisa
Route SLY /yobale/** /elisa/**
Modules Gradle yob-core, yob-api elisa-core, elisa-api
Schéma DB tenant_yobale tenant_elisa
Tracking YOB-2026-XXXXXX ELI-2026-XXXXXX
Events YOB_DELIVERY_* ELI_DELIVERY_*
Variable env YOBALE_BASE_URL ELISA_BASE_URL

Les cahiers YOBALÉ restent valides en détail métier — en cas de contradiction, ELISA_Architecture_v1.md prévaut.


Variables d'environnement

SLY_BASE_URL=https://sly.dynors.com
SLY_FORWARD_SECRET=<secret-partagé>
ELISA_DB_URL=jdbc:postgresql://pg:5432/elisa
ELISA_REDIS_URL=redis://redis:6379
FISCAL_VIA_SLY=true   # toujours — jamais d'appel direct

Checklist développeur (à valider Tech Lead)

  • [ ] Lire docs/POINT_ENTREE_WORKSPACE_DYNORS.md + CLAUDE.md + ELISA_00_Master.md
  • [ ] Aucun appel HTTP direct entre apps → InterAppCallService + SLY
  • [ ] Aucun secret en Git → Vault secret/data/dynors/{env}/elisa/…
  • [ ] Pas de -SNAPSHOT pour com.dynors.* en CI/prod
  • [ ] Architecture hexagonale : domain/ / application/ / infrastructure/
  • [ ] Liquibase (jamais Flyway)
  • [ ] HttpOnly cookies (jamais localStorage)
  • [ ] TenantContext alimenté uniquement depuis JWT validé
  • [ ] source-app=elisa sur les appels inter-app (X-Source-App via InterAppCallService) — pas un claim JWT
  • [ ] DTOs publics sans tenant_id ni UUID internes
  • [ ] Pas de SDK PSP direct → DYNORS PAIEMENT via SLY /paiement/**
  • [ ] Route /elisa/** déclarée dans dynors-platform/selebeyone/application.yml
  • [ ] App déclarée dans SIRRAT Forge (template déploiement) — pas de sirrat.config.yml dans le repo satellite

Références

  • Spec master : docs/DAW-YOB-FISC/YOBALE/ELISA_00_Master.md
  • Backend : docs/DAW-YOB-FISC/YOBALE/ELISA_01_Backend.md
  • Angular : docs/DAW-YOB-FISC/YOBALE/ELISA_02_Angular.md
  • Mobile : docs/DAW-YOB-FISC/YOBALE/ELISA_03_Mobile.md
  • Design Handoff : docs/DAW-YOB-FISC/YOBALE/ELISA_04_Design_Handoff.md
  • Architecture v1 : docs/DAW-YOB-FISC/YOBALE/ELISA_Architecture_v1.md
  • Maquettes interactives : docs/DAW-YOB-FISC/YOBALE/ELISA_Maquettes.html
  • Hub PSP : DYNORS PAIEMENT

Dernière mise à jour : 2026-06-18