Faciliter la planification
Quels outils pour planifier plus vite et mieux?

Cas concrets

Digitalisation d'un fichier Excel traitant des extractions d'environ 200 000 lignes en provenance de l'ERP

Transfert d'un fichier Excel stratégique et mature au sein d'une web application sur mesure pour gagner en performance et en stabilité

Tableau web de gestion des fonds de rayons standards

Contexte


Ce projet consistait à digitaliser un fichier Excel très utilisé dans différents usines d'un groupe agroalimentaire. Ce fichier Excel faisait gagner beaucoup de temps aux équipes dans le traitement des données de prévisions de ventes, et les équipes ne pouvaient plus s'en passer.


Malheureusement nous connaissons tous les limites d'Excel et ses nombreux problèmes et parfois les équipes se sont heurtées à des problématiques très frustrantes. Pour en savoir plus sur le fichier Excel implémenté, vous pouvez consulter le projet d'administration des prévisions de vente Excel.

Ci-dessous un tableau comparatif donnant une idée des avantages de la digitalisation d'un tel fichier.


Tableau comparatif entre les performances d'un fichier Excel et son équivalent en application web


De plus, parmi les autres avantages que l'on peut citer, l'application web peut gérer beaucoup plus de données. Ainsi nous pouvons conserver les historiques des années précédentes et garder cette application fonctionnelle pour toutes les années à venir. Ce n'était pas le cas en Excel ou la surcharge de données nuisait considérablement aux performances. Afin de gérer au mieux le fichier, nous avions donc décidé avec les utilisateurs d'avoir 1 fichier pour chaque année de prévision. Ce fonctionnement les embêtait par ailleurs car en fin d'année, ils étaient à cheval entre 2 fichiers. La web-app, quant à elle, gère n'importe quelle année à n'importe quel moment !


Ergonomie


Pour ne pas trop perturber l'utilisateur, nous avons conçu une navigation sous forme d'onglets. Il retrouve ainsi le même fonctionnement que sous Excel. L'onglet sélectionné est en gras et un peu plus grand que les autres.


UX-UI de gestion d'onglets en format application web pour ressembler à une gestion d'onglets Excel


Le chargement des données issues de l'ERP se fait toujours à partir d'extractions (les 3 onglets sont nommés "extraction1", "extraction2" et "extraction3") sous format Excel bien qu'une implémentation en EDI soit tout à fait possible.


L'utilisateur peut joindre ses fichiers de manière classique ou alors utiliser une zone de cliqué-glissé pour les y déposer. Il peut ainsi par exemple modifier en masse les fonds de rayon standards qu'il a dans sa base de données. Il peut aussi changer les produits un par un

en modifiant directement dans le tableau les valeurs affiché. Une mise à jour sera alors faite dans la BDD en temps réel.


L'utilisateur ne perçoit pas le traitement effectué par le programme, l'expérience utilisateur est donc totalement fluide.


Ecran pour cliquer/glisser un fichier Excel contenant des fonds de rayon. Affichage et modification des données possibles possibles sur l'interface web


Si on prends l'exemple des prévisions de promotions, le tableau affiché nous montre que l'on peut sélectionner une plage de dates de la durée que l'on souhaite, et les données sont affichées avec un format conditionnel.


Le tableau est donc agréable à regarder. Les dimanches sont affichés mais grisés et les jours fériés sont automatiquement détectés et sont rosés. Chaque entête de colonne bénéficie d'un filtre. A chaque saisie d'un caractère ou d'un chiffre dans ce filtre, le tableau se rafraichit et n'affiche que les lignes concernées.


Tableau de présentation des promotions avec mises en formes conditionnelles et possibilité d'effectuer des lissages automatiques depuis l'interface web



Nous sommes sur un fonctionnement en noSql avec une base de données MongoDB ce qui confère une grande performance dans le requêtage de la base de données. Ce choix technique est idéal dans la digitalisation de ce fichier, chaque article n'ayant pas forcément le même nombre de données que les autres. Un article peut par exemple avoir un fond de rayon mais pas de promotion. Ainsi on se retrouve avec des données hétérogènes.


Les équipes de développement de l'ERP dans l'usine avait également un projet de digitalisation de ce processus prévisionnel. Ils n'ont cependant pas pu atteindre ce niveau de performance car ils avaient un grand nombre de tables SQL à requêter avec de nombreuses jointures. Ici un article est un simple objet contenant des sous-objets pour ses caractéristiques, ses données de prévisions de promotions, ses données de fonds de rayon, ses ventes réelles...


Algorithmes


Un bon nombre d'algorithmes de calculs sont mis à disposition de l'utilisateur. Les algorithmes sont capables de traiter plusieurs dizaines de milliers de lignes en moins de 3 secondes, et pourtant le nombre de calculs est impressionnant. L'affichage du tableau reste fluide malgré la grande quantité de lignes.


Exemple: Mettre un coefficient d'augmentation ou de diminution sur des articles répondant à certains critères de filtres. Ici seules les volailles d'espèce BIO et de couleur blanche bénéficieront d'une augmentation de leurs ventes de 50% sur les Mardi et Mercredi de la période de dates sélectionnées.


Ecran de saisie de coefficients d'augmentation ou de diminution de prévisions à un niveau agrégé, paramétrable par l'utilisateur


Autre exemple: créer des prévisions de fonds de rayon pour une longue durée à partir de la table des fonds de rayon standards


Dans le projet de développement des prévisions au sein de l'ERP, vous ne pouvez coefficienter que sur une semaine. Le temps de calcul et d'écriture en base de données étaient d'environ 15 secondes. Lorsque, en tant que chef de projet, je souhaitais dérouler un processus et que j'avais besoin d'avoir des données prévisionnelle sur un an, il fallait que je fasse la manipulation 52 fois ! Autant vous dire que je l'avais un peu mauvaise...


Dans cette maquette en web-app, je peux mettre 10 ans de prévision en 1 clic et 1 seconde d'attente!



Options


Parmi les options intéressantes, on peut faire


  • des configurations d'affichage de colonnes en affichant/masquant les colonnes de son choix :


Exemple sur l'exemple des fonds de rayon standard:

Affichage des fonds de rayon sans affichage des ventes réelles associées


Sur l'appui du bouton "FDR Vs REEL" nous affichons les colonnes de ventes réelles. Un deuxième appui nous permet de revenir en arrière.

Affichage des fonds de rayon avec colonnes de comparaison avec les ventes réelles



  • Conserver des notions d'historiques:


Les planificateurs qui sont les utilisateurs du fichier aiment pouvoir conserver un historique des modifications de prévisions. En effet, parfois le service commercial va venir modifier des quantités sans respecter les délais convenus. Ces modifications "discrètes" peuvent avoir des conséquences sur la planification. Le fait de pouvoir garder l'information peut permettre d'expliquer certaines choses et de démontrer que les prévisions sont bien suivies. Nous avons conservé l'apparence d'un commentaire de type Excel avec un petit triangle rouge en haut à droite de la cellule. Au survol de la souris un commentaire affiche l'ancienne valeur et la date de modification. Si plusieurs modifications ont eu lieu, elles seront toutes affichées.


Tableau de suivi des promotions avec commentaires contenant les modifications historiques effectuées sur la promotion au simple survol de la souris


Statistiques en temps réel


Des statistiques sont ajoutables à volonté dans un tel projet, de la même manière que l'on ajouterait des graphiques en Excel. Dans le cas présent, à chaque modification d'une prévision un processus enfant est lancé en parallèle du processus qui gère l'application. Ce mécanisme permet à l'utilisateur de ne voir aucun ralentissement de son application même lors de l'application d'un algorithme qui modifie de manière massive ses prévisions. Le graphique sera mis à jour automatiquement lors d'une remontée d'un évènement du serveur.


L'utilisateur n'a donc pas à se poser la question de savoir si son graphique est à jour ou non, pas d'attente d'un cron qui tournerait la nuit pour mettre à jour les données ... Le graphique vit en temps réel ! Quel bonheur pour un utilisateur ... On se satisfait de peu n'est-ce pas ? Pourtant je vous assure que lorsque vous travaillez avec des ERP vous ne savez plus si vos données sont à jour et si vous devez aller appuyer sur un bouton, ou attendre le passage d'une mise à jour la nuit ... Sans compter le temps d'attente, une fois le bouton appuyé!


Graphique  en bars mis à jour en temps réel selon modification des prévisions



Export des données


Une fois le travail du planificateur effectué sur ses fonds de rayon, les données doivent réalignées par produit entre les promotions et les fonds de rayon. Cet export prenait du temps dans le fichier Excel. L'objectif est de créer un fichier csv ou txt avec toutes les données formattées pour la bonne compréhension de l'ERP gérant la partie GPAO.


L'export peut être réalisé par l'application web sur le clic d'un bouton après avoir choisi la date début et le nombre de jours de prévisions que vous souhaitez transmettre à la GPAO. L'utilisateur sera invité à choisir le répertoire dans lequel il souhaite sauvegarder le fichier. Ce mécanisme est obligatoire si on passe par le navigateur car celui-ci n'a pas accès au PC de l'utilisateur sans son autorisation. Il serait toutefois possible de paramétrer un répertoire pour accueillir le fichier sur un serveur et c'est l'application nodejs (le back) qui fera l'opération. Il faut simplement que les services informatiques autorise l'application à écrire dans un répertoire du serveur.


Données générées sous format csv ou txt à des fins d'exportation vers un ERP


La génération du fichier est instantané. Pour informations, dans un cas similaire nous étions sur un temps de 20 à 30 minutes dans les tests effectués par la société pour inclure ce projet dans l'ERP. Il s'agissait d'un développement JAVA avec une base ORACLE. Les performances ne permettaient pas d'envoyer une année complète de prévisions ni de faire des envoies spontanés. Nous avions donc défini un envoie chaque nuit. Le problème était dû à une très grosse requête SQL sur de nombreuses tables et vues avec sous requêtes imbriquées. Les temps étaient dits incompressibles par l'équipe de développement.


Dans le cas présent, nous alimentons une table préformattée de manière évènementielle de sorte que dès qu'une prévision est modifiée, cette table est mise à jour en conséquence. La génération du fichier est donc possible à tout moment. Ne vous laissez donc pas faire par ces temps de traitement trop longs !!!


Si vous souhaitez vous aussi passer le cap de la digitalisation de vos fichiers Excel, alors n'hésitez pas à me contacter car j'adore relever ce type de défis ! -> pour les devis merci de passer par le formulaire de contact !


Merci à tous ceux qui m'auront lu jusqu'au bout.




Synthèse des principales fonctionnalités

  • Affichage de statistiques sous formes graphique pour avoir une visualisation des prévisions
  • Constitution d'un fichier de prévisions alignées entre Fonds de rayon et promotions pour intégration dans l'ERP
  • Importation de 3 extractions issues d'un ERP représentant un grand nombre de lignes (parfois > 200 000 lignes) L'importation se fait sous forme de cliqué-glissé de fichiers Excel sur le navigateur
  • Application de prévisions types aux semaines de l'année en cours - Possibilité de coefficienter les prévisions types par famille / sous-famille
  • Re-raitement des 200 000 lignes de prévisions par l'algorithme pour organiser et lisser les données, et offrir une représentation tabulaire à l'utilisateur avec toutes les fonctionnalités Excel classiques (filtres, écritures dans les cellules ...)
  • Conservation de l'historique des modifications de prévisions faites par l'équipe commerciale
  • Technologies

    Express EJS MongoDB Multer Child-process Tabulator Google Charts Socket.io

    Laisser un commentaire