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