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:
@@ -1106,11 +1106,97 @@ Cette architecture garantit une gestion des membres robuste, sécurisée et intu
|
||||
|
||||
## 🗺️ Cartes et géolocalisation
|
||||
|
||||
Flutter Map : Rendu cartographique haute performance
|
||||
Tuiles Mapbox : Cartographie détaillée et personnalisable
|
||||
Géolocalisation temps réel : Suivi GPS des équipes
|
||||
Secteurs géographiques : Visualisation et attribution dynamique
|
||||
Passages géolocalisés : Enregistrement précis des distributions
|
||||
### 🎯 Architecture cartographique
|
||||
|
||||
**Flutter Map** : Rendu cartographique haute performance
|
||||
**Providers de tuiles** : Solution hybride Mapbox/OpenStreetMap
|
||||
**Géolocalisation temps réel** : Suivi GPS des équipes
|
||||
**Secteurs géographiques** : Visualisation et attribution dynamique
|
||||
**Passages géolocalisés** : Enregistrement précis des distributions
|
||||
|
||||
### 🌍 Configuration des tuiles de carte
|
||||
|
||||
GEOSECTOR v2.0 utilise une **stratégie différenciée** pour l'affichage des tuiles de carte selon la plateforme :
|
||||
|
||||
#### **Configuration actuelle**
|
||||
|
||||
| Plateforme | Provider | URL Template | Raison |
|
||||
|------------|----------|--------------|---------|
|
||||
| **Web** | Mapbox | `https://api.mapbox.com/styles/v1/mapbox/streets-v11/tiles/` | Token compatible avec l'API styles |
|
||||
| **Mobile** | OpenStreetMap | `https://tile.openstreetmap.org/{z}/{x}/{y}.png` | Gratuit, sans restriction de token |
|
||||
|
||||
#### **Pourquoi cette approche ?**
|
||||
|
||||
1. **Problème de permissions Mapbox** : Les tokens Mapbox actuels (DEV/REC/PROD) n'ont pas les permissions pour l'API `styles/v1` qui retourne une erreur 403 sur mobile
|
||||
2. **Solution pragmatique** : OpenStreetMap fonctionne parfaitement sans token et offre une qualité de carte équivalente
|
||||
3. **Facilité de maintenance** : Pas besoin de gérer des tokens différents selon les environnements
|
||||
|
||||
### 💾 Système de cache des tuiles
|
||||
|
||||
Le cache fonctionne **pour les deux providers** (Mapbox et OpenStreetMap) :
|
||||
|
||||
#### **Configuration du cache**
|
||||
|
||||
```dart
|
||||
// Dans mapbox_map.dart
|
||||
CachedTileProvider(
|
||||
store: FileCacheStore(cachePath),
|
||||
maxStale: Duration(days: 30), // Tuiles valides 30 jours
|
||||
)
|
||||
```
|
||||
|
||||
#### **Caches séparés par provider**
|
||||
|
||||
- **Web (Mapbox)** : Cache dans `MapboxTileCache/`
|
||||
- **Mobile (OSM)** : Cache dans `OSMTileCache/`
|
||||
|
||||
#### **Avantages du cache**
|
||||
|
||||
✅ **Mode hors ligne** : Les zones visitées restent disponibles sans connexion
|
||||
✅ **Performance** : Chargement instantané des tuiles en cache
|
||||
✅ **Économie de données** : Pas de re-téléchargement inutile
|
||||
✅ **Fiabilité** : Fonctionne même avec une connexion instable
|
||||
|
||||
### 🔧 Widget MapboxMap centralisé
|
||||
|
||||
Le widget `MapboxMap` (`lib/presentation/widgets/mapbox_map.dart`) centralise toute la logique cartographique :
|
||||
|
||||
#### **Paramètres principaux**
|
||||
|
||||
```dart
|
||||
MapboxMap(
|
||||
initialPosition: LatLng(48.1173, -1.6778), // Rennes
|
||||
initialZoom: 13.0,
|
||||
markers: [...], // Marqueurs (passages, etc.)
|
||||
polygons: [...], // Polygones (secteurs)
|
||||
useOpenStreetMap: !kIsWeb, // OSM sur mobile, Mapbox sur web
|
||||
showControls: true, // Boutons zoom/localisation
|
||||
)
|
||||
```
|
||||
|
||||
#### **Utilisation dans l'application**
|
||||
|
||||
- **admin_map_page.dart** : Carte d'administration avec édition de secteurs
|
||||
- **user_map_page.dart** : Carte utilisateur avec visualisation des passages
|
||||
- **user_field_mode_page.dart** : Mode terrain avec GPS et boussole
|
||||
|
||||
### 🔄 Migration future vers Mapbox complet
|
||||
|
||||
Si vous obtenez un token Mapbox avec les permissions appropriées :
|
||||
|
||||
1. **Retirer le paramètre** `useOpenStreetMap: !kIsWeb` dans les pages
|
||||
2. **Le widget détectera automatiquement** et utilisera Mapbox partout
|
||||
3. **Le cache continuera de fonctionner** avec le nouveau provider
|
||||
|
||||
### 📱 Mode terrain (Field Mode)
|
||||
|
||||
Le mode terrain offre des fonctionnalités avancées pour les équipes sur le terrain :
|
||||
|
||||
- **Indicateurs GPS** : Qualité du signal (GPS/Réseau) avec actualisation 5s
|
||||
- **Mode boussole** : Orientation de la carte selon le magnétomètre
|
||||
- **Markers optimisés** : Affichage simplifié (première lettre de rueBis)
|
||||
- **Liste triée** : Passages organisés par distance
|
||||
- **Cercles de distance** : Visualisation des zones de proximité
|
||||
|
||||
## 🔄 Synchronisation et réactivité
|
||||
|
||||
|
||||
Reference in New Issue
Block a user