Files
geo/app/docs/TODO-APP.md
pierre 2f5946a184 feat: Version 3.5.2 - Configuration Stripe et gestion des immeubles
- Configuration complète Stripe pour les 3 environnements (DEV/REC/PROD)
  * DEV: Clés TEST Pierre (mode test)
  * REC: Clés TEST Client (mode test)
  * PROD: Clés LIVE Client (mode live)
- Ajout de la gestion des bases de données immeubles/bâtiments
  * Configuration buildings_database pour DEV/REC/PROD
  * Service BuildingService pour enrichissement des adresses
- Optimisations pages et améliorations ergonomie
- Mises à jour des dépendances Composer
- Nettoyage des fichiers obsolètes

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09 18:26:27 +01:00

11 KiB

TODO GEOSECTOR - Application Flutter

📋 Tâches à effectuer


🔥 RÉUNION CLIENT - 27/10/2025

🔴 Bugs critiques iOS

  • 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
  • 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

  • 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
  • Paiement par QRcode (Option 1 - Payment Links)
    • Ajouter package qr_flutter au pubspec.yaml
    • Créer endpoint backend /api/stripe/payment-links
    • Créer widget Flutter QRCodePaymentDialog avec génération QR
    • Créer widget PaymentMethodSelectionDialog pour choisir QRcode ou Tap to Pay
    • Ajouter champs stripe_payment_link_id et stripe_payment_link_url dans passages (Flutter)
    • Icône QR code cliquable dans la liste des passages pour ré-afficher le QR
    • 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

  • 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