v1.0 Novembre 2025
Document 5.2

Diagrammes de Séquence

La solution de cashback nouvelle génération

24 novembre 2025
Version 1.0
5 Flux Principaux
1

INTRODUCTION

1.1 Objectif du Document

Ce document présente les diagrammes de séquence des principaux flux métier de l'application REWAPP. Ces diagrammes décrivent les interactions temporelles entre les différents composants du système pour chaque processus critique.

1.2 Portée

Les diagrammes couvrent les cinq flux fondamentaux :

  • Inscription d'un nouveau client
  • Liaison de carte bancaire via OpenBanking
  • Détection automatique des transactions et crédit de points
  • Génération de QR code pour paiement commerçant
  • Scan du QR code et débit des points

1.3 Public Cible

  • Équipe de développement
  • Architectes techniques
  • Équipe QA pour validation des scénarios
  • Product Owners pour compréhension des flux
2

CONVENTIONS ET NOTATION

2.1 Notation PlantUML

Tous les diagrammes de ce document utilisent la notation PlantUML standard pour les diagrammes de séquence.

2.2 Symboles Utilisés

Légende des symboles

Symbole Signification
actorUtilisateur humain (Client, Partenaire, Admin)
participantComposant système (Service, API, Base de données)
->Message synchrone
-->Réponse
alt/elseCas alternatifs
optBloc optionnel
loopBoucle
noteAnnotation explicative

2.3 Conventions de Nommage

Acteurs et Composants

Acteur/Composant Description
ClientUtilisateur final de l'application mobile
PartenaireCommerçant utilisant le dashboard partenaire
App MobileApplication Angular + Ionic iOS/Android
API GatewayPoint d'entrée Kong/AWS API Gateway
Auth ServiceService NestJS d'authentification
User ServiceService de gestion des utilisateurs
Banking ServiceService d'intégration OpenBanking (Budget Insight)
Transaction ServiceService de gestion des transactions
Points ServiceService de gestion des points de fidélité
QR ServiceService de génération et validation QR codes
Notification ServiceService d'envoi de notifications (FCM)
PostgreSQLBase de données principale
RedisCache et gestion des sessions
3

DIAGRAMME 5.2.1 - INSCRIPTION CLIENT

3.1 Acteurs et Composants

Participants au flux

Acteur/Composant Rôle
ClientNouvel utilisateur souhaitant s'inscrire
App MobileInterface de saisie des informations
API GatewayValidation et routage des requêtes
Auth ServiceGestion authentification et création compte
User ServicePersistance des données utilisateur
PostgreSQLStockage des informations
RedisGestion des sessions et tokens
Notification ServiceEnvoi email de bienvenue

3.2 Flux Nominal (PlantUML)

Diagramme de Séquence - Inscription Client

3.3 Cas Alternatifs et Erreurs

Gestion des erreurs

Code Erreur Condition Message Utilisateur Action
400 Format email invalide "Adresse email invalide" Correction formulaire
400 MDP < 8 caractères "Mot de passe trop faible (min. 8 caractères)" Saisir MDP plus fort
409 Email déjà enregistré "Cette adresse email est déjà utilisée" Connexion ou récupération MDP
429 Rate limit atteint "Trop de tentatives, réessayez dans 5 min" Attendre
500 Erreur interne "Une erreur est survenue, réessayez" Retry avec backoff

3.4 Règles de Validation

  • Email : format RFC 5322, domaines jetables bloqués
  • Mot de passe : minimum 8 caractères, 1 majuscule, 1 chiffre
  • Nom/Prénom : 2-50 caractères, lettres et accents uniquement
  • CGU : acceptation obligatoire (checkbox)
  • Âge minimum : 18 ans (date de naissance optionnelle)
4

DIAGRAMME 5.2.2 - LIAISON CARTE BANCAIRE

4.1 Acteurs et Composants

Participants au flux OpenBanking

Acteur/Composant Rôle
ClientUtilisateur souhaitant lier sa carte
App MobileInterface d'initiation
API GatewayRoutage sécurisé
Banking ServiceOrchestration flux OpenBanking
Budget Insight APIFournisseur OpenBanking (agrégateur)
Banque ClientÉtablissement bancaire de l'utilisateur
PostgreSQLStockage tokens chiffrés
Notification ServiceConfirmation liaison

4.2 Flux Nominal (PlantUML)

Liaison Carte Bancaire

4.3 Cas Alternatifs et Erreurs

Scénarios d'erreur OpenBanking

Scénario Code Description Action
Auth banque échouée 401 Identifiants bancaires incorrects Réessayer avec bons identifiants
Consentement refusé 403 Client refuse l'autorisation Expliquer les bénéfices, reproposer
Banque non supportée 422 Établissement non couvert Afficher liste banques compatibles
Session expirée 408 Timeout WebView (5 min) Relancer le processus
Token invalide 502 Erreur côté Budget Insight Support + retry automatique
Connexion déjà active 409 Carte déjà liée Proposer déliaison/remplacement

4.4 Conformité et Sécurité

EXIGENCES RÉGLEMENTAIRES
  • PSD2 : Consentement explicite obligatoire, durée max 90 jours
  • RGPD : Données bancaires non stockées, uniquement tokens
  • Chiffrement : Tokens AES-256, clés en AWS KMS
  • Révocation : Client peut révoquer à tout moment depuis l'app
  • Renouvellement : Refresh automatique avant expiration
5

DIAGRAMME 5.2.3 - DÉTECTION TRANSACTION

5.1 Acteurs et Composants

Participants au flux de détection

Acteur/Composant Rôle
Budget InsightÉmetteur des webhooks transactions
Webhook HandlerRéception et validation des webhooks
Transaction ServiceTraitement et enrichissement
Points ServiceCalcul et crédit des points
Partner ServiceVérification éligibilité partenaire
Notification ServiceNotification utilisateur
RedisCache taux cashback partenaires
Bull QueueFile d'attente traitement async

5.2 Flux Nominal (PlantUML)

Detection Transactions

5.3 Règles de Calcul des Points

RÈGLE FONDAMENTALE

1 point = 0,10€ — Points = Cashback ÷ 0.10

Paramètres de calcul

Paramètre Valeur Formule
Ratio de base1 point = 0,10€points = cashback ÷ 0.10
Taux commerçantVariable (2-10%)cashback = montant × taux
Bonus Bronze+0%cashback × 1.00
Bonus Silver+5%cashback × 1.05
Bonus Gold+10%cashback × 1.10
Bonus Platine+15%cashback × 1.15
Bonus Diamant+20%cashback × 1.20
ArrondiInférieurfloor(points)
Expiration12 moisdate_credit + 365 jours

5.4 Cas d'Erreur et Retry

Stratégie de retry

Erreur Action Retry Délai
Webhook invalideLog + ignoreNon-
Partenaire inconnuStocke en pendingOui (1x)24h
Erreur DBRetry automatiqueOui (3x)Backoff exponentiel
Points Service downRequeueOui (5x)1min, 5min, 15min, 1h, 6h
6

DIAGRAMME 5.2.4 - GÉNÉRATION QR CODE

6.1 Acteurs et Composants

Participants au flux QR

Acteur/Composant Rôle
ClientUtilisateur générant le QR code
App MobileInterface de génération
API GatewayValidation requête
QR ServiceGénération et signature du QR code
Points ServiceVérification et blocage des points
RedisStockage temporaire QR code (60s TTL)

6.2 Flux Nominal (PlantUML)

Generation QR Code

6.3 Structure du QR Code

Payload JSON du QR Code

Champ Type Description
qr_idUUID v4Identifiant unique du QR code
user_idString (chiffré)ID utilisateur (AES-256)
pointsIntegerNombre de points
valueDecimalValeur en euros (points × 0,105)
created_atTimestampDate/heure génération
expires_atTimestampDate/heure expiration (+60s)
signatureStringHMAC-SHA256 du payload

6.4 Comportement Visuel du Compteur

Animation du compteur

Temps Restant Couleur Animation
60s - 31s ● Vert (#22C55E) Statique
30s - 11s ● Orange (#F59E0B) Clignotement lent
10s - 0s ● Rouge (#EF4444) Clignotement rapide + vibration
IMPORTANT

QR Code valide 60 secondes, usage UNIQUE. À l'expiration, les points sont automatiquement débloqués.

6.5 Cas d'Erreur

Gestion des erreurs QR

Code Erreur Message Solution
400 INSUFFICIENT_BALANCE "Solde insuffisant" Réduire montant
400 BELOW_MINIMUM "Minimum 10 points requis" Augmenter montant
409 QR_ALREADY_ACTIVE "Un QR code est déjà actif" Attendre expiration
429 RATE_LIMITED "Trop de QR générés" Attendre 1 minute
500 GENERATION_ERROR "Erreur de génération" Réessayer
7

DIAGRAMME 5.2.5 - SCAN QR ET DÉBIT POINTS

7.1 Acteurs et Composants

Participants au flux de scan

Acteur/Composant Rôle
PartenaireCommerçant effectuant le scan
ClientUtilisateur dont les points sont débités
Dashboard PartenaireInterface PWA de scan
API GatewayRoutage et authentification
QR ServiceValidation et décodage QR
Points ServiceDébit effectif des points
Transaction ServiceEnregistrement transaction
Notification ServiceNotification client et partenaire

7.2 Flux Nominal (PlantUML)

Scan QR et Debit Points

7.3 Codes de Réponse

Codes HTTP de validation

Code HTTP Code Erreur Description Action Partenaire
200 SUCCESS Paiement validé Confirmer au client
400 INVALID_SIGNATURE QR falsifié/corrompu Refuser, demander nouveau QR
400 INVALID_FORMAT Format QR incorrect Vérifier scan correct
400 BALANCE_CHANGED Solde client insuffisant Demander autre moyen paiement
409 QR_ALREADY_USED Double scan Informer client (déjà débité)
410 QR_EXPIRED Délai 60s dépassé Demander génération nouveau QR
403 PARTNER_MISMATCH Mauvais partenaire QR pour autre commerce
500 PROCESSING_ERROR Erreur système Réessayer ou support

7.4 Logs et Traçabilité

Toutes les tentatives de scan sont enregistrées :

  • qr_id : Identifiant du QR code
  • partner_id : Commerçant ayant scanné
  • timestamp : Date/heure exacte
  • result : SUCCESS / ERROR + code
  • ip_address : IP du dashboard
  • device_info : Infos appareil scan
8

RÉCAPITULATIF DES FLUX

8.1 Vue d'Ensemble

Synthèse des 5 flux

Flux Déclencheur Acteur Principal Durée Typique Criticité
Inscription Action utilisateur Client 30-60 secondes Haute
Liaison carte Action utilisateur Client 2-5 minutes Critique
Détection transaction Webhook automatique Système 5-30 secondes Haute
Génération QR Action utilisateur Client < 2 secondes Haute
Scan QR Action partenaire Partenaire < 3 secondes Critique

8.2 Dépendances entre Flux

Pré-requis et post-conditions

Flux Pré-requis Post-condition
Inscription Aucun Compte créé, accès app
Liaison carte Inscription Détection transactions activée
Détection transaction Liaison carte + Achat partenaire Points crédités
Génération QR Points disponibles (min 10) QR actif 60s, points bloqués
Scan QR QR valide + non expiré Points débités, transaction enregistrée

8.3 Points de Sécurité Critiques

⚠️ POINTS D'ATTENTION SÉCURITÉ
  • Rate limiting sur tous les endpoints sensibles
  • Validation signature HMAC-SHA256 pour webhooks et QR codes
  • Chiffrement AES-256 pour tokens bancaires
  • JWT RS256 avec rotation des clés
  • Audit logs sur toutes les transactions financières
  • Anti-replay avec vérification timestamp (±5 min)

8.4 Métriques de Performance Cibles

< 200ms Temps réponse API (p95)
> 99% Taux succès scan QR
< 30s Délai crédit points
99.9% Disponibilité globale

Seuils d'alerte

Métrique Objectif Seuil Alerte
Temps réponse API < 200ms (p95) > 500ms
Taux de succès scan QR > 99% < 95%
Délai crédit points < 30 secondes > 2 minutes
Disponibilité globale 99.9% < 99.5%