Skip to content

Application Python qui utilise Selenium et MongoDB pour faire le réapprovisionnement du bar

License

Notifications You must be signed in to change notification settings

BaptTF/ReapproAuto

Repository files navigation

ReapproAuto

TLDR

Avoir soit Firefox soit Google Chrome si possible installé avec apt parce que ça ne fonctionne pas installé avec snap (quel surprise) https://doc.ubuntu-fr.org/firefox#installer_firefox_en_deb_classique_au_lieu_de_snap

pip install --index-url https://test.pypi.org/simple/ ReapproAuto
reappro
sudo apt install -y python3-venv
source Install.sh

Puis REMPLISSER le fichier .env avec les information nécessaire pour votre réappro

Obligatoire à remplir: MONGO_MDP, MONGO_PEM

Pour Promocash: NUMERO_CARTE_PROMOCASH, PASSWORD_PROMOCASH, WEB_BROWSER

Pour Auchan: IDENTIFIANT_AUCHAN, PASSWORD_AUCHAN, WEB_BROWSER

Pour faire une réappro dans le bar: EMAIL, WEB_BROWSER

MONGO_MDP= <METTEZ ICI LE MDP DE LA BASE DE DONNÉES>
MONGO_PEM= <METTEZ LE CHEMIN ABSOLUE DU FICHIER PEM POUR SE CONNECTER A LA DB>
NUMERO_CARTE_PROMOCASH= <METTEZ VOTRE NUMERO DE CARTE PROMOCASH>
PASSWORD_PROMOCASH= <METTEZ LE MDP DU PROMOCASH>
IDENTIFIANT_AUCHAN= <METTEZ LE IDF DE AUCHAN>
PASSWORD_AUCHAN= <METTEZ LE PASSWORD AUCHAN>
EMAIL= <METTEZ VOTRE ADDRESSE EMAIL AVEC @telecomancy.net>
WEB_BROWSER= <METTEZ VOTRE NAVIGATEUR (chrome/firefox)>

Puis REMPLISSER le fichier csv/Inventaire_Promocash.csv ou csv/Inventaire_Auchan.csv selon le réappro que vous voulez faire

source Start.sh

Si vous êtes curieux de ce qu'est SEUIL_COURSE allez à la partie configuration

PRESENTATION

Application Python qui utilise selenium et se connecte à la base de données pour faire le réapprovisionnement du bar

Ce programme automatise la réappro de openBar pour Promocash en plusieurs étapes décrites ci-dessous.

Chaque étape peut-être lancer individuellement dans leur fichier python respectif.

Le programme est résilient entre chaque étape car chaque étape génére un csv avec ses résultats donc si le programme plante au milieu d'une étape il est toujours possible de relancée à partir de là où vous vous êtes arrêter.

Le programme principale effectuant toutes les étapes se trouve dans le fichier RéaproComplete.py.

Vous pouvez lancez le programme avec

source Start.sh

CONFIGURATION

Avoir soit Firefox soit Google Chrome si possible installé avec apt parce que j'ai pas testé si ça fonctionne installé avec snap mais probablement pas mdr https://doc.ubuntu-fr.org/firefox#installer_firefox_en_deb_classique_au_lieu_de_snap Le programme n'est fait que pour les produits à 5.5% de TVA pour l'instant

sudo apt install -y python3-venv;

Pour que le programme fonctionne il faut lancer Install.sh avec la commande

source Install.sh 

Puis REMPLISSER le fichier .env

MONGO_MDP= <METTEZ ICI LE MDP DE LA BASE DE DONNÉES>
MONGO_PEM= <METTEZ LE CHEMIN ABSOLUE DU FICHIER PEM POUR SE CONNECTER A LA DB>
NUMERO_CARTE_PROMOCASH= <METTEZ VOTRE NUMERO DE CARTE PROMOCASH>
PASSWORD_PROMOCASH= <METTEZ LE MDP DU PROMOCASH>
IDENTIFIANT_AUCHAN= <METTEZ LE IDF DE AUCHAN>
PASSWORD_AUCHAN= <METTEZ LE PASSWORD AUCHAN>
EMAIL= <METTEZ VOTRE ADDRESSE EMAIL AVEC @telecomancy.net>
WEB_BROWSER= <METTEZ VOTRE NAVIGATEUR (chrome/firefox)>
SEUIL_COURSE=50

Explication de SEUIL_COURSE

SEUIL_COURSE est une constante qui sert à calculer les course à partir de de nombre de produit dans le bar et le nombre de produit par lot: Un example sera plus parlant:

Si on veut dans le bar 48 Coca Cola (montant optimal) et que dans le bar on a 47 Coca Cola on ne veut pas racheter 23 Coca en plus donc il faut un seuil à partir duquel on décide d'acheter le lot

Le seuil est en pourcentage du nombre de produit par lots

Le seuil par défaut est de 50 % en reprenant l'exemple au-dessus

Il faut qu'il y ait 36 Coca dans le bar pour déclencher l'achat car 24 * 0.5 = 12 et 48 - 12 = 36

Ainsi si le seuil est de 100 % alors il faudra qu'il manque un lot complet pour en acheté un nouveau, example: 24 Coca pour 100 à SEUIL_COURSE

Et si le seuil est de 0 % alors on achète dès qu'il manque un produit dans le bar cf le premier example

Le seuil de 50 % un choix personnel que je trouvais plutôt bien mais reste réglable si vous voulez changer

Explication de Inventaire_(Promocash/Auchan).csv

Le fichier csv/Inventaire_(Promocash/Auchan).csv

Comme l'example ci dessous (nom produit, nombre dans le bar, nombre optimal dans le bar, nombre de produit par lot, moyen de chercher sur le drive)

Coca Cola,0,0,24,525199

La dernière colonne est utilisé pour cherche dans la barre de recherche du drive quel produit choisir

Explication de Course.csv

(nom_produit, nb_de_lots_a_acheter, amount_left, optimal_amount, nb_produits_par_lots, ifls_produits_promocash ou ref_produits_auchan)

Coca Cherry,1,28,62,24,418172

Donc dans l'exemple ci-dessous on peut lire que: La liste course contient du Coca Cherry il faut en acheté 1 pack il y a 28 Coca Chery dans le bar actuellement, il faudrait en avoir 62 et le pack contient 24 Coca cherry, le numéro ou ref du produit dans le magasin

Explication de Prix.csv

(nom_produit, nb_de_lots_acheter, nb_produits_par_lots, prix)

Coca Cherry,1,24,15.12

On a acheté un pack de Coca Cherry pour 15.12 €

INFORMATION IMPORTANTE

Tous ce script fonctionne avec selenium avec un navigateur il est donc logique que si les sites web en question changent le selenium ne fonctionne plus. Pour corriger cela à part changement majeur du site web il suffit simplement de changer les find_éléments pour qu'il récupérer les bons éléments

1 ERE ETAPE: FAIRE L'INVENTAIRE

La première étape est présente dans le fichier inventaireMongo.py consiste à récupérer la quantité de chaque produit présent dans la première colonne du csv Inventaire.csv

2 EME ETAPE: CALCULER LES COURSES A FAIRE

La deuxième étape est présente dans le fichier Course.py consiste à calculer la liste de course à partir des quantités récupérer à étape 1 et aux quantitées supposées et d'un seuil en % qui réprensente le % minimum par rapport aux nombres supposés Cette étape génére un fichier Course.csv qui contient la liste de course

3 EME ETAPE: ALLER SUR PROMOCASH OU AUCHAN

La troisième étape est présente dans le fichier Promocash.py ou Auchan.py consiste à récupérer la liste de course dans le fichier Course.csv, d'ajouter dans le chariot tous les produits dans la liste de course et d'ajouter dans le chariot tous les produits qui ne sont pas au maximum dans le fichier Course_manuelle.csv.

Cette étape génére un csv Prix.csv qui contient tous les produits avec le nombre de produits achetés, le nombre de produits par lots, et le prix pour chaque lots.

Question intermédiaire pour Promocash: Voulez-vous remettre le stock maximal pour course_manuelle ?

Cette étape intermédiare présente dans le fichier remiseStockManuelle.py est là pour remettre le fichier Course_manuelle.csv avec le nombre maximum possible en remplaçant le fichier Course_manuelle.csv par le fichier Course_manuelle_stock_max.csv

4 EME ETAPE: FAIRE LA REAPPRO SUR LE BAR

La réppro consiste à prendre tous les éléments dans le fichier Prix.csv pour remplir la réappro dans le bar.

Il y a 2 possibilités: Soit la réappro avec le site du bar en utilisant Selenium Avantage: + plus de la réappro rentré Inconvenient: Utilise le navigateur pour rentrée la réappro Présente dans le fichier Reappro.py Cette possibilité est un fonctionnalité expérimental n'ayant était testé que en dans un base de données local il est donc déconseiller de l'utiliser tant qu'elle n'as pas était testé correctement. Soit la réppro en modifiant directement la base de données: Avantage: + rapide, +sûre qu'un navitageur Inconveniant: Si le programme bug au milieu c'est la merde notamment parce qu'on sait pas ce que ça a rentré.

Partie Statistique

Cette partie sert à faire des statistiques avec les données du bar

ETAPE OPTIONNELLE CALCULER LE NOMBRE OPTIMALE POUR TOUS LES PRODUITS DANS L'INVENTAIRE D'APRÈS LES STATISTIQUES

Cette étape va permettre à terme de mettre à jour automatiquement le nombre théorique optimale d'un produit dans le bar.
Pour calculer ce nombre on part du principe que le nombre optimal d'un produit dans le bar est que le produits soit toujours disponible entre 2 réappros.
En supposant que les réappro se font toutes les 2 semaines
On va donc prendre le nombre de vente du produits en question durant les 2,5 semaine dernière (0,5 de plus de marge) comme nombre optimale Mais si lors du calcul il n'y a plus du produit dans le bar cela pose un problème car cela va faire anormalement chuté ces ventes alors que demande est toujours la même
Donc si le produits n'est plus en vente on prendre la vente moyenne sur un jour lorsqu'il était en vente lors des 2,5 semaine dernière et on va les rajouté au jours ou le produit n'était plus vendable (on fait un prédiction de basé sur la vente moyenne du produits lorsqu'il toujours en vente récemment)
Si le produits n'as pas était en vente depuis les 2,5 dernière semaine, on va cherche sur la moyenne de l'ensemble de base de donnée
Enfin si le produit est nouveau on met le nombre de produit par lot comme nombre optimale (on met "pack" de test comme nombre optimal)

About

Application Python qui utilise Selenium et MongoDB pour faire le réapprovisionnement du bar

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages