feat: synchronisation mode deconnecte fin chat et stats
This commit is contained in:
158
app/docs/CACHE-CLEANING-SYSTEM.md
Normal file
158
app/docs/CACHE-CLEANING-SYSTEM.md
Normal file
@@ -0,0 +1,158 @@
|
||||
# 🧹 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
|
||||
Reference in New Issue
Block a user