====== 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.