Initialisation du projet geosector complet (web + flutter)
This commit is contained in:
214
docs/CDC.md
Normal file
214
docs/CDC.md
Normal file
@@ -0,0 +1,214 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user