Schéma Technique
Flux Bancaire
La solution de cashback nouvelle génération
VUE D'ENSEMBLE
1.1 Objectif du Document
Ce document présente le schéma technique complet de l'intégration bancaire REWAPP. Il décrit l'architecture, les composants, les flux de données et les mécanismes de sécurité permettant la détection automatique des transactions bancaires et le crédit des points de cashback.
1.2 Contexte Fonctionnel
Le flux bancaire constitue le cœur technologique de REWAPP, permettant :
- La liaison sécurisée des cartes bancaires via OpenBanking (PSD2)
- La détection automatique des achats chez les partenaires
- Le calcul et le crédit instantané des points de cashback
- L'initiation des virements SEPA pour le cashback bancaire
1.3 Fournisseur OpenBanking Recommandé
BUDGET INSIGHT (POWENS)
Fournisseur recommandé pour l'intégration OpenBanking
- Agrément ACPR (Autorité de Contrôle Prudentiel et de Résolution)
- Couverture de plus de 350 banques françaises
- SDK natif compatible Capacitor
- Conformité PSD2 et RGPD
- Webhooks temps réel pour détection des transactions
Alternatives supportées : Tink, Plaid
1.4 Prérequis Techniques
- Infrastructure CapRover déployée (Docker Containers, PostgreSQL, Redis)
- API Gateway Kong configuré
- Services backend NestJS opérationnels
- Certificats SSL/TLS 1.3 actifs
- Contrat signé avec le fournisseur OpenBanking
ARCHITECTURE DU FLUX BANCAIRE
2.1 Vue d'Ensemble de l'Architecture
L'architecture du flux bancaire repose sur une approche microservices avec communication asynchrone via Bull Queue (Redis). Cette architecture garantit :
2.2 Schéma d'Architecture Globale
@startuml
skinparam backgroundColor #FFFFFF
skinparam componentStyle rectangle
skinparam roundcorner 10
skinparam handwritten false
title Architecture Technique - Flux Bancaire REWAPP
package "Applications Clientes" #LightBlue {
[App Mobile iOS Android] as MobileApp #LightGreen
[Dashboard Partenaire PWA] as MerchantDash #LightCyan
}
package "Infrastructure Cloud CapRover" #LightYellow {
package "API Gateway Layer" #Orange {
[Kong API Gateway] as Gateway #Gold
}
package "Services Backend ECS" #LightGreen {
[Auth Service] as AuthSvc #LightCyan
[Banking Service] as BankingSvc #Yellow
[Transaction Service] as TransactionSvc #Pink
[Points Service] as PointsSvc #Plum
[Merchant Service] as MerchantSvc #LightGray
[Notification Service] as NotifSvc #Aqua
[Webhook Handler] as WebhookHandler #Coral
}
package "Data Layer" #LightGray {
database "PostgreSQL Docker" as PostgreSQL #Pink
database "Redis Docker" as Redis #Salmon
}
package "Queues Bull" #Lavender {
queue "transactions" as QueueTx
queue "points" as QueuePoints
queue "notifications" as QueueNotif
queue "withdrawals" as QueueWithdraw
}
}
cloud "Services Externes" #LightCoral {
[Budget Insight API] as BudgetInsight #LightGreen
[Banques Francaises 350+] as Banks #LightBlue
[Firebase FCM] as FCM #Orange
[SendGrid Emails] as SendGrid #Yellow
}
MobileApp --> Gateway : HTTPS TLS
MerchantDash --> Gateway : HTTPS TLS
Gateway --> AuthSvc
Gateway --> BankingSvc
Gateway --> TransactionSvc
Gateway --> PointsSvc
Gateway --> MerchantSvc
BudgetInsight --> WebhookHandler : Webhooks
Banks <--> BudgetInsight : API PSD2
AuthSvc --> PostgreSQL
BankingSvc --> PostgreSQL
TransactionSvc --> PostgreSQL
PointsSvc --> PostgreSQL
MerchantSvc --> PostgreSQL
BankingSvc --> Redis : Cache
TransactionSvc --> Redis : Sessions
WebhookHandler --> Redis : Publish
Redis --> QueueTx
QueueTx --> TransactionSvc
QueuePoints --> PointsSvc
QueueNotif --> NotifSvc
QueueWithdraw --> BankingSvc
NotifSvc --> FCM
NotifSvc --> SendGrid
BankingSvc --> BudgetInsight : API REST
@enduml
COMPOSANTS DU SYSTÈME
3.1 Composants Internes
Composants Internes du Système
| Composant | Technologie | Responsabilité | SLA |
|---|---|---|---|
API Gateway |
Traefik (CapRover) | Routing, authentification JWT, rate limiting | 99.99% |
Banking Service |
NestJS + TypeScript | Card linking, gestion tokens, virements SEPA | 99.9% |
Transaction Service |
NestJS + TypeScript | Réception webhooks, matching commerçants, calcul cashback | 99.9% |
Points Service |
NestJS + TypeScript | Gestion solde points, crédit/débit FIFO, paliers | 99.9% |
Merchant Service |
NestJS + TypeScript | Base partenaires, taux cashback, matching | 99.9% |
Notification Service |
NestJS + TypeScript | Push FCM, emails SendGrid, SMS Twilio | 99.5% |
Webhook Handler |
NestJS + TypeScript | Validation signature, anti-replay, routage | 99.99% |
PostgreSQL |
RDS PostgreSQL 15+ | Stockage persistant, transactions ACID | 99.95% |
Redis Cluster |
Redis Docker 7+ | Cache, sessions, queues Bull | 99.9% |
3.2 Composants Externes
Services Externes Intégrés
| Composant | Fournisseur | Fonction | Intégration |
|---|---|---|---|
| OpenBanking Provider | Budget Insight (Powens) | Agrégation bancaire, webhooks transactions | SDK + REST API |
| Banques Utilisateurs | 350+ établissements | Source des transactions, authentification SCA | Via Budget Insight (PSD2) |
| Push Notifications | Firebase Cloud Messaging | Notifications temps réel iOS/Android | SDK Firebase |
| Email Service | SendGrid / Brevo | Emails transactionnels | API REST |
| SMS Service | Twilio | Alertes critiques, 2FA | API REST |
3.3 Description Détaillée du Banking Service
Le Banking Service est le composant central de l'intégration bancaire. Ses responsabilités incluent :
Liaison de Carte (Card Linking)
Gestion du flux OAuth2 avec Budget Insight- Initialisation du flux OAuth2 avec Budget Insight
- Génération et gestion des sessions temporaires (TTL 10 min)
- Stockage sécurisé des tokens (chiffrement AES-256-GCM)
- Configuration des webhooks pour la connexion
Gestion des Tokens
Sécurisation et rotation des tokens d'accès- Rotation automatique des tokens avant expiration
- Chiffrement au repos avec clés gérées via variables d'environnement CapRover
- Révocation sur demande utilisateur
Virements SEPA
Initiation et suivi des virements bancaires- Validation de l'IBAN destinataire
- Initiation des virements via API bancaire
- Suivi du statut (pending → processing → completed)
DIAGRAMME D'ARCHITECTURE TECHNIQUE
4.1 Diagramme de Flux Principal
@startuml
skinparam backgroundColor #FFFFFF
skinparam sequenceMessageAlign center
title Schéma Technique - Flux Bancaire Complet
participant "Application
Mobile" as App #LightBlue
participant "API
Gateway" as GW #Orange
participant "Banking
Service" as BankSvc #Yellow
participant "Webhook
Handler" as WH #Pink
participant "Transaction
Service" as TxSvc #LightGreen
participant "Merchant
Service" as MerchSvc #Cyan
participant "Points
Service" as PtsSvc #Gold
participant "Notification
Service" as NotifSvc #Violet
database "PostgreSQL" as DB #LightGray
database "Redis" as Cache #Red
participant "Budget Insight
API" as BI #Green
participant "Banque
Utilisateur" as Bank #Purple
== PHASE A : Card Linking (Une seule fois) ==
App -> GW : POST /api/v1/banking/cards/link
GW -> BankSvc : Initier liaison
BankSvc -> Cache : Créer session (TTL 10min)
BankSvc -> BI : POST /auth/init
BI --> BankSvc : {authUrl, stateToken}
BankSvc --> App : {sessionId, authUrl}
App -> BI : Lancer SDK Budget Insight
BI -> Bank : Redirection OAuth2
Bank -> Bank : Authentification SCA (2FA)
Bank --> BI : authorization_code
BI -> BI : Échanger tokens
BI --> App : {connectionId}
App -> GW : POST /api/v1/banking/complete-link
GW -> BankSvc : Finaliser liaison
BankSvc -> BI : GET /connections/{id}
BI --> BankSvc : {tokens, accounts}
BankSvc -> BankSvc : Chiffrer tokens (AES-256-GCM)
BankSvc -> DB : INSERT bank_connections
BankSvc -> BI : POST /webhooks/register
BI --> BankSvc : {webhookId}
BankSvc --> App : Succès
== PHASE B : Détection Transaction (Automatique) ==
Bank -> BI : Nouvelle transaction détectée
BI -> WH : POST /webhooks/banking
{event: transaction.created}
WH -> WH : Vérifier signature HMAC-SHA256
WH -> WH : Vérifier timestamp (<5 min)
WH --> BI : HTTP 200 OK
WH -> Cache : PUBLISH job "transaction.received"
Cache -> TxSvc : Consumer job
TxSvc -> DB : Vérifier idempotence
TxSvc -> MerchSvc : GET /internal/merchants/match
MerchSvc -> MerchSvc : Matching (MCC, nom, ID)
MerchSvc --> TxSvc : {merchant_id, cashback_rate}
== PHASE C : Calcul et Crédit Points ==
TxSvc -> PtsSvc : GET /internal/points/tier
PtsSvc --> TxSvc : {tier, bonus}
TxSvc -> TxSvc : Calculer points
note right of TxSvc
Points = (Montant × Taux × (1+Bonus)) / 0.10
Ex: (100€ × 4% × 1.10) / 0.10 = 44 points
end note
TxSvc -> DB : INSERT transaction
TxSvc -> Cache : PUBLISH job "points.credit"
Cache -> PtsSvc : Consumer job
PtsSvc -> DB : BEGIN TRANSACTION
PtsSvc -> DB : INSERT points_ledger
PtsSvc -> DB : UPDATE user.points_balance
PtsSvc -> DB : COMMIT
PtsSvc -> Cache : PUBLISH job "notification.send"
== PHASE D : Notification Utilisateur ==
Cache -> NotifSvc : Consumer job
NotifSvc -> App : Push "Vous avez gagné 44 points!"
NotifSvc -> DB : INSERT notification
== PHASE E : Virement Bancaire (Sur demande) ==
App -> GW : POST /api/v1/banking/withdrawals
GW -> BankSvc : Demande virement
BankSvc -> PtsSvc : Vérifier solde (≥100 points)
PtsSvc --> BankSvc : {available: 500}
BankSvc -> PtsSvc : Bloquer points
BankSvc -> DB : INSERT withdrawal (pending)
BankSvc -> Cache : PUBLISH job "withdrawal.process"
Cache -> BankSvc : Consumer job
BankSvc -> BankSvc : Calculer montant (×0.095)
BankSvc -> BI : POST /payments/initiate
note right of BI
Montant = 100 points × 0.095 = 9.50€
Délai: 2-3 semaines
end note
BI -> Bank : Ordre virement SEPA
BI --> BankSvc : {payment_id, status}
BankSvc -> DB : UPDATE withdrawal (processing)
BankSvc --> App : {status: processing}
@enduml
FLUX DE DONNÉES DÉTAILLÉS
5.1 Flux 1 : Liaison de Carte Bancaire
Ce flux est exécuté une seule fois par carte lors de l'onboarding ou depuis le profil utilisateur.
Étapes du Card Linking
| Étape | Source | Destination | Données | Protocole |
|---|---|---|---|---|
1.1 | App Mobile | API Gateway | userId, deviceId | HTTPS/TLS 1.3 |
1.2 | API Gateway | Banking Service | Requête routée | HTTP interne |
1.3 | Banking Service | Redis | sessionId, TTL 10min | Redis Protocol |
1.4 | Banking Service | Budget Insight | clientId, redirectUri | HTTPS REST |
1.5 | Budget Insight | Banking Service | authUrl, stateToken | HTTPS REST |
1.6 | App Mobile | SDK Budget Insight | authUrl, config | SDK natif |
1.7 | SDK | Banque | Identifiants utilisateur | HTTPS OAuth2 |
1.8 | Banque | Budget Insight | authorization_code | OAuth2 callback |
1.9 | Budget Insight | App Mobile | connectionId | SDK callback |
1.10 | App Mobile | Banking Service | sessionId, connectionId | HTTPS REST |
1.11 | Banking Service | PostgreSQL | bank_connections (chiffré) | SQL/TLS |
5.2 Flux 2 : Détection et Crédit de Points
Ce flux est déclenché automatiquement à chaque transaction détectée.
Étapes de Détection Transaction
| Étape | Source | Destination | Données | Latence Max |
|---|---|---|---|---|
2.1 | Banque | Budget Insight | Transaction brute | Variable (1s-24h) |
2.2 | Budget Insight | Webhook Handler | Webhook payload | <1s |
2.3 | Webhook Handler | Redis Queue | Job transaction.received | <50ms |
2.4 | Redis Queue | Transaction Service | Job consommé | <100ms |
2.5 | Transaction Service | Merchant Service | Requête matching | <50ms |
2.6 | Transaction Service | Points Service | Requête palier | <50ms |
2.7 | Transaction Service | PostgreSQL | INSERT transaction | <100ms |
2.8 | Redis Queue | Points Service | Job points.credit | <100ms |
2.9 | Points Service | PostgreSQL | Credit points (ACID) | <100ms |
2.10 | Redis Queue | Notification Service | Job notification.send | <100ms |
2.11 | Notification Service | FCM | Push notification | <500ms |
5.3 Flux 3 : Demande de Virement Bancaire
Étapes du Virement SEPA
| Étape | Source | Destination | Données | Délai |
|---|---|---|---|---|
3.1 | App Mobile | Banking Service | Demande (points, IBAN) | Immédiat |
3.2 | Banking Service | Points Service | Vérification solde | <100ms |
3.3 | Banking Service | Points Service | Blocage points | <100ms |
3.4 | Banking Service | PostgreSQL | INSERT withdrawal | <100ms |
3.5 | Banking Service | Budget Insight | Initiation paiement | <1s |
3.6 | Budget Insight | Banque | Ordre SEPA | 2-3 semaines |
3.7 | Banque | Budget Insight | Confirmation | Variable |
3.8 | Budget Insight | Webhook Handler | Webhook payment.completed | <1s |
3.9 | Banking Service | Notification Service | Notification succès | <500ms |
INTÉGRATION OPENBANKING
6.1 Architecture de l'Intégration Budget Insight
6.2 Endpoints Budget Insight Utilisés
API Endpoints Budget Insight
| Endpoint | Méthode | Usage | Fréquence |
|---|---|---|---|
/auth/init | POST | Initialiser flux OAuth2 | À chaque card linking |
/auth/token | POST | Échanger code contre tokens | À chaque card linking |
/connections | GET | Liste des connexions actives | Selon besoin |
/connections/{id} | GET | Détails d'une connexion | Après card linking |
/connections/{id} | DELETE | Révoquer une connexion | Sur demande utilisateur |
/connections/{id}/renew | POST | Renouveler consentement | Tous les 90 jours |
/transactions | GET | Synchronisation manuelle | Sur demande |
/webhooks | POST | Enregistrer webhook | À chaque card linking |
/payments/initiate | POST | Initier virement SEPA | À chaque demande |
6.3 Configuration des Webhooks
Événements Webhook
| Événement | Description | Traitement REWAPP |
|---|---|---|
transaction.created | Nouvelle transaction détectée | Matching partenaire + crédit points |
connection.synced | Synchronisation terminée | Log + mise à jour status |
connection.expired | Consentement expiré (90j) | Notification utilisateur |
connection.error | Erreur de connexion | Alerte + retry |
payment.completed | Virement effectué | Mise à jour status + notification |
payment.failed | Échec virement | Déblocage points + notification |
6.4 Conformité PSD2
Directive PSD2 (Payment Services Directive 2) - Exigences respectées :
Exigences PSD2
| Exigence PSD2 | Implémentation REWAPP |
|---|---|
| SCA (Strong Customer Authentication) | Authentification 2FA via la banque de l'utilisateur |
| Consentement explicite | Écran de consentement clair avec durée (90 jours) |
| Accès limité (AIS) | Lecture seule des transactions |
| Initiation de paiement (PIS) | Via agrégateur agréé ACPR |
| Durée de consentement | 90 jours max, renouvellement automatique |
| Révocation | Possible à tout moment via l'application |
| Traçabilité | Audit trail complet de tous les accès |
GESTION DES WEBHOOKS
7.1 Architecture de Réception des Webhooks
1. Réception via Load Balancer
Budget Insight envoie POST /webhooks/banking, routé via ALB avec IP whitelisting
2. Vérification IP source
Whitelist des IPs Budget Insight autorisées
3. Vérification Signature HMAC-SHA256
Validation de l'authenticité du payload
4. Vérification Timestamp
Protection anti-replay : webhook doit être < 5 minutes
5. Routage vers Queue
Publication du job dans la queue Redis appropriée
7.2 Validation des Webhooks
7.2.1 Vérification de la Signature
La signature HMAC-SHA256 est calculée ainsi :
expected = HMAC-SHA256(
key: webhook_secret,
data: timestamp + "." + raw_body
)
if (expected !== header['X-Webhook-Signature']) {
return HTTP 401 WEBHOOK_SIGNATURE_INVALID
}
7.2.2 Protection Anti-Replay
webhook_timestamp = header['X-Webhook-Timestamp']
current_timestamp = Date.now()
if (current_timestamp - webhook_timestamp > 300000) { // 5 minutes
return HTTP 401 WEBHOOK_TIMESTAMP_EXPIRED
}
7.3 Format du Payload Webhook
7.3.1 Événement transaction.created
{
"event": "transaction.created",
"timestamp": "2025-11-24T14:30:00.000Z",
"data": {
"transaction_id": "txn_abc123xyz",
"connection_id": "conn_user456",
"account_id": "acc_789",
"amount": 100.00,
"currency": "EUR",
"direction": "DEBIT",
"date": "2025-11-24",
"merchant": {
"name": "RESTAURANT LE BISTROT",
"mcc_code": "5812",
"city": "PARIS",
"country": "FR"
}
},
"signature": "sha256=7d38cdd689735b008..."
}
7.3.2 Événement payment.completed
{
"event": "payment.completed",
"timestamp": "2025-11-24T15:45:00.000Z",
"data": {
"payment_id": "pay_xyz789",
"withdrawal_id": "wd_abc123",
"amount": 9.50,
"currency": "EUR",
"status": "COMPLETED",
"reference": "REWAPP-WD-2025-11-24-001",
"beneficiary_iban": "FR76****1234"
}
}
SÉCURITÉ ET CONFORMITÉ
8.1 Mesures de Sécurité par Couche
Sécurité Multi-Couches
| Couche | Mesure | Implémentation |
|---|---|---|
| Réseau | TLS 1.3 obligatoire | ALB avec certificat ACM |
| Réseau | IP Whitelisting webhooks | Firewall CapRover / Traefik |
| API Gateway | Rate limiting | 1000 req/min auth, 100 req/min non-auth |
| API Gateway | JWT validation | RS256, expiration 15 min |
| Application | Chiffrement tokens | AES-256-GCM, clés variables CapRover |
| Application | Signature webhooks | HMAC-SHA256 |
| Application | Protection replay | Fenêtre 5 minutes |
| Base de données | Chiffrement au repos | RDS encryption AES-256 |
| Base de données | Chiffrement transit | SSL/TLS |
| Cache | Chiffrement transit | Redis TLS |
| Audit | Journalisation | CapRover Logs / Grafana, 90 jours |
8.2 Données Sensibles et Protection
DONNÉES JAMAIS STOCKÉES PAR REWAPP
- Identifiants bancaires (login/mot de passe banque)
- Numéros de carte complets
- Codes CVV/CVC
- Codes PIN
- Soldes bancaires complets
Données Stockées (Chiffrées AES-256)
| Donnée | Chiffrement | Usage |
|---|---|---|
| Tokens Budget Insight | AES-256-GCM | Accès API OpenBanking |
| connectionId | AES-256-GCM | Référence connexion |
| 4 derniers chiffres carte | Non (non sensible) | Affichage UX |
| Nom de la banque | Non | Affichage UX |
| Transactions partenaires | Non | Calcul cashback |
8.3 Conformité RGPD
Principes RGPD Appliqués
| Principe RGPD | Application REWAPP |
|---|---|
| Licéité | Consentement explicite (double : REWAPP + banque) |
| Finalité | Données utilisées exclusivement pour le cashback |
| Minimisation | Seules les transactions partenaires conservées |
| Exactitude | Synchronisation régulière avec source bancaire |
| Limitation conservation | Transactions : 3 ans, tokens : jusqu'à révocation |
| Intégrité | Chiffrement AES-256, audit trail |
| Confidentialité | Accès restreint, principe du moindre privilège |
8.4 Conformité PCI DSS
CONFORMITÉ ASSURÉE
REWAPP ne stocke aucune donnée de carte (numéro complet, CVV, date expiration). La conformité PCI DSS est assurée par le fournisseur OpenBanking (Budget Insight) qui est agréé ACPR.
GESTION DES ERREURS ET RÉSILIENCE
9.1 Stratégie de Retry
Configuration des Retry
| Composant | Tentatives | Délais | Action si Échec |
|---|---|---|---|
| Webhooks (réception) | 1 | - | Log + alerte (pas de retry côté REWAPP) |
| Jobs Bull Queue | 3 | 1s, 2s, 4s (exponential backoff) | Dead Letter Queue |
| Appels API externes | 3 | 1s, 2s, 4s | Erreur propagée |
| Transactions DB | 1 | - | Rollback automatique |
9.2 Dead Letter Queue (DLQ)
Les jobs échoués après 3 tentatives sont placés dans la DLQ pour analyse manuelle :
Queues DLQ
| Queue DLQ | Contenu | Traitement |
|---|---|---|
dlq:transactions | Transactions non traitables | Analyse quotidienne |
dlq:points | Crédits points échoués | Traitement manuel prioritaire |
dlq:notifications | Notifications non envoyées | Retry manuel |
dlq:withdrawals | Virements échoués | Investigation + contact utilisateur |
9.3 Circuit Breaker
Protection contre les cascades de pannes :
Configuration Circuit Breakers
| Service | Seuil Ouverture | Délai Recovery | Action |
|---|---|---|---|
| Budget Insight API | 5 erreurs/10s | 30 secondes | Fallback: queue pour retry |
| Points Service | 10 erreurs/10s | 15 secondes | Erreur utilisateur |
| Notification Service | 20 erreurs/10s | 10 secondes | Silencieux (non bloquant) |
9.4 Codes d'Erreur Bancaires
Codes d'Erreur
| Code | HTTP | Description | Retry | Action Utilisateur |
|---|---|---|---|---|
BANK_CARD_LINKING_FAILED | 400 | Liaison carte échouée | Non | Réessayer |
BANK_CARD_ALREADY_LINKED | 409 | Carte déjà liée | Non | Utiliser carte existante |
BANK_CONNECTION_EXPIRED | 401 | Consentement expiré (90j) | Non | Reconnecter |
BANK_PROVIDER_UNAVAILABLE | 503 | Budget Insight indisponible | Oui | Réessayer plus tard |
BANK_IBAN_INVALID | 400 | IBAN invalide | Non | Corriger IBAN |
BANK_WITHDRAWAL_MINIMUM | 400 | Solde < 100 points | Non | Accumuler plus de points |
BANK_WITHDRAWAL_PENDING | 409 | Virement déjà en cours | Non | Attendre fin traitement |
WEBHOOK_SIGNATURE_INVALID | 401 | Signature webhook invalide | Non | Log sécurité |
WEBHOOK_TIMESTAMP_EXPIRED | 401 | Webhook trop ancien | Non | Log (replay attack) |
MONITORING ET OBSERVABILITÉ
10.1 Métriques Clés (Prometheus / Grafana)
Métriques et Seuils d'Alerte
| Métrique | Seuil Normal | Alerte Warning | Alerte Critique |
|---|---|---|---|
| Webhooks reçus/min | 50-500 | <10 pendant 5 min | <1 pendant 10 min |
| Latence webhook handler | <100ms | >200ms | >500ms |
| Taux matching partenaire | >80% | <70% | <50% |
| Jobs DLQ | 0 | >10 | >100 |
| Erreurs Banking Service | <1% | >2% | >5% |
| Tokens expirés non renouvelés | 0 | >10 | >100 |
| Virements en échec | <1% | >2% | >5% |
10.2 Alertes Configurées
Canaux d'Alertes
| Canal | Type Alerte | Destinataires |
|---|---|---|
Slack #alerts-critical | Service down, DLQ >100, Sécurité | Équipe on-call |
Slack #alerts-warning | Latence élevée, Taux matching bas | Équipe dev |
PagerDuty | Indisponibilité >2 min | Lead technique |
Email quotidien | Rapport anomalies | Équipe complète |
10.3 Logs et Traces
Configuration des Logs
| Type | Outil | Rétention | Contenu |
|---|---|---|---|
| Logs applicatifs | CapRover Logs / Loki | 30 jours | Erreurs, warnings, info |
| Audit trail | CapRover Logs / Loki | 90 jours | Actions sensibles, accès données |
| Traces distribuées | Jaeger | 30 jours | Latence inter-services |
| Métriques | Prometheus / Grafana | 15 mois | KPIs techniques |
10.4 Dashboard de Supervision
Tableaux de bord Grafana configurés :
- Banking Overview : Webhooks/min, latence, erreurs
- Card Linking : Taux succès liaison, durée moyenne, abandons
- Transactions : Volume détecté, taux matching, points crédités
- Withdrawals : Demandes/jour, statuts, délais moyens
- Security : Tentatives invalides, IP suspectes, alertes
RÉCAPITULATIF
11.1 Points Clés de l'Architecture
SÉCURITÉ MAXIMALE
Chiffrement bout-en-bout, tokens jamais exposés, conformité PSD2/RGPD
HAUTE DISPONIBILITÉ
Architecture multi-AZ, circuit breakers, retry automatique
SCALABILITÉ
Microservices stateless, queues asynchrones, auto-scaling
TRAÇABILITÉ
Audit trail complet, logs centralisés, métriques temps réel
RÉSILIENCE
Dead Letter Queue, retry exponential backoff, monitoring proactif
11.2 Composants Critiques
Criticité des Composants
| Composant | Criticité | Backup | RTO |
|---|---|---|---|
| Webhook Handler | CRITIQUE | Multi-instance ECS | <1 min |
| Banking Service | CRITIQUE | Multi-instance ECS | <1 min |
| PostgreSQL | CRITIQUE | Multi-AZ, snapshots | <5 min |
| Redis Cluster | HAUTE | Réplication | <2 min |
| Budget Insight | EXTERNE | N/A (dépendance) | N/A |
11.3 Checklist d'Implémentation
- Contrat Budget Insight signé (agrément ACPR)
- Clés API et secrets configurés (variables CapRover)
- Webhook Handler déployé avec IP whitelisting
- Banking Service avec chiffrement AES-256
- Queues Bull configurées (transactions, points, notifications, withdrawals)
- Circuit breakers configurés
- Monitoring Prometheus/Grafana actif
- Alertes Slack/PagerDuty configurées
- Tests de bout en bout validés (sandbox Budget Insight)
- Documentation API interne à jour
11.4 Références Documentaires
Documents Connexes
| Document | Contenu Lié |
|---|---|
| 1.4 Règles Métier de Fidélité | Calcul points, paliers, validité |
| 4.3 Architecture Backend API | Services, endpoints, communication |
| 5.2.2 Liaison Carte Bancaire | Diagramme séquence card linking |
| 5.2.3 Détection Transaction | Diagramme séquence détection |
| 6.1 Document de Sécurité | Mesures de sécurité globales |
| 6.4 Conformité PCI DSS | Exigences bancaires |
| 7.3 Intégration Solution Bancaire | Configuration détaillée |
— Fin du Document —
Document rédigé conformément au Guide de Rédaction REWAPP v1.0
Source de vérité : Section 1 - Documents de Cadrage