====== Sprint 8 — CRM & Relation Client ====== ===== Objectif du Sprint ===== Mettre en œuvre un CRM intégré permettant aux équipes commerciales, administratives et de gestion locative de suivre l'ensemble du cycle de vie client. À l'issue du Sprint 8 : * Les prospects sont centralisés * Le pipeline commercial est opérationnel * Les activités sont historisées * Les tâches sont planifiées * Les notes clients sont accessibles * Les interactions sont tracées * Les relances sont automatisées * Les prospects peuvent être convertis en clients Ce sprint transforme la plateforme en véritable outil de gestion commerciale. ---- ====== Périmètre ====== ===== Modules concernés ===== CRMModule LeadsModule ActivitiesModule TasksModule PipelineModule CustomerNotesModule AutomationModule ---- ====== Workflow métier ====== Prospect ↓ Qualification ↓ Contact ↓ Visite ↓ Négociation ↓ Client ↓ Réservation ---- ====== User Stories ====== ===== US-801 : Créer un prospect ===== **En tant que commercial** Je souhaite enregistrer un prospect Afin de suivre une opportunité commerciale. ---- ===== Endpoint ===== POST /crm/leads ---- ===== Informations ===== Nom Prénom Téléphone Email Origine Commentaires ---- ===== Sources ===== Site Web Téléphone Email Salon Réseau Recommandation Autre ---- ====== US-802 : Consulter les prospects ====== ===== Endpoint ===== GET /crm/leads ---- ===== Filtres ===== Statut Commercial Source Date création ---- ====== US-803 : Modifier un prospect ====== ===== Endpoint ===== PUT /crm/leads/{id} ---- ====== Pipeline Commercial ====== ===== US-804 : Déplacer un prospect ===== ===== Endpoint ===== POST /crm/leads/{id}/move-stage ---- ===== Étapes ===== NOUVEAU ↓ QUALIFIÉ ↓ CONTACTÉ ↓ VISITE ↓ NÉGOCIATION ↓ GAGNÉ └── PERDU ---- ===== Vue Kanban ===== NOUVEAU QUALIFIÉ CONTACTÉ VISITE NÉGOCIATION GAGNÉ PERDU ---- ====== US-805 : Convertir un prospect ====== ===== Endpoint ===== POST /crm/leads/{id}/convert ---- ===== Résultat ===== Lead ↓ Customer ↓ User ↓ Reservation possible ---- ====== Activités ====== ===== US-806 : Créer une activité ===== ===== Endpoint ===== POST /crm/activities ---- ===== Types ===== APPEL EMAIL VISITE RENDEZ_VOUS MESSAGE AUTRE ---- ===== Données ===== Date Commercial Compte rendu Résultat ---- ====== US-807 : Consulter l'historique ====== ===== Endpoint ===== GET /crm/customers/{id}/activities ---- ====== Gestion des tâches ====== ===== US-808 : Créer une tâche ===== ===== Endpoint ===== POST /crm/tasks ---- ===== Données ===== Titre Description Assigné à Date échéance Priorité ---- ===== Priorités ===== LOW MEDIUM HIGH URGENT ---- ====== US-809 : Clôturer une tâche ===== ===== Endpoint ===== POST /crm/tasks/{id}/complete ---- ====== Notes Clients ====== ===== US-810 : Ajouter une note ===== ===== Endpoint ===== POST /crm/customers/{id}/notes ---- ===== Types ===== COMMERCIALE ADMINISTRATIVE FINANCIÈRE TECHNIQUE ---- ====== US-811 : Consulter les notes ====== ===== Endpoint ===== GET /crm/customers/{id}/notes ---- ====== Historique des interactions ====== ===== US-812 : Timeline client ===== ===== Endpoint ===== GET /crm/customers/{id}/timeline ---- ===== Éléments ===== Création compte Emails Appels Réservations Paiements Contrats Notes ---- ====== Relances automatiques ====== ===== US-813 : Créer une relance ===== ===== Endpoint ===== POST /crm/reminders ---- ===== Déclencheurs ===== Prospect inactif Contrat non signé Paiement en attente Réservation abandonnée ---- ====== US-814 : Campagnes automatiques ===== ===== Types ===== Email SMS Notification ---- ===== Exemple ===== Prospect inactif ↓ 7 jours ↓ Email automatique ---- ====== Modèle Prisma ====== ===== Lead ===== model Lead { id String @id @default(uuid()) firstName String lastName String email String? phone String? source String? stage String assignedToId String? createdAt DateTime @default(now()) } ---- ===== Activity ===== model Activity { id String @id @default(uuid()) leadId String? customerId String? activityType String activityDate DateTime notes String? } ---- ===== Task ===== model Task { id String @id @default(uuid()) title String description String? assignedToId String dueDate DateTime priority String completed Boolean @default(false) } ---- ===== CustomerNote ===== model CustomerNote { id String @id @default(uuid()) customerId String noteType String content String createdById String createdAt DateTime } ---- ====== Architecture Backend ====== src/modules/crm ├── leads │ ├── pipeline │ ├── activities │ ├── tasks │ ├── notes │ ├── timeline │ └── automations ---- ====== Domain Services ====== LeadService PipelineService ActivityService TaskService CustomerNoteService ReminderService ---- ====== Événements métier ====== ===== LeadCreated ===== LeadCreated ---- ===== LeadConverted ===== LeadConverted ---- ===== TaskCompleted ===== TaskCompleted ---- ===== ReminderTriggered ===== ReminderTriggered ---- ====== Swagger ====== ===== Tags ===== CRM Leads Activities Tasks CustomerNotes Pipeline ---- ===== Volume API ===== Environ : 35 endpoints ---- ====== Frontend ====== ===== Pages ===== /crm /crm/leads /crm/leads/[id] /crm/pipeline /crm/tasks /crm/customers /crm/customers/[id] ---- ===== Composants ===== LeadKanban LeadCard CustomerTimeline TaskBoard ActivityFeed ReminderPanel ---- ====== Dashboard CRM ====== ===== KPIs ===== Prospects actifs Prospects gagnés Prospects perdus Taux conversion Activités du jour Tâches en retard ---- ====== Tests ====== ===== Unitaires ===== LeadService PipelineService TaskService ActivityService ---- ===== Intégration ===== Création prospect ↓ Qualification ↓ Activité ↓ Conversion ---- ===== E2E ===== Création prospect ↓ Déplacement pipeline ↓ Ajout activité ↓ Création tâche ↓ Ajout note ↓ Conversion client ---- ====== Définition de terminé ====== Le Sprint 8 est terminé lorsque : * CRM opérationnel * Pipeline Kanban opérationnel * Activités opérationnelles * Tâches opérationnelles * Notes opérationnelles * Historique opérationnel * Relances opérationnelles * Swagger à jour * Tests verts * CI verte ---- ====== Livrables ====== * CRMModule * LeadsModule * ActivitiesModule * TasksModule * PipelineModule * CustomerNotesModule * AutomationModule * DTO * Swagger * Tests * Migrations Prisma ---- ====== Démonstration Sprint ====== Scénario métier : 1. Création prospect 2. Qualification 3. Appel commercial 4. Création tâche 5. Ajout note 6. Déplacement pipeline 7. Conversion client 8. Création réservation ---- ====== Bilan Release 1.2 ====== À l'issue du Sprint 8 : * Gestion locative complète * Paiements et facturation * Extranet propriétaire * CRM intégré * Relation client centralisée La plateforme couvre désormais les processus commerciaux et opérationnels de l'agence. ---- ====== Sprint suivant ====== ===== Sprint 9 — Messagerie & Notifications ===== Objectif : Centraliser toutes les communications de la plateforme. Modules concernés : MessagingModule NotificationsModule EmailModule SmsModule TemplatesModule CampaignsModule Fonctionnalités : * Messagerie interne * Emails transactionnels * SMS transactionnels * Notifications temps réel * Templates de communication * Campagnes marketing À l'issue du Sprint 9, la plateforme disposera d'un centre de communication unifié.