====== Sprint 16 — Mobile, PWA & Expérience Terrain ======
===== Objectif du Sprint =====
Permettre aux équipes terrain, propriétaires et clients d'utiliser la plateforme depuis un smartphone ou une tablette, y compris dans des zones à faible connectivité.
À l'issue du Sprint 16 :
* La plateforme est disponible en PWA
* Le mode hors ligne est opérationnel
* Les check-in sont réalisables depuis mobile
* Les check-out sont réalisables depuis mobile
* Les états des lieux sont dématérialisés
* Les signatures sont collectées sur mobile
* Les photos terrain sont synchronisées automatiquement
* Les équipes peuvent travailler sans connexion permanente
Ce sprint transforme la plateforme en outil opérationnel de terrain.
----
====== Périmètre ======
===== Modules concernés =====
MobileModule
PWAModule
OfflineModule
CheckInModule
CheckOutModule
FieldOperationsModule
InspectionModule
----
====== Architecture Mobile ======
===== Stack cible =====
NextJS PWA
↓
Service Worker
↓
IndexedDB
↓
API NestJS
↓
Synchronisation
----
===== Fonctionnement =====
Utilisateur
↓
Travail hors ligne
↓
Stockage local
↓
Retour réseau
↓
Synchronisation automatique
----
====== User Stories ======
===== US-1601 : Installer la PWA =====
**En tant qu'utilisateur**
Je souhaite installer l'application sur mon mobile
Afin d'y accéder rapidement.
----
===== Compatibilité =====
Android
iOS
Windows
macOS
----
===== Fonctionnalités =====
Installation écran accueil
Icône personnalisée
Splash Screen
Notifications Push
----
====== US-1602 : Utiliser l'application hors ligne ======
===== Fonctionnalités disponibles =====
Check-in
Check-out
États des lieux
Photos
Commentaires
----
===== Stockage =====
IndexedDB
----
====== Check-In ======
===== US-1603 : Réaliser un check-in =====
===== Endpoint =====
POST /checkins
----
===== Données =====
Réservation
Date
Agent
Commentaires
----
===== Workflow =====
Arrivée client
↓
Contrôle logement
↓
Signature
↓
Validation
----
====== US-1604 : Vérifier les informations client =====
===== Informations =====
Identité
Réservation
Voyageurs
Documents
----
====== État des lieux ======
===== US-1605 : Créer un état des lieux =====
===== Endpoint =====
POST /inspections
----
===== Pièces =====
Entrée
Salon
Cuisine
Salle de bain
Chambres
Extérieur
----
===== Contrôles =====
Propreté
Équipements
Dégradations
Observations
----
====== US-1606 : Ajouter des photos =====
===== Fonctionnalités =====
Capture photo
Compression
Géolocalisation
Horodatage
----
===== Formats =====
JPEG
PNG
WEBP
----
====== US-1607 : Annoter une photo =====
===== Informations =====
Commentaire
Zone concernée
Niveau gravité
----
====== Signature mobile ======
===== US-1608 : Signer l'état des lieux =====
===== Signataires =====
Client
Agent
----
===== Endpoint =====
POST /inspections/{id}/sign
----
===== Résultat =====
PDF signé
Archivage
----
====== Check-Out ======
===== US-1609 : Réaliser un check-out =====
===== Endpoint =====
POST /checkouts
----
===== Contrôles =====
État logement
Clés
Équipements
Consommations
----
====== US-1610 : Déclarer des dommages =====
===== Informations =====
Description
Photos
Montant estimé
Responsable
----
====== Synchronisation ======
===== US-1611 : Synchroniser les données =====
===== Déclencheurs =====
Retour connexion
Synchronisation manuelle
Planification
----
===== Données synchronisées =====
Photos
États des lieux
Signatures
Commentaires
----
====== US-1612 : Gérer les conflits =====
===== Cas =====
Modification locale
+
Modification serveur
----
===== Stratégie =====
Last Write Wins
ou
Validation manuelle
----
====== Notifications Push ======
===== US-1613 : Recevoir une notification =====
===== Événements =====
Arrivée client
Départ client
Nouvelle mission
Retard paiement
Contrat signé
----
====== Missions Terrain ======
===== US-1614 : Consulter ses missions =====
===== Endpoint =====
GET /field-operations/tasks
----
===== Types =====
Check-in
Check-out
Ménage
Maintenance
Inspection
----
====== US-1615 : Clôturer une mission =====
===== Workflow =====
Mission
↓
Intervention
↓
Photos
↓
Validation
↓
Clôture
----
====== Modèle Prisma ======
===== CheckIn =====
model CheckIn {
id String @id @default(uuid())
reservationId String
agentId String
checkedInAt DateTime
notes String?
}
----
===== CheckOut =====
model CheckOut {
id String @id @default(uuid())
reservationId String
agentId String
checkedOutAt DateTime
notes String?
}
----
===== Inspection =====
model Inspection {
id String @id @default(uuid())
reservationId String
inspectionType String
status String
createdAt DateTime
}
----
===== InspectionPhoto =====
model InspectionPhoto {
id String @id @default(uuid())
inspectionId String
filePath String
comment String?
}
----
===== FieldTask =====
model FieldTask {
id String @id @default(uuid())
assignedToId String
taskType String
status String
dueDate DateTime
}
----
====== Architecture Backend ======
src/modules/mobile
├── checkins
│
├── checkouts
│
├── inspections
│
├── field-operations
│
├── offline-sync
│
└── push-notifications
----
====== Architecture Frontend ======
apps/web
├── app/mobile
│
├── app/checkin
│
├── app/checkout
│
├── app/inspections
│
├── app/tasks
│
└── app/offline
----
====== Capacités Offline ======
===== Cache local =====
Biens
Réservations
Clients
Missions
Checklists
----
===== Synchronisation =====
Background Sync
Service Worker
Queue Offline
----
====== Événements métier ======
===== CheckInCompleted =====
CheckInCompleted
----
===== InspectionSigned =====
InspectionSigned
----
===== OfflineSyncCompleted =====
OfflineSyncCompleted
----
====== Swagger ======
===== Tags =====
CheckIns
CheckOuts
Inspections
FieldOperations
Mobile
----
===== Volume API =====
Environ :
30 endpoints
----
====== Frontend ======
===== Pages =====
/mobile
/mobile/tasks
/mobile/checkin
/mobile/checkout
/mobile/inspections
/mobile/offline
----
===== Composants =====
CheckInWizard
CheckOutWizard
InspectionForm
PhotoUploader
SignaturePad
OfflineSyncIndicator
----
====== Tests ======
===== Unitaires =====
CheckInService
CheckOutService
InspectionService
OfflineSyncService
----
===== Intégration =====
Mode Offline
↓
Création Inspection
↓
Retour réseau
↓
Synchronisation
----
===== E2E =====
Mission terrain
↓
Check-in
↓
Photos
↓
Signature
↓
Mode hors ligne
↓
Synchronisation
↓
Archivage
----
====== Définition de terminé ======
Le Sprint 16 est terminé lorsque :
* PWA installable
* Mode hors ligne opérationnel
* Check-in opérationnel
* Check-out opérationnel
* États des lieux opérationnels
* Signatures mobiles opérationnelles
* Synchronisation opérationnelle
* Notifications Push opérationnelles
* Swagger à jour
* Tests verts
* CI verte
----
====== Livrables ======
* MobileModule
* PWAModule
* OfflineModule
* CheckInModule
* CheckOutModule
* InspectionModule
* FieldOperationsModule
* DTO
* Swagger
* Tests
* Migrations Prisma
----
====== Bilan Release 3.2 ======
À l'issue du Sprint 16 :
* Exploitation mobile complète
* Travail hors ligne
* États des lieux numériques
* Gestion terrain industrialisée
* Synchronisation temps réel
La plateforme couvre désormais l'ensemble des opérations de terrain nécessaires à une activité de location professionnelle.
----
====== Sprint suivant ======
===== Sprint 17 — Revenue Management & Optimisation Tarifaire =====
Objectif :
Maximiser les revenus locatifs grâce à des mécanismes avancés de tarification dynamique.
Modules concernés :
RevenueManagementModule
DynamicPricingModule
YieldManagementModule
CompetitorAnalysisModule
PricingRulesModule
Fonctionnalités :
* Tarification dynamique
* Analyse de la demande
* Ajustement automatique des prix
* Simulation de revenus
* Analyse concurrentielle
* Recommandations tarifaires
À l'issue du Sprint 17, la plateforme disposera d'un moteur avancé d'optimisation des revenus.