feat: Release version 3.1.4 - Mode terrain et génération PDF

 Nouvelles fonctionnalités:
- Ajout du mode terrain pour utilisation mobile hors connexion
- Génération automatique de reçus PDF avec template personnalisé
- Révision complète du système de cartes avec amélioration des performances

🔧 Améliorations techniques:
- Refactoring du module chat avec architecture simplifiée
- Optimisation du système de sécurité NIST SP 800-63B
- Amélioration de la gestion des secteurs géographiques
- Support UTF-8 étendu pour les noms d'utilisateurs

📱 Application mobile:
- Nouveau mode terrain dans user_field_mode_page
- Interface utilisateur adaptative pour conditions difficiles
- Synchronisation offline améliorée

🗺️ Cartographie:
- Optimisation des performances MapBox
- Meilleure gestion des tuiles hors ligne
- Amélioration de l'affichage des secteurs

📄 Documentation:
- Ajout guide Android (ANDROID-GUIDE.md)
- Documentation sécurité API (API-SECURITY.md)
- Guide module chat (CHAT_MODULE.md)

🐛 Corrections:
- Résolution des erreurs 400 lors de la création d'utilisateurs
- Correction de la validation des noms d'utilisateurs
- Fix des problèmes de synchronisation chat

🤖 Generated with Claude Code (https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-08-19 19:38:03 +02:00
parent c1f23c4345
commit 5ab03751e1
1823 changed files with 272663 additions and 198438 deletions

View File

@@ -17,6 +17,7 @@ import 'package:geosector_app/core/data/models/passage_model.dart';
import 'package:geosector_app/core/data/models/membre_model.dart';
import 'package:geosector_app/presentation/widgets/loading_spin_overlay.dart';
import 'package:geosector_app/core/models/loading_state.dart';
import 'package:geosector_app/chat/services/chat_info_service.dart';
class UserRepository extends ChangeNotifier {
bool _isLoading = false;
@@ -276,7 +277,17 @@ class UserRepository extends ChangeNotifier {
}
}
// Étape 5: Traitement de toutes les autres données via DataLoadingService
// Étape 5: Traitement des infos chat
if (apiResult['chat'] != null) {
try {
ChatInfoService.instance.updateFromLogin(apiResult);
debugPrint('💬 Infos chat mises à jour');
} catch (chatError) {
debugPrint('⚠️ Erreur traitement infos chat: $chatError');
}
}
// Étape 6: Traitement de toutes les autres données via DataLoadingService
try {
await DataLoadingService.instance.processLoginData(apiResult);
} catch (processingError) {
@@ -316,6 +327,9 @@ class UserRepository extends ChangeNotifier {
// Effacer les données via les services singleton
await CurrentUserService.instance.clearUser();
await CurrentAmicaleService.instance.clearAmicale();
// Réinitialiser les infos chat
ChatInfoService.instance.reset();
// Nettoyage des données via HiveService (préserve les utilisateurs)
await HiveService.instance.cleanDataOnLogout();