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

@@ -0,0 +1,118 @@
/// Exemple d'utilisation du module chat
///
/// Ce fichier montre comment intégrer le module chat dans votre application
import 'package:flutter/material.dart';
import 'chat_module.dart';
class ExampleApp extends StatelessWidget {
const ExampleApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Chat Module Example',
home: const HomePage(),
);
}
}
class HomePage extends StatefulWidget {
const HomePage({super.key});
@override
State<HomePage> createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
bool _isInitialized = false;
@override
void initState() {
super.initState();
_initChat();
}
Future<void> _initChat() async {
// Initialiser le module chat avec vos paramètres et rôle
await ChatModule.init(
apiUrl: 'https://api.votre-domaine.com',
userId: 123, // ID de l'utilisateur connecté
userName: 'Jean Dupont', // Nom de l'utilisateur
userRole: 2, // Rôle: 1=membre, 2=admin amicale, 9=superadmin
userEntite: 5, // ID de l'amicale/entité (optionnel)
authToken: 'votre-token-jwt', // Token d'authentification (optionnel)
);
setState(() => _isInitialized = true);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Application Example'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
const Text('Bienvenue dans votre application'),
const SizedBox(height: 20),
if (_isInitialized)
ElevatedButton(
onPressed: () {
// Ouvrir le chat
ChatModule.openChat(context);
},
child: const Text('Ouvrir le Chat'),
)
else
const CircularProgressIndicator(),
],
),
),
);
}
@override
void dispose() {
// Nettoyer les ressources du chat
ChatModule.dispose();
super.dispose();
}
}
/// Comment l'utiliser dans votre application :
///
/// 1. Copier le dossier lib/chat dans votre projet
///
/// 2. Ajouter les dépendances dans pubspec.yaml :
/// dependencies:
/// dio: ^5.4.0
/// hive: ^2.2.3
/// hive_flutter: ^1.1.0
/// dev_dependencies:
/// hive_generator: ^2.0.1
/// build_runner: ^2.4.8
///
/// 3. Initialiser le module au démarrage :
/// await ChatModule.init(
/// apiUrl: 'https://votre-api.com',
/// userId: currentUserId,
/// userName: currentUserName,
/// userRole: currentUserRole, // 1, 2 ou 9
/// userEntite: currentUserEntite, // ID amicale
/// authToken: authToken,
/// );
///
/// 4. Ouvrir le chat depuis n'importe où :
/// ChatModule.openChat(context);
///
/// 5. Ou naviguer directement vers une conversation :
/// Navigator.push(
/// context,
/// MaterialPageRoute(
/// builder: (_) => ChatModule.getChatPage(roomId, roomTitle),
/// ),
/// );