====== Sprint 9 — Messagerie & Notifications ======
===== Objectif du Sprint =====
Mettre en place un centre de communication unifié couvrant l'ensemble des échanges entre :
* Clients
* Propriétaires
* Gestionnaires
* Commerciaux
* Administrateurs
À l'issue du Sprint 9 :
* Une messagerie interne est disponible
* Les emails transactionnels sont automatisés
* Les SMS transactionnels sont opérationnels
* Les notifications temps réel sont centralisées
* Les modèles de communication sont administrables
* Les campagnes marketing sont gérées depuis la plateforme
Ce sprint transforme la plateforme en outil omnicanal de communication.
----
====== Périmètre ======
===== Modules concernés =====
MessagingModule
NotificationsModule
EmailModule
SmsModule
TemplatesModule
CampaignsModule
RealtimeModule
----
====== Workflow global ======
Événement métier
↓
Notification Engine
↓
Email
SMS
Notification In-App
WebSocket
↓
Historisation
----
====== User Stories ======
===== US-901 : Envoyer un message interne =====
**En tant qu'utilisateur**
Je souhaite envoyer un message
Afin d'échanger avec l'agence.
----
===== Endpoint =====
POST /messages
----
===== Données =====
Destinataire
Sujet
Message
Pièces jointes
----
====== US-902 : Consulter ses conversations ======
===== Endpoint =====
GET /messages/conversations
----
===== Informations =====
Participants
Dernier message
Date
Nombre non lus
----
====== US-903 : Répondre à une conversation ======
===== Endpoint =====
POST /messages/conversations/{id}/messages
----
====== US-904 : Joindre un document =====
===== Types =====
PDF
Image
Document bureautique
----
===== Taille maximale =====
20 Mo
----
====== Emails transactionnels ======
===== US-905 : Notification réservation =====
===== Déclencheur =====
ReservationCreated
----
===== Destinataires =====
Client
Agence
Propriétaire
----
====== US-906 : Notification contrat =====
===== Déclencheur =====
ContractGenerated
ContractSigned
----
====== US-907 : Notification paiement =====
===== Déclencheur =====
PaymentSucceeded
PaymentFailed
RefundIssued
----
====== SMS transactionnels ======
===== US-908 : Envoyer un SMS =====
===== Cas d'usage =====
Confirmation réservation
Rappel arrivée
Paiement en attente
Signature en attente
----
===== Fournisseurs =====
Twilio
OVH SMS
SMSFactor
----
====== Notifications temps réel ======
===== US-909 : Notification In-App =====
===== Endpoint =====
GET /notifications
----
===== Types =====
INFO
SUCCESS
WARNING
ERROR
----
====== US-910 : Marquer comme lu =====
===== Endpoint =====
POST /notifications/{id}/read
----
====== US-911 : Notifications WebSocket =====
===== Événements =====
Nouveau message
Nouveau contrat
Paiement reçu
Nouvelle réservation
----
====== Templates ======
===== US-912 : Créer un template =====
===== Endpoint =====
POST /templates
----
===== Canaux =====
EMAIL
SMS
PUSH
----
===== Variables =====
{{customer_name}}
{{property_name}}
{{reservation_number}}
{{amount}}
----
====== US-913 : Prévisualiser un template =====
===== Endpoint =====
POST /templates/preview
----
====== Campagnes Marketing ======
===== US-914 : Créer une campagne =====
===== Endpoint =====
POST /campaigns
----
===== Types =====
EMAIL
SMS
----
===== Cibles =====
Clients
Prospects
Propriétaires
----
====== US-915 : Programmer une campagne =====
===== Planification =====
Date
Heure
Fuseau horaire
----
====== Historique des communications ======
===== US-916 : Consulter l'historique =====
===== Endpoint =====
GET /communications/history
----
===== Filtres =====
Utilisateur
Canal
Date
Statut
----
====== Préférences de communication ======
===== US-917 : Paramétrer les notifications =====
===== Endpoint =====
PUT /users/me/notification-settings
----
===== Paramètres =====
Email
SMS
Push
Marketing
Réservations
Paiements
Contrats
----
====== Modèle Prisma ======
===== Conversation =====
model Conversation {
id String @id @default(uuid())
subject String?
createdAt DateTime @default(now())
}
----
===== Message =====
model Message {
id String @id @default(uuid())
conversationId String
senderId String
content String
createdAt DateTime @default(now())
}
----
===== Notification =====
model Notification {
id String @id @default(uuid())
userId String
type String
title String
message String
isRead Boolean @default(false)
createdAt DateTime @default(now())
}
----
===== Template =====
model Template {
id String @id @default(uuid())
name String
channel String
subject String?
content String
active Boolean
}
----
===== Campaign =====
model Campaign {
id String @id @default(uuid())
name String
channel String
scheduledAt DateTime?
status String
}
----
====== Architecture Backend ======
src/modules/communications
├── messaging
│
├── notifications
│
├── email
│
├── sms
│
├── templates
│
├── campaigns
│
└── realtime
----
====== Domain Services ======
MessagingService
NotificationService
EmailService
SmsService
TemplateService
CampaignService
RealtimeService
----
====== Événements métier ======
===== MessageSent =====
MessageSent
----
===== NotificationCreated =====
NotificationCreated
----
===== EmailSent =====
EmailSent
----
===== SmsSent =====
SmsSent
----
===== CampaignExecuted =====
CampaignExecuted
----
====== Intégrations externes ======
===== Email =====
Resend
SendGrid
Mailjet
----
===== SMS =====
Twilio
OVH SMS
SMSFactor
----
===== Temps réel =====
Socket.IO
WebSocket Gateway NestJS
----
====== Swagger ======
===== Tags =====
Messaging
Notifications
Templates
Campaigns
Emails
Sms
----
===== Volume API =====
Environ :
35 endpoints
----
====== Frontend ======
===== Pages =====
/messages
/messages/[id]
/notifications
/templates
/campaigns
/campaigns/[id]
----
===== Composants =====
MessageCenter
ConversationList
NotificationBell
NotificationCenter
TemplateEditor
CampaignScheduler
----
====== Dashboard Communication ======
===== KPIs =====
Messages envoyés
Emails envoyés
SMS envoyés
Taux ouverture
Taux clic
Campagnes actives
----
====== Tests ======
===== Unitaires =====
MessagingService
NotificationService
EmailService
SmsService
CampaignService
----
===== Intégration =====
Réservation
↓
Notification
↓
Email
↓
Historisation
----
===== E2E =====
Création réservation
↓
Notification automatique
↓
Email envoyé
↓
SMS envoyé
↓
Consultation historique
----
====== Définition de terminé ======
Le Sprint 9 est terminé lorsque :
* Messagerie interne opérationnelle
* Emails transactionnels opérationnels
* SMS opérationnels
* Notifications opérationnelles
* Templates opérationnels
* Campagnes opérationnelles
* Temps réel opérationnel
* Swagger à jour
* Tests verts
* CI verte
----
====== Livrables ======
* MessagingModule
* NotificationsModule
* EmailModule
* SmsModule
* TemplatesModule
* CampaignsModule
* RealtimeModule
* DTO
* Swagger
* Tests
* Migrations Prisma
----
====== Démonstration Sprint ======
Scénario métier :
1. Création réservation
2. Notification automatique
3. Envoi email
4. Envoi SMS
5. Message client
6. Réponse agence
7. Notification temps réel
8. Consultation historique
----
====== Bilan Release 1.3 ======
À l'issue du Sprint 9 :
* CRM complet
* Communications centralisées
* Emails automatisés
* SMS automatisés
* Notifications temps réel
* Campagnes marketing
La plateforme couvre désormais l'ensemble du cycle relationnel avec les clients et les propriétaires.
----
====== Sprint suivant ======
===== Sprint 10 — Reporting & Business Intelligence =====
Objectif :
Fournir aux directions et gestionnaires les indicateurs de pilotage de l'activité.
Modules concernés :
ReportingModule
DashboardModule
AnalyticsModule
ExportsModule
ForecastModule
Fonctionnalités :
* Tableaux de bord
* KPI financiers
* KPI commerciaux
* KPI d'occupation
* Exports Excel/PDF
* Prévisions de revenus
* Statistiques propriétaires
* Statistiques biens
À l'issue du Sprint 10, la plateforme disposera d'une couche décisionnelle complète permettant le pilotage de l'agence.