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