DataGold Documentation
- Author:
Jean-Marc
- Version:
1.0
- License:
Creative Commons
Introduction
Cette documentation met en avant les élements les plus importants pour installer et configurer l’application DataGold. Le projet vise à fournir une solution permettant aux utilisateurs de visualiser sous forme graphiques les données collectées lors des passages en caisse des clients de GoldenLine. La solution est composée d’une application front end et d’un back end reservé aux administrateurs.
Technologies
Python
Django rest
Bootstrap
Chart JS
CSS
HMTL
PostgreSQL
Architecture du Projet
Le projet suit une architecture modèle-vue-contrôleur (MVC), avec les composants suivants :
Modèles de Données : Définissent la structure de la base de données pour les utilisateurs.
Vues : Gèrent la logique métier et l’interaction avec les utilisateurs.
Contrôleurs : Traite les requêtes HTTP et appelle les vues appropriées.
Templates HTML : Fournissent l’interface utilisateur pour interagir avec le système.
Le Framework Django est le socle utilisé dans le cadre de la réalisation de cette solution.
- L’application front office est composée de deux app Django :
authentication pour la gestion des acces au portail front end.
datagold pour le traitement et la restitution sous forme de graphiques dynamiques
Le back end est celui fourni par le Framework Django (Django admin)
Le projet suit une architecture modèle-vue-contrôleur (MVC) typique pour les applications web Django.
Voici une vue d’ensemble de la structure du projet :
**goldenlineProject**
**goldenlineProject/**_____# "Dossier racine du projet Django"
| +-- __init__.py
| +-- settings.py_________# "Configuration du projet"
| +-- urls.py_____________# "Routage des URL du projet"
| +-- wsgi.py_____________# "Point d'entrée WSGI pour les serveurs web"
**authentication/**_______# "Application pour la page d'autentification des utilisateurs"
| +-- migrations/_________# "Fichiers de migration de la base de données"
|
| +-- __init__.py
| +-- admin.py____________# "Configuration de l'interface d'administration"
| +-- apps.py_____________# "Configuration de l'application"
| +-- forms.py____________# "Modèles de formulaire"
| +-- models.py___________# "Modèles de données"
| +-- tests.py____________# "Tests unitaires"
| +-- urls.py_____________# "Routage des URL de l'application"
| +-- views.py____________# "Logique des vues"
**datagold/**_______# "Application de traitement et de visualisation des donnees"
| +-- migrations/_________# "Fichiers de migration de la base de données"
| +-- templates/__________# "Modèles HTML pour les vues"
| +-- __init__.py
| +-- admin.py____________# "Configuration de l'interface d'administration"
| +-- apps.py_____________# "Configuration de l'application"
| +-- forms.py____________# "Modèles de formulaire"
| +-- models.py___________# "Modèles de données"
| +-- tests.py____________# "Tests unitaires"
| +-- urls.py_____________# "Routage des URL de l'application"
| +-- views.py____________# "Logique des vues"
**manage.py**________________________# "Script de gestion du projet Django"
**templates/**__________# "Modèles HTML pour les vues"
**statics/**__________# "Ressources staétiques"
Modèle Conceptuel de Données (MCD) simplifié pour le module DataGold (traitement et visualisation des données) :
Entités :
- Client
Attributs : Prénom, Nom, Mail, Nombre d’enfants, Ville, Classe socio-professionnelle Clé primaire : Identifiant client (généré automatiquement)
- Collecte de Données
Attributs : Identifiant collecte Clé primaire : Identifiant collecte (généré automatiquement) Clé étrangère : Identifiant client (lien vers le client)
Associations :
Client-Collecte de Données :
Relation : Chaque client peut être associé à plusieurs collectes de données.
Cardinalité : Client (1) — Collecte de Données (0..N)
Pre requis (installation)
OS : Ubuntu Server 20.04 LTS (ou version ulterieure)
RAM : 8 Go minimum
Disque : 50 Go minimum
Processeurs : 2 minimum
Base : PostgreSQL 14
Creation de la base de donnees
Pour utiliser l’application DataGold, vous devez d’abord créer une base de données et un utilisateur. Suivez les étapes ci-dessous pour effectuer cette configuration :
Creation de la base de donnees :
Connectez-vous à PostgreSQL en tant qu’administrateur.
Utilisez la commande SQL appropriée pour créer la base de données.
CREATE DATABASE datagold;
Création de l’utilisateur :
Créez l’utilisateur « datapro » et accordez-lui les privilèges appropriés.
CREATE USER 'datapro'@'localhost' IDENTIFIED BY 'mot_de_passe';
GRANT ALL PRIVILEGES ON datagold.* TO 'datapro'@'localhost';
FLUSH PRIVILEGES;
Remplacer ``'mot_de_passe'`` par un mot de passe sécurisé de votre choix.
Une fois ces étapes effectuées, vous pouvez configurer votre application DataGold pour qu’elle utilise cette base de données et cet utilisateur lors de son fonctionnement. Les paramètres de la base de données peuvent etre modifiés dans « goldenlineProject/settings.py » => DATABASES…
Installation du Projet
Cloner le dépôt :
git clone https://github.com/Epsillot/datagold_project
Aller dans le dossier goldenligneProject puis activez virtualenv :
Création de l’environnement virtuel :
virtualenv venv
Activation de venv :
source venv/bin/activate
Installer les dépendances Python :
pip install -r requirements.txt
Effectuer les migrations de la base de données :
python manage.py migrate
Lancer le serveur de développement :
python manage.py runserver
Developpement
Detail module d’autentificatioin
- authentication.views.custom_page_not_found(request, exception)
Renvoie une page d’erreur 404 personnalisée.
- Args:
request: L’objet HttpRequest. exception: L’exception qui a déclenché l’erreur.
- Returns:
Un objet HttpResponse avec le contenu de la page d’erreur 404.
- authentication.views.custom_server_error(request)
Renvoie une page d’erreur 500 personnalisée.
- Args:
request: L’objet HttpRequest.
- Returns:
Un objet HttpResponse avec le contenu de la page d’erreur 500.
- authentication.views.login_page(request)
Affiche et gère la page de connexion.
- Args:
request: L’objet HttpRequest.
- Returns:
Un objet HttpResponse avec le contenu de la page de connexion.
- authentication.views.logout_user(request)
Déconnecte l’utilisateur et redirige vers la page de connexion.
- Args:
request: L’objet HttpRequest.
- Returns:
Un objet HttpResponseRedirect redirigeant vers la page de connexion.
Detail module datagold
- class datagold.models.Client(*args, **kwargs)
Modèle pour les clients.
Ce modèle représente un client avec des informations telles que le client anonyme, le nombre d’enfants, la catégorie socio-professionnelle, le prix du panier du client, la date et la collecte d’achat.
- Attributes:
client_anonym (CharField): Le nom anonyme du client. nombre_enfants (IntegerField): Le nombre d’enfants du client. categorie_socioprofessionnelle (CharField): La catégorie socio-professionnelle du client. prix_panier_client (DecimalField): Le prix du panier du client. date (DateField): La date de la transaction. collecte_achat (IntegerField): La quantité d’articles achetés lors de la collecte.
- exception DoesNotExist
- exception MultipleObjectsReturned
- class datagold.models.Collecte(*args, **kwargs)
Modèle pour la collecte d’articles.
Ce modèle représente une collecte d’articles avec des informations telles que la quantité collectée, la catégorie d’article et le prix de l’article.
- Attributes:
collecte (IntegerField): La quantité collectée. categorie_article (CharField): La catégorie de l’article. prix_article (DecimalField): Le prix de l’article.
- exception DoesNotExist
- exception MultipleObjectsReturned
- datagold.views.Accueil(request)
Vue pour la page d’accueil.
Cette vue récupère les données JSON de l’API PanierSocioProAPIView et les utilise pour générer un graphique pour la page d’accueil.
- Args:
request: L’objet HttpRequest.
- Returns:
Un objet HttpResponse avec le contenu de la page d’accueil.
- class datagold.views.ClientAPIView(**kwargs)
Vue API pour récupérer les clients.
Cette vue permet de récupérer tous les clients de la base de données et de les sérialiser en JSON.
- Attributes:
permission_classes (list): Les classes de permission requises pour accéder à cette API.
- get(*args, **kwargs)
Méthode pour la gestion des requêtes GET.
- Returns:
Un objet Response contenant les données JSON des clients.
- class datagold.views.CollecteAPIView(**kwargs)
Vue API pour exporter les données de collecte au format CSV.
Cette vue permet de récupérer les données de collecte de la base de données et de les exporter au format CSV.
- Attributes:
permission_classes (list): Les classes de permission requises pour accéder à cette API.
- get(request)
Méthode pour la gestion des requêtes GET.
- Args:
request: L’objet HttpRequest.
- Returns:
Un objet HttpResponse avec les données de collecte exportées au format CSV.
- class datagold.views.DepenseMoyennePanierAPIView(**kwargs)
Vue API pour calculer la dépense moyenne par panier par catégorie socio-professionnelle.
Cette vue permet de récupérer les données de transaction des clients, de les traiter à l’aide de Pandas et de renvoyer le résultat au format JSON.
- Attributes:
permission_classes (list): Les classes de permission requises pour accéder à cette API.
- get(*args, **kwargs)
Méthode pour la gestion des requêtes GET.
- Returns:
Un objet Response contenant les données JSON de la dépense moyenne par panier par catégorie socio-professionnelle.
- datagold.views.Moyenne(request)
Vue pour la page de la moyenne.
Cette vue récupère les données JSON de l’API DepenseMoyennePanierAPIView et les utilise pour générer un graphique pour la page de la moyenne.
- Args:
request: L’objet HttpRequest.
- Returns:
Un objet JsonResponse avec les données JSON de la page de la moyenne.
- class datagold.views.PanierSocioProAPIView(**kwargs)
Vue API pour calculer le prix moyen du panier par catégorie socio-professionnelle.
Cette vue permet de récupérer les données de transaction des clients, de les traiter à l’aide de Pandas et de renvoyer le résultat au format JSON.
- Attributes:
permission_classes (list): Les classes de permission requises pour accéder à cette API.
- get(*args, **kwargs)
Méthode pour la gestion des requêtes GET.
- Returns:
Un objet Response contenant les données JSON du prix moyen du panier par catégorie socio-professionnelle.
- datagold.views.custom_page_not_found(request, exception)
Renvoie une page d’erreur 404 personnalisée.
- Args:
request: L’objet HttpRequest. exception: L’exception qui a déclenché l’erreur.
- Returns:
Un objet HttpResponse avec le contenu de la page d’erreur 404.
- datagold.views.custom_server_error(request)
Renvoie une page d’erreur 500 personnalisée.
- Args:
request: L’objet HttpRequest.
- Returns:
Un objet HttpResponse avec le contenu de la page d’erreur 500.
Securité
Accès aux Données
L’accès est contrôlé par un mécanisme d’authentification, avec vérification des identifiants de connexion. Seuls les membres autorisés de l’équipe marketing peuvent accéder à l’application, et ils doivent s’authentifier avec succès avec leurs identifiant et mot de passe.
Protection des Données Clients
Les données personnelles des clients, telles que les noms, les adresses e-mail et les achats, sont sécurisées en les anonymisant conformément aux réglementations sur la protection des données (telles que le RGPD). Les accès à ces données seront strictement contrôlés et limités aux seuls utilisateurs autorisés qui en ont besoin pour effectuer leur travail.
Communication Sécurisée
Toutes les communications entre le frontend et le backend de l’application seront sécurisées à l’aide de protocoles de chiffrement tels que HTTPS (HTTP sécurisé) pour garantir la confidentialité et l’intégrité des données échangées.
Sécurité des Données
Les données seront stockées de manière sécurisée dans des bases de données sécurisées, avec des mécanismes de sauvegarde et de récupération en place pour protéger contre la perte de données. Des contrôles d’accès basés sur les rôles seront utilisés pour limiter l’accès aux données sensibles.
Sécurité des Sessions
Si l’application nécessite la gestion des sessions utilisateur, des mécanismes de gestion des sessions sécurisés seront mis en place pour protéger contre les attaques de session et garantir l’authenticité des utilisateurs.
Gestion des Erreurs
Les erreurs de l’application seront gérées de manière sécurisée pour éviter les fuites d’informations sensibles. Les messages d’erreur génériques seront utilisés pour ne pas divulguer d’informations sensibles sur le système.
Tests
Tests unitaires
Une suite de tests unitaires, a été créé pour différentes parties de l’application, notamment les modèles, les vues et les formulaires.
Modèles
Ces tests vérifient la création, la modification, et la suppression des objets, ainsi que les relations entre les différents modèles.
Vues
Ces tests vérifient le renvoi des bonnes réponses en fonction des requêtes HTTP reçues, pour les fonctionnalités telles que l’affichage des données, la création d’objets, la mise à jour et la suppression.
Formulaires
testés pour valider les données entrées par l’utilisateur. Vérifient que les formulaires acceptent les données valides et rejettent les données invalides, en fonction des contraintes définies dans les modèles.
Couverture de code
L’outil Pytest permet de lancer les tests unitaires et de mesurer la couverture de code testé.
Deploiement
Environnement de production
Cet environnement doit disposer de ressources robustes et sécurisées pour garantir la disponibilité et la fiabilité de l’application.
Infrastructure
L’infrastructure de déploiement doit être basée sur des serveurs cloud sécurisés, avec des mécanismes de redondance et de sauvegarde pour assurer la disponibilité continue de l’application.
Maintenance
La maintenance de l’application DataGold est un processus continu visant à garantir sa fiabilité, sa sécurité et sa performance tout au long de son cycle de vie.
Evolution future
Voici quelques axes d’évolution envisagé :
Amélioration de l’expérience utilisateur
Amélioration de l’interface utilisateur et en ajoutant de nouvelles fonctionnalités qui répondent aux besoins de nos utilisateurs.
Ajout d’options de personnalisation pour permettre aux utilisateurs d’adapter l’application à leurs besoins spécifiques. Par exemple leur offir la possibilité de configurer des paramètres d’affichages ou le choix des graphiques, de personnaliser les préférences utilisateur et d’ajuster l’interface pour une meilleure adaptabilité.
Intégration avec d’autres systèmes telque des plateformes de messagerie, des outils de productivité et d’autres applications tierces.
Utilisation des technologies d’intelligence artificielle et d’apprentissage automatique pour offrir des fonctionnalités avancées telles que la la prédiction des tendences d’achat client et l’automatisation des tâches répétitives.
Optimisation des performances et évolution de l’application pour garantir qu’elle puisse gérer une charge de plus en plus importante tout en maintenant des temps de réponse rapides et une fiabilité élevée.