Files
geo/docs/CDC.md
pierre 599b9fcda0 feat: Gestion des secteurs et migration v3.0.4+304
- Ajout système complet de gestion des secteurs avec contours géographiques
- Import des contours départementaux depuis GeoJSON
- API REST pour la gestion des secteurs (/api/sectors)
- Service de géolocalisation pour déterminer les secteurs
- Migration base de données avec tables x_departements_contours et sectors_adresses
- Interface Flutter pour visualisation et gestion des secteurs
- Ajout thème sombre dans l'application
- Corrections diverses et optimisations

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-07 11:01:45 +02:00

215 lines
10 KiB
Markdown
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# CAHIER DES CHARGES GEOSECTOR
Geosector est entièrement développé en Flutter
Il utilise les dépendances suivantes
- Hive pour le stockage des données sur mobile en cas déconnexion du réseau
- Stripe pour le paiement en ligne
- MapBox pour laffichage des cartes et la gestion des secteurs (polygones) et des passages (markers)
- Fl_chart pour les graphiques
Lapplication sera accessible via lurl https://app.geosector.fr
Elle utilisera une API FulRest modulaire développée en Full PHP8.3 et connectée à une base de données centrale MariaDB10.11
LAPI sera accessible via lurl https://app.geosector.fr/api/geo/…
Les requêtes authentifiées passeront par le PHP session_id.
Lapplication Flutter utilise des adresses tirées de la base nationale des adresses Open Data via lAPI.
Cette base adresses est importée chaque semaine par un script bash dans une base MariaDB
La base de données centrale geosector_app devra être initialisée et des scripts sql devront être créés pour importer les données d'une autre base avec une autre structure.
Lapplication Flutter GEOSECTOR se compose de trois parties : partie publique, partie admin et partie utilisateur.
# PARTIE PUBLIQUE
2 pages.
## PAGE PUBLIQUE
- Cette page présente la solution
- Elle donne un lien vers l'App Store et Play Store pour télécharger l'application mobile
- Elle présente des captures d'écran de l'application mobile et de l'interface administrateur.
- Elle donne un lien pour se connecter et suivant son e-mail et son mot de passe, on ira dans linterface admin ou utilisateur.
- Elle donne un lien pour s'inscrire et créer son amicale en tant que administrateur.
- Elle donne des statistiques de connexion sur l'admin et le mobile sur les 2 derniers mois et sur les 2 dernières années.
- Elle donne le nombre de clients inscrits et autres infos sur 3 cards
Au niveau du footer on a ladresse de Geosector avec le lien Facebook, les liens de cette page et le formulaire de contacts
- ne pas oublier les pages mentions légales et conditions d'utilisation.
Mettre aussi la modale pour la gestion des cookies
## LOGIN / REGISTER
- La connexion se fait par un username et un userpswd (mot de passe).
- Un lien "mot de passe oublié" permet de saisir son email pour récupérer un nouveau mot de passe.
- Un lien "s'inscrire" permet de saisir son e-mail, son nom et prénom, le nom de l'amicale, son code postal et sa commune pour recevoir un userame et un mot de passe par email.
# PARTIE UTILISATEUR
je voudrais commencer à voir l'interface UI de @user_dashboard_page.dart avec 5 pages qu'il faudra nommer user_xxx_page et qui contiendront des widgets communs à toute l'application.
Le design doit être soigné, clair, espacé, très lisible avec un jeu d'élévations et d'ombres et en tenant compte de @app_theme.dart
En version Web le menu se trouvera dans une SideBar à gauche avec des icones et le contenu à droite
En version mobile, le menu se trouvera en bas des pages avec les mêmes icones
## PAGE PRINCIPALE - Dashboard
- synthèse des passages de lutilisateur et le montant collecté par type de règlement (espèce, chèque, carte bancaire).
- graphique des passages réalisés par jour depuis deux semaines
- Bouton de création dun nouveau passage
## PAGE STATISTIQUES
- Graphiques au choix par jour, semaine, mois du nombre de passages et des sommes collectées
## PAGE HISTORIQUE
- Liste des passages par type, par date avec la possibilité de faire des recherches et de consulter le reçu au format PDF et les éventuelles erreurs détectées par retour d'email
## PAGE COMMUNICATION
- Permet de communiquer au sein de léquipe par chat
- Permet de répondre à un mail dun client
## PAGE CARTE
- Visualiser ses secteurs dactivité via MapBox
- Visualiser ces passages
- Sélectionner des passages près de sa position
- Cliquer sur un passage pour ouvrir le formulaire passage
- Cliquer sur la carte pour créer un passage à la position du clic
## FORMULAIRE PASSAGE
- Saisir les informations de passage et permettre de régler en ligne par carte bancaire via Stripe, et denvoyer par mail ou SMS, le reçu au format PDF.
Il faudrait créer des widgets communs :
1. pour la carte MapBox qui aura certaines fonctionnalités suivant le role du user
2. pour le formulaire de passage qui sera utilisé à plusieurs endroits dans l'appli
3. historique des passages : liste des passages avec des critères de filtres et de tri paramétrable suivant le rôle du user
4. Statistiques : 3 types de graphiques avec critères de sélection paramétrables suivant le rôle du user
# PARTIE ADMIN
En version Web, le menu se trouvera dans une Sidebar à gauche.
En version mobile, le menu se trouvera en bas des pages.
La partie admin est différente suivant le rôle de lutilisateur : super admin ou admin dune amicale.
## ADMIN DUNE AMICALE
8 pages
### PAGE PRINCIPALE
- Synthèse des passages par secteur et par utilisateur et le montant collecté sur lopération en cours
- Graphique des passages réalisés par jour depuis deux semaines
### PAGE AMICALE
- Saisie des informations et options de lamicale
- Upload du logo
- Gestion des abonnements avec paiement en ligne STRIPE en fonction du nombre de calendriers distribués.
- Gestion des SMS avec paiement en ligne STRIPE de pack de 200 à 2000 SMS.
### PAGE MEMBRES
- Gérer les membres de lamicale
- Upload des badges des membres
- Demande de réinitialisation de mot de passe
- Importer/Exporter une liste de membres
### PAGE COMMUNICATION
- Communiquer par chat au sein de léquipe et auprès de Geosector
### PAGE CONNEXIONS
- Consulter les dernières connexions de léquipe des 15 derniers jours
- Graphique des connexions sur 5 mois glissants
### PAGE CARTE
- Voir les secteurs dactivité et les passages avec des filtres sur des secteurs ou des utilisateurs
### PAGE OPERATIONS
- Gérer ses opérations et opération active présélectionnée
- Gérer les secteurs de lopération : couleur, titre, membres
- Tracer les secteurs sur une carte
- Affichage des passages en fonction de lhistorique et des adresses récupérées de la base adresses
- Affichage de la liste des membres actifs avec leurs données de stats par type de passage
- Exporter les données de lopération au format Excel
- Exporter les données dun membre
### PAGE STATISTIQUES
- Afficher des graphiques dactivité par secteur, par membre, et sur des périodes sélectionnées
## ADMIN GEOSECTOR
Ladmin des super administrateurs GEOSECTOR a 1 page en plus
### PAGE CLIENTS
- Affiche la liste des amicales créées actives ou en démo avec une recherche sur le nom de l'amicale, un code postal, une commune, un nom de membre
- gestion des amicales en mode démo (inscription en ligne)
- Création dune amicale en récupérant le formulaire de la page AMICALE
- Suppression dune amicale
- Consulter le nombre de membres, de passages réalisés sur la dernière opération de chaque amicale
- Gérer les secteurs de son opération avec possibilité de suppression ou de restauration
- Gérer les opérations avec possibilité de suppression, création
- Gérer les abonnements en fonction du nombre de passages réalisés et denvoyer par mail une facture au format PDF
# WIDGETS COMMUNS
Des widgets communs doivent être développés pour être utilisés dans plusieurs pages et être appelés avec des paramètres.
- Widget Formulaire de passage
- Widget Carte avec des actions sur les markers (ajout, modification, suppression) et sur les secteurs (ajout, modification, suppression) suivant le rôle de l'utilisateur
- Widget Graphiques de connexions suivant le rôle Admin ou Super Admin
- Widget Graphiques de statistiques de passages d'un membre
- Widget Graphiques de statistiques d'un secteur
- Widget Graphiques de statistiques d'une opération
- Widget Formulaire d'une amicale
- Widget Formulaire d'un membre
- Widget Formulaire d'une opération
- Widget Formulaire d'un secteur
# CHIFFREMENT
Chaque mot de passe doit être chiffré avec l'algorithme Argon2
Des données sensibles seront à chiffer avec l'algorithme AES-256 dans la base de données. Ces champs seront nommées avec le préfixe `encrypted_`
Le chiffrement sera utilisé avec IV identique pour les emails, les adresses car elles sont utilisées dans les recherches.
# EMAILS
Les emails seront envoyés via l'API vers le serveur SMTP de geosector.fr avec les adresses noreply et contact@geosector.fr
Une gestion de queue des emails sera développée par l'API pour éviter d'envoyer trop d'emails par heure (limite 1500 emails/heure).
Un script externe en PHP sera développé pour nettoyer la queue et envoyer les emails stockés en base de données.
Un script externe en PHP sera développé pour contrôler les éventuels retours d'emails non réceptionnés (erreur email) et qui renverra l'information d'erreur dans la table ope_pass des passages pour que l'utilisateur soit alerté et qu'il puisse mettre à jour l'email et effectuer un renvoi du reçu au format PDF.
# SMS
Un SMS peut être envoyé sur un passage à l'habitant pour lui confirmer le passage et la somme collectée.
Seules les amicales qui ont accepté cette fonctionnalité dans l'interface admin pourront envoyer des SMS.
Les SMS seront envoyés via l'API et via le serveur SMS OVH.
Une gestion de règlement sera développée pour que l'amicale puisse régler le paiement des SMS envoyés, par pack de 200, 500, 1000, 2000 SMS.
# BASES DE DONNEES EXTERNES OPEN DATA
Des scripts PHP au niveau de l'API seront développés pour importer hebdomadairement la base ADRESSES Open Data.
Ces données seront stockées dans une base de données centrale MariaDB.
Des scripts PHP au niveau de l'API seront développés pour importer hebdomadairement la base SIRENE Open Data.
Ces données seront stockées dans une base de données centrale MariaDB.
Des scripts PHP au niveau de l'API seront développés pour importer hebdomadairement la base BATIMENTS Open Data.
Ces données seront stockées dans une base de données centrale MariaDB.
Des scripts PHP au niveau de l'API seront développés pour importer hebdomadairement la base OpenStreetMap Open Data.
Ces données seront stockées dans une base de données centrale MariaDB.
Des points d'entrées de l'API seront développés pour récupérer les données des bases externes à destination de GEOSECTOR.