215 lines
10 KiB
Markdown
215 lines
10 KiB
Markdown
# 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 l’affichage des cartes et la gestion des secteurs (polygones) et des passages (markers)
|
||
- Fl_chart pour les graphiques
|
||
|
||
L’application sera accessible via l’url 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
|
||
L’API sera accessible via l’url https://app.geosector.fr/api/geo/…
|
||
Les requêtes authentifiées passeront par le PHP session_id.
|
||
|
||
L’application Flutter utilise des adresses tirées de la base nationale des adresses Open Data via l’API.
|
||
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.
|
||
|
||
L’application 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 l’interface 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 l’adresse 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 l’utilisateur 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 d’un 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 d’un client
|
||
|
||
## PAGE CARTE
|
||
|
||
- Visualiser ses secteurs d’activité 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 d’envoyer 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 l’utilisateur : super admin ou admin d’une amicale.
|
||
|
||
## ADMIN D’UNE AMICALE
|
||
|
||
8 pages
|
||
|
||
### PAGE PRINCIPALE
|
||
|
||
- Synthèse des passages par secteur et par utilisateur et le montant collecté sur l’opération en cours
|
||
- Graphique des passages réalisés par jour depuis deux semaines
|
||
|
||
### PAGE AMICALE
|
||
|
||
- Saisie des informations et options de l’amicale
|
||
- 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 l’amicale
|
||
- 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 d’activité 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 l’opération : couleur, titre, membres
|
||
- Tracer les secteurs sur une carte
|
||
- Affichage des passages en fonction de l’historique 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 l’opération au format Excel
|
||
- Exporter les données d’un membre
|
||
|
||
### PAGE STATISTIQUES
|
||
|
||
- Afficher des graphiques d’activité par secteur, par membre, et sur des périodes sélectionnées
|
||
|
||
## ADMIN GEOSECTOR
|
||
|
||
L’admin 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 d’une amicale en récupérant le formulaire de la page AMICALE
|
||
- Suppression d’une 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 d’envoyer 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.
|