# 🧹 Système de Nettoyage du Cache - GEOSECTOR ## 📋 Vue d'ensemble Un système complet de nettoyage du cache a été implémenté dans l'application GEOSECTOR pour résoudre les problèmes de compatibilité lors des mises à jour de la structure des données Hive. ## 🎯 Problème résolu Les testeurs rencontraient des problèmes au démarrage de l'application après une mise à jour modifiant la structure des boxes Hive, nécessitant un nettoyage manuel du cache du navigateur. ## ✨ Fonctionnalités implémentées ### 1. 🔄 Nettoyage automatique à chaque changement de version - **Détection automatique** : Compare la version stockée avec la version actuelle - **Nettoyage sélectif** : Supprime toutes les données SAUF `pending_requests` - **Web uniquement** : Activé uniquement sur la plateforme web - **Transparent** : S'exécute automatiquement au démarrage ### 2. 🔘 Bouton de nettoyage manuel - **Accessible à tous** : Disponible dans tous les environnements (DEV/REC/PROD) - **Confirmation requise** : Dialog de confirmation avant nettoyage - **Feedback visuel** : Barre de progression et messages de statut - **Icône orange** : Facilement identifiable avec l'icône `cleaning_services` ### 3. 📊 Logging détaillé - **Emojis descriptifs** : Pour une lecture rapide des logs - **Étapes détaillées** : Chaque opération est loggée - **Gestion d'erreurs** : Capture et log toutes les erreurs - **Statistiques** : Nombre de requêtes préservées, boxes nettoyées, etc. ## 🛠️ Détails techniques ### Fichiers modifiés - `lib/presentation/auth/splash_page.dart` : Logique principale du nettoyage - `lib/core/utils/html_stub.dart` : Stub pour compatibilité multi-plateforme ### Méthodes principales #### `_performSelectiveCleanup()` ```dart // Étapes du nettoyage : 1. Nettoyer le Service Worker (web) 2. Sauvegarder pending_requests 3. Fermer toutes les boxes 4. Supprimer les boxes du disque 5. Réinitialiser Hive 6. Restaurer pending_requests 7. Sauvegarder la nouvelle version ``` #### `_checkVersionAndCleanIfNeeded()` ```dart // Logique de détection : - Compare version stockée vs actuelle - Si différente → nettoyage automatique - Si première installation → sauvegarde version - Si identique → pas de nettoyage ``` ### Boxes préservées - `pending_requests` : **TOUJOURS préservée** (données critiques offline) ### Boxes nettoyées - `user` - `operations` - `passages` - `sectors` - `membres` - `amicale` - `clients` - `user_sector` - `settings` - `chat_rooms` - `chat_messages` ## 📝 Logs de debug ### Exemple de log de nettoyage automatique ``` 🔍 Vérification de version: Version stockée: 3.1.9 Version actuelle: 3.2.0 🆕 NOUVELLE VERSION DÉTECTÉE ! Migration de 3.1.9 vers 3.2.0 🧹 === DÉBUT DU NETTOYAGE DU CACHE === 🧹 📌 Type: AUTOMATIQUE 📱 Platform: WEB 📦 Version actuelle: 3.2.0 🔄 Nettoyage du Service Worker... ✅ Service Worker désenregistré 💾 Sauvegarde des requêtes en attente... 📊 5 requêtes en attente sauvegardées 🗑️ Nettoyage des boxes Hive... ✅ Box "user" supprimée ✅ Box "operations" supprimée [...] ♻️ Restauration des requêtes en attente... ✅ 5 requêtes restaurées 💾 Version 3.2.0 sauvegardée 🎉 === NETTOYAGE TERMINÉ AVEC SUCCÈS === 🎉 ``` ### Exemple de log de nettoyage manuel ``` 👤 Utilisateur a demandé un nettoyage manuel 🧹 === DÉBUT DU NETTOYAGE DU CACHE === 🧹 📌 Type: MANUEL [...] ``` ## 🎨 Interface utilisateur ### Indicateurs visuels pendant le nettoyage - **Barre de progression** : Animée avec pourcentage - **Messages de statut** : - "Nettoyage du cache en cours..." - "Fermeture des bases de données..." - "Nettoyage des données locales..." - "Réinitialisation de Hive..." - "Nettoyage terminé !" ### Dialog de confirmation (nettoyage manuel) ``` Titre : "Nettoyer le cache ?" Message : • Supprimer toutes les données locales • Préserver les requêtes en attente • Forcer le rechargement de l'application [Annuler] [Nettoyer] ``` ## ⚠️ Points d'attention 1. **Ne JAMAIS supprimer `pending_requests`** : Données critiques pour la synchronisation offline 2. **Web uniquement** : Le nettoyage automatique n'est actif que sur web 3. **Test en DEV** : Toujours tester les changements de structure en DEV avant REC/PROD 4. **Version à incrémenter** : Penser à incrémenter la version dans `pubspec.yaml` ## 🚀 Utilisation ### Pour les développeurs 1. Modifier la structure Hive 2. Incrémenter la version dans `pubspec.yaml` 3. Déployer → Le nettoyage se fera automatiquement ### Pour les testeurs - Si problème : Cliquer sur "Nettoyer le cache" (bouton orange) - Confirmer l'action - L'app redémarre proprement ## 📈 Bénéfices - ✅ **Zéro intervention manuelle** des testeurs - ✅ **Préservation des données critiques** (requêtes offline) - ✅ **Transparence totale** via les logs - ✅ **Fallback manuel** si nécessaire - ✅ **Migration fluide** entre versions