====== Sprint 2 — Gestion Utilisateurs ======
===== Objectif du Sprint =====
Compléter le domaine Utilisateurs afin de disposer d'un référentiel utilisateur exploitable par tous les modules métiers.
À l'issue du Sprint 2 :
* Les utilisateurs disposent d'un profil complet
* Les adresses sont gérées
* Les documents sont téléversables
* Les sessions sont historisées
* Les connexions sont tracées
* Les préférences utilisateur sont configurables
* Les notifications sont personnalisables
* Les fondations KYC sont prêtes
Ce sprint clôture le domaine Utilisateurs avant le démarrage du cœur métier immobilier.
----
====== Périmètre ======
===== Modules concernés =====
UsersModule
ProfilesModule
DocumentsModule
SessionsModule
NotificationsModule
----
====== User Stories ======
===== US-201 : Consulter son profil =====
**En tant qu'utilisateur**
Je souhaite consulter mes informations
Afin de vérifier leur exactitude.
----
===== Endpoint =====
GET /users/me
----
===== Critères =====
* Profil complet affiché
* Données à jour
* Temps de réponse < 500 ms
----
====== US-202 : Modifier son profil ======
===== Endpoint =====
PUT /users/me
----
===== Champs =====
Prénom
Nom
Téléphone
Date de naissance
Nationalité
----
====== US-203 : Gérer ses adresses ======
===== Endpoints =====
GET /users/me/addresses
POST /users/me/addresses
PUT /users/me/addresses/{id}
DELETE /users/me/addresses/{id}
----
===== Données =====
Adresse
Complément
Code Postal
Ville
Pays
Adresse principale
----
====== US-204 : Déposer un document ======
===== Objectif =====
Préparer la vérification d'identité.
----
===== Types =====
IDENTITY_CARD
PASSPORT
DRIVING_LICENSE
PROOF_OF_ADDRESS
OTHER
----
===== Endpoint =====
POST /users/me/documents
----
===== Critères =====
* Upload sécurisé
* Virus Scan futur compatible
* Stockage MinIO/S3
----
====== US-205 : Consulter ses documents ======
===== Endpoint =====
GET /users/me/documents
----
====== US-206 : Vérification identité ======
===== Statuts =====
PENDING
UNDER_REVIEW
VALIDATED
REJECTED
----
===== Endpoint =====
POST /users/me/identity-verification
----
===== Évolution future =====
Intégration :
FranceConnect
Onfido
Stripe Identity
----
====== US-207 : Consulter ses sessions ======
===== Endpoint =====
GET /users/me/sessions
----
===== Informations =====
Date
Adresse IP
Navigateur
Pays
Statut
----
====== US-208 : Révoquer une session ======
===== Endpoint =====
DELETE /users/me/sessions/{id}
----
===== Critères =====
* Déconnexion immédiate
* Token invalidé
----
====== US-209 : Historique de connexion ======
===== Endpoint =====
GET /users/me/login-history
----
===== Données =====
Date
IP
Navigateur
Résultat
Pays
----
====== US-210 : Préférences utilisateur ======
===== Endpoint =====
GET /users/me/preferences
PUT /users/me/preferences
----
===== Préférences =====
Langue
Fuseau horaire
Devise
Format date
Format heure
----
====== US-211 : Notifications ======
===== Endpoint =====
GET /users/me/notification-settings
PUT /users/me/notification-settings
----
===== Paramètres =====
Email
SMS
Push
Marketing
Paiements
Réservations
Contrats
----
====== Architecture Prisma ======
===== UserAddress =====
model UserAddress {
id String @id @default(uuid())
userId String
address1 String
address2 String?
postalCode String
city String
country String
isDefault Boolean @default(false)
user User @relation(
fields: [userId],
references: [id]
)
}
----
===== UserDocument =====
model UserDocument {
id String @id @default(uuid())
userId String
documentType String
fileName String
storagePath String
status String
uploadedAt DateTime
}
----
===== UserSession =====
model UserSession {
id String @id @default(uuid())
userId String
refreshToken String
ipAddress String
userAgent String
expiresAt DateTime
}
----
===== LoginHistory =====
model LoginHistory {
id String @id @default(uuid())
userId String
ipAddress String
userAgent String
success Boolean
createdAt DateTime
}
----
===== UserPreference =====
model UserPreference {
id String @id @default(uuid())
userId String @unique
language String
timezone String
currency String
}
----
====== Structure Backend ======
src/modules/users
├── profile
│
├── addresses
│
├── documents
│
├── sessions
│
├── preferences
│
├── notifications
│
└── login-history
----
====== Swagger ======
===== Nouveaux tags =====
Profiles
Addresses
Documents
Sessions
Preferences
Notifications
----
===== Nouveaux endpoints =====
Environ :
20 endpoints REST
----
====== Frontend ======
===== Pages =====
/profile
/profile/personal
/profile/addresses
/profile/documents
/profile/preferences
/profile/security
/profile/sessions
----
===== Composants =====
ProfileCard
AddressForm
DocumentUploader
SessionTable
PreferencesForm
NotificationSettings
----
====== Tests ======
===== Unitaires =====
UserProfileService
AddressService
DocumentService
SessionService
----
===== Intégration =====
Upload document
↓
Consultation document
↓
Suppression document
----
===== E2E =====
Login
↓
Modifier profil
↓
Ajouter adresse
↓
Uploader document
↓
Modifier préférences
↓
Consulter sessions
----
====== Définition de terminé ======
Le Sprint 2 est terminé lorsque :
* Profil complet opérationnel
* Adresses opérationnelles
* Documents opérationnels
* Sessions opérationnelles
* Historique opérationnel
* Préférences opérationnelles
* Swagger à jour
* Tests verts
* CI verte
----
====== Livrables ======
* UserProfileModule
* UserAddressModule
* UserDocumentModule
* UserSessionModule
* UserPreferenceModule
* NotificationPreferenceModule
* DTO
* Migrations Prisma
* Swagger
* Tests
----
====== Démonstration Sprint ======
Scénario complet :
1. Création compte
2. Connexion
3. Modification profil
4. Ajout adresse
5. Upload document
6. Modification préférences
7. Consultation sessions
8. Déconnexion d'une session
----
====== Sprint suivant ======
===== Sprint 3 — Catalogue Immobilier =====
Objectif :
Construire le premier domaine métier cœur de la plateforme.
Modules concernés :
PropertiesModule
PropertyMediaModule
PropertyFeaturesModule
PropertyAvailabilityModule
PropertyRatesModule
Fonctionnalités :
* Création d'un bien
* Modification d'un bien
* Publication d'un bien
* Gestion des photos
* Gestion des équipements
* Gestion des disponibilités
* Gestion des tarifs
* Consultation publique
À l'issue du Sprint 3, la plateforme sera capable de publier et administrer ses premiers biens immobiliers.