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