# TODO GEOSECTOR - Application Flutter

## 📋 Tâches à effectuer

---

## 🔥 RÉUNION CLIENT - 27/10/2025

### 🔴 Bugs critiques iOS

- [x] **iOS - Enregistrement passage bloqué** - Le clavier numérique du montant bloque l'enregistrement d'un passage

### 🔴 Bugs critiques Web

- [ ] **Bug F5** - Corriger la déconnexion lors du rafraîchissement de la page (F5) ⚠️
- [ ] **Nouveau membre non synchronisé** - Un nouveau membre ne se retrouve pas dans l'opération active
- [ ] **Création membre impossible** - Ne peut pas créer un membre
- [ ] **Création opération impossible** - Ne peut pas créer une nouvelle opération : erreur !
- [ ] **Mot de passe non enregistré** - N'enregistre pas le mot de passe
- [ ] **Export opération cassé** - Export de l'opération ne fonctionne plus
- [ ] **Reçus PDF non fonctionnels** - Reçus PDF ne fonctionnent pas

### 🔴 Bugs critiques généraux

- [ ] **Enregistrement des passages** - L'enregistrement d'un nouveau passage ne fonctionne pas correctement
- [ ] **Création membre en double** - Bloquer l'enregistrement à 1 seul (plusieurs clics créent X membres en double)
- [ ] **Requêtes en attente dupliquées** - Finaliser modifs sur les requêtes en attente : traitements effectués plusieurs fois !!
- [ ] **Synchronisation bases de données** - Synchroniser les 2 bases rca_geo et pra_geo !

### 📝 Formulaires - UX critique

- [ ] **Bloquer boutons submit** - Dans toutes les forms bloquer le clic du bouton enregistrer dès qu'il est cliqué
- [ ] **Ajouter spinner** - Mettre un spin pendant le traitement
- [ ] **Messages clairs 3s** - Revoir les messages pour afficher clairement le message sur 3s

### 👥 Gestion des membres

- [ ] **Trier liste membres** - Page amicale admin pouvoir trier la liste des membres
- [ ] **Membres affectés en 1er** - Modif secteur : mettre les membres affectés en 1er
- [ ] **Figer membres dans combobox** - Figer Tous les membres dans la liste de la combobox ?
- [ ] **Autocomplete combobox membres** - Faire un autocomplete pour la combobox de membres
- [ ] Ajouter des filtres sur la liste des membres dans "Amicale et membres"
- [ ] Afficher les membres sélectionnés en haut de liste lors de modifications
- [ ] Permettre la modification de l'identifiant utilisateur
- [ ] Email non obligatoire si identifiant et mot de passe sont saisis manuellement
- [ ] Améliorer les textes d'aide (helpers) dans les fiches membres

### 📊 Historique

- [ ] **Onglets types de passage** - Ecran historique pour utilisateur : remettre des onglets pour les types de passage (comme ancienne version)
- [ ] **Suppression lot de passages** - Sur Historique : liste des passages pouvoir supprimer tout un lot de passages
- [ ] Historique en bas : 1-2 adresses seulement visibles, impossibilité de cliquer dessus

### 🏠 Page Home

- [ ] **Home - Filtres et graphes** - Ecran home : mettre les filtres et les graphes
- [ ] **Home - Figer headers tableau** - Sur Home : figer l'écran aux headers du tableau
- [ ] **Home - Bouton export données** - Home_page : mettre le bouton exporter les données
- [ ] **Home - Export par membre** - Ajouter un export par membre

### 🗺️ Carte et géolocalisation

- [ ] **Secteur sans membre** - Map : secteur peut être créé sans membre
- [ ] **Modifier secteur au clic** - Clic sur un secteur pour modifier sa couleur et les affectations
- [ ] **Déplacer markers** - Carte pouvoir déplacer un marker en double-cliquant sur le marker pour le déplacer
- [x] **Immeubles groupés** - Un seul point sur la carte carré avec le nombre d'appartements et cliquer dessus pour avoir la liste des appartements/passages avec la même adresse par niveau
- [ ] **Couleur markers à finaliser** - Sur la version actuelle : changer la couleur des markers de type passage à finaliser comme nouvelle version
- [ ] Définir un zoom maximal pour éviter le sur-zoom
- [ ] Étudier l'utilisation d'un style de carte type Snapchat
- [ ] Optimiser la précision et la fiabilité du GPS en mode terrain
- [ ] Mode Web utilisateur : impossible de se déplacer sur la carte en mode terrain (retour automatique à la position)
- [ ] Mode terrain smartphone : carte trop petite, le zoom revient automatiquement
- [ ] Points de carte affichés devant les textes (z-index)
- [ ] Listing des rues invisible (le clavier se met devant)
- [ ] Recherche de rue : ne trouve pas si pas à proximité même si la rue est dans le secteur
- [ ] Carte en mode utilisateur : évaluer la possibilité de valider un passage directement depuis la carte

#### ⚡ Performance map_page.dart

- [x] **Analyse surcharge CPU** - Ventilation importante du PC lorsque la page carte reste affichée sans interaction
  - **Sources identifiées et corrigées** :
    - ✅ **ActivityChart** : Suppression des debugPrint massifs (passages type 2 sans date)
    - ✅ **ValueListenableBuilder boucle infinie** : addPostFrameCallback + setState en boucle
      - Solution : Ajout méthode `_arePassagesEqual()` pour comparer avant setState
      - Ne déclenche setState QUE si les IDs de passages ont changé
    - ✅ **Logs de debug** : Ajout de traces 🔄 pour identifier les appels en boucle
  - **Résultat** :
    - Plus de boucle infinie de rebuilds
    - Mise à jour unitaire des markers conservée (réactivité OK)
    - Performance Web desktop restaurée
  - **Fichiers modifiés** :
    - `lib/presentation/widgets/charts/activity_chart.dart` (ligne 272-276)
    - `lib/presentation/pages/map_page.dart` (lignes 405, 416-425)
  - Statut : ✅ Résolu
  - Date : 08/11/2025

### 📋 Gestion des passages

- [ ] **Corbeille passages** - Pouvoir sauvegarder les passages supprimés pour pouvoir les représenter à l'admin, et si modif passages pouvoir chercher toutes les adresses et ensuite supprimer ces passages supprimés sauvegardés
- [ ] Désactiver temporairement l'envoi de reçu (ne doit pas encore être actif)
- [ ] Permettre la suppression de plusieurs passages en une seule fois
- [ ] Implémenter la possibilité de récupérer des passages supprimés (corbeille/historique)
- [ ] Corriger l'affichage du règlement par chèque qui n'apparaît pas dans le graphe pie

### 📈 Graphiques et statistiques

- [ ] **Graphique règlements par secteur** - Graphique de répartition des règlements par secteur
- [ ] **Comparatif année précédente** - Connexions : créer un comparatif année précédente

### 🔧 Opérations

- [ ] **Bloquer création opération** - Sur operations+ bloquer la création d'une opération une seule fois
- [ ] **Renommer operations+** - Renommer operations+ par "opérations"

### 💬 Module de messagerie / Chat

- [ ] **Revoir chat complet** - Le chat à revoir côté admin et utilisateur
- [ ] Améliorer la visibilité du bouton "Envoyer un message"
- [ ] Augmenter l'épaisseur de la police pour une meilleure lisibilité

### 🔐 Authentification et sécurité

- [ ] **Reconnaissance biométrique** - Authentification par Face ID / Touch ID / Empreinte digitale
  - [ ] Ajouter packages `local_auth` et `flutter_secure_storage`
  - [ ] Créer service `BiometricAuthService` pour gérer l'authentification
  - [ ] Stocker credentials de manière sécurisée (Keychain iOS / Keystore Android)
  - [ ] Ajouter option "Activer connexion biométrique" dans les paramètres utilisateur
  - [ ] Vérifier disponibilité biométrique au démarrage (canCheckBiometrics)
  - [ ] Implémenter fallback mot de passe si échec biométrique
  - [ ] Ajouter toggle dans écran de connexion pour activer/désactiver
  - [ ] Tester sur iOS (Face ID + Touch ID) et Android (Empreinte)
  - Temps estimé : 1-2 jours
  - Priorité : Moyenne (confort utilisateur mobile)

### 🏗️ Architecture et refactoring

- [ ] Simplifier l'architecture DashboardLayout et AppScaffold (actuellement redondants)
- [ ] Refactoriser pour séparer clairement les responsabilités (fond, navigation, restrictions d'accès)

### 🔐 Restrictions d'accès

- [ ] L'accès administrateur doit être limité au web uniquement (pas sur mobile)
- [ ] Permettre à un utilisateur de choisir son rôle (admin/membre) à la connexion
- [ ] Un admin (fkRole==2) doit pouvoir se connecter en tant qu'utilisateur également

### 👑 Mode Super Admin

- [ ] **FAQ gérée depuis Super-Admin** - FAQ dans le site Web gérée depuis l'application web Super-Admin
- [ ] Corriger le ralentissement après 3 suppressions d'amicales consécutives
- [ ] Optimiser le processus de purge des données
- [ ] Ajouter des filtres sur la liste des amicales
- [ ] Implémenter un mode démo pour les présentations
- [ ] Distinguer visuellement les amicales actives (ayant réglé) des autres
- [ ] Si suppression de l'opération active, réactiver automatiquement l'opération précédente

### 🏢 Gestion Clients

- [ ] **Ecran Clients** - Ecran Clients à créer/améliorer
- [ ] **Page clients paiements en ligne** - Page clients avec paiements en ligne

### 📧 Processus d'inscription

- [ ] Envoyer 2 emails séparés lors de l'inscription (Email 1: identifiant, Email 2: mot de passe)

### 💳 Stripe

- [ ] **Double configuration Stripe** - Configuration Stripe : 2x configuration Stripe
- [ ] Intégrer la gestion du paiement en ligne directement dans le formulaire de passage
- [ ] Détection automatique du statut Stripe de l'amicale
- [ ] Option "Paiement par carte" dans les modes de règlement
- [ ] Interface de paiement sécurisée intégrée
- [ ] Génération automatique du reçu après paiement
- [ ] Étudier les possibilités de paiement Stripe en mode hors ligne
- [ ] Mettre en place un environnement de test pour Tap to Pay
- [ ] Documenter la procédure de test pour Tap to Pay
- [ ] Vérifier la compatibilité des appareils de test disponibles
- [x] **Paiement par QRcode (Option 1 - Payment Links)** ⭐⭐
  - [x] Ajouter package `qr_flutter` au `pubspec.yaml`
  - [x] Créer endpoint backend `/api/stripe/payment-links`
  - [x] Créer widget Flutter `QRCodePaymentDialog` avec génération QR
  - [x] Créer widget `PaymentMethodSelectionDialog` pour choisir QRcode ou Tap to Pay
  - [x] Ajouter champs `stripe_payment_link_id` et `stripe_payment_link_url` dans passages (Flutter)
  - [x] Icône QR code cliquable dans la liste des passages pour ré-afficher le QR
  - [x] Sauvegarde automatique de l'URL du Payment Link après création
  - [ ] **Backend SQL** : Ajouter `stripe_payment_link_url` VARCHAR(255) dans table `ope_pass`
  - [ ] Implémenter webhook backend pour confirmation paiement et update passage
  - [ ] Tests complets sur Web et Mobile (Android/iOS)
  - Temps total : 1 jour (frontend complet, backend SQL + webhook reste à faire)

### 🚀 Déploiement et migration

- [x] **Migrer Poissy en Prod** - Migrer Poissy sur la Prod

### 🧪 Tests

- [ ] **Tests multi-départements** - Tests sur secteurs sur 2 départements

### 🌍 Internationalization

- [ ] **Devises multiples** - Devises doubles à gérer pour le Franc Suisse

### 📡 Fonctionnalités futures prioritaires

- [ ] **MQTT temps réel** - MQTT pour le chat et les updates d'infos vers l'admin et les utilisateurs ⭐⭐⭐
- [ ] **SMS impératif** - SMS à mettre en place impérativement ! ⭐⭐⭐

---

_Dernière mise à jour : 27 octobre 2025 - Réunion client intégrée_
