Aller au contenu
Toutes les réalisations

Étude de cas 03 / 06

Bonjout Beauty

Beauté · E-commerce

Des tableurs à un logiciel MRP sur mesure

  • Ingénierie des données
  • Ingénierie logicielle
  • Cloud et infrastructure
bonjoutbeauty.com
Bonjout MRPDonnées démo
Tableau de bord des opérations du MRP Bonjout

Chiffres clés

Entre une commande Shopify et le MRP
Minutes
Semaines de prévision de stock
12 à 52
Recalcul rétroactif du coût de revient
2 ans
Données de ventes chargées dans BigQuery
Chaque jour

En bref

  • L’enjeu

    Une marque de beauté en forte croissance, vendue en direct (DTC) et auprès de revendeurs, qui fonctionnait sur des fichiers Excel gigantesques, puis sur un empilement d’outils. Le stock était réparti entre entrepôts, laboratoires de conditionnement et partenaires, sans réponse unique à trois questions : que possède la marque, combien cela lui a-t-il réellement coûté, et quand sera-t-elle en rupture ?

  • Notre réalisation

    D’abord, l’analytique quotidienne : les données de ventes de la marque arrivent chaque jour dans BigQuery (aujourd’hui via DataSync) et alimentent ses tableaux de bord. Ensuite, une plateforme MRP complète (achats, stock suivi au lot près, prévision de stock, planification de la production, calcul du coût de revient rendu et synchronisation Shopify) et son intégration avec un nouveau centre de distribution accessible uniquement par API.

  • Le résultat

    Un seul système de référence pour les achats, le stock, la production, les ventes et le coût de revient, à la place des tableurs : les commandes Shopify appliquées en quelques minutes, chaque unité traçable jusqu’à son lot, et le stock acheté valorisé à son coût de revient rendu réel.

Services associés : Développement full stackCollecte et analyse de donnéesIntégration de plateformes

Savoir-faire

Ce qu’il a fallu.

  • Ingénierie des données

    • Un stock en event sourcing, bâti sur le journal des mouvements de stock de l’application (en ajout seul) : mouvements datés à leur date métier, sortie des lots les plus anciens en premier, rejeu des inventaires physiques et reconstitution du stock à n’importe quelle date passée.
    • Un moteur de calcul du coût de revient rendu (prix du bon de commande × taux BCE du jour, plus le fret, figé par lot), consolidé dans un registre quotidien au coût moyen pondéré qui recalcule l’historique dès qu’un événement antidaté arrive.
    • Une ingestion Shopify dont chaque effet ne s’applique qu’une fois : webhooks vérifiés par HMAC traités toutes les 5 minutes, rapprochement toutes les 15 minutes et reprise complète de l’historique.
    • Des pipelines DataSync qui chargent chaque jour les données Shopify dans BigQuery pour les tableaux de bord et les exports comptables.
  • Ingénierie logicielle

    • Une API Flask et une application React 19 : tableaux de bord Recharts, planification de la production et des arrivages par glisser-déposer.
    • Des tests automatisés : unitaires, d’intégration sur une vraie base Postgres, et front-end.
    • Un client défensif et testé pour l’API d’un centre de distribution sans webhooks ni mises à jour : une écriture au résultat incertain n’est jamais relancée, et une réception invraisemblable est mise en attente.
    • Les commandes revendeurs reconstruites nativement à partir d’une ancienne application : bons de commande des enseignes reçus en PDF ou par e-mail et lus par un LLM, puis factures, listes de colisage et réservations de stock dans le MRP.
  • Cloud et infrastructure

    • Des services Cloud Run, plus un job Cloud Run pour les longues synchronisations Shopify.
    • Un pipeline Cloud Build qui exécute les migrations de base de données avant chaque déploiement de l’API : une migration en échec bloque la mise en production.
    • Des jobs Cloud Scheduler sécurisés par OIDC et gérés depuis l’application, et des environnements DEV et PROD séparés, chacun avec sa base de données et sa boutique.

Projet 01

Bonjout MRP

Flask · React 19 · PostgreSQL · Cloud Run

Le système de référence opérationnel de la marque : des bons de commande aux expéditions et au fret, jusqu’aux réceptions au lot près ; un registre de stock en ajout seul couvrant entrepôts et laboratoires ; des projections de stock sur 12 à 52 semaines avec scénarios d’arrivages ; la planification de la production en laboratoire et des nomenclatures versionnées ; les commandes revendeurs lues dans les bons de commande des enseignes ; et le coût de revient rendu réel. Il s’appuie sur la base de données de l’ancienne application interne de la marque, qu’il étend.

Objectif
Savoir à tout moment ce que la marque possède, où, ce que cela lui a réellement coûté et quand elle sera en rupture.
Points clés
  • Projection hebdomadaire par site : rythme de vente sur 21 jours, besoins en composants issus des nomenclatures, stock de sécurité et semaine limite de commande
  • Suggestions de réapprovisionnement transformables en bons de commande
  • Registre quotidien du coût de revient, avec recalcul rétroactif jusqu’à deux ans
  • Documentation de l’API et guide d’aide intégrés à l’application, avec des schémas de flux
Technologies
  • Python
  • Flask
  • SQLAlchemy
  • React 19
  • Recharts
  • PostgreSQL
  • Cloud Run
Bonjout MRPDonnées démo
Tableau de bord du MRP Bonjout
(taille réelle, dans un nouvel onglet)
Tableau de bord des opérations : achats, stock, ventes et marges sur un seul modèle de données.
Bonjout MRPDonnées démo
Grille de projection de stock hebdomadaire
(taille réelle, dans un nouvel onglet)
Projection de stock hebdomadaire par référence, avec les arrivages attendus, les commandes des enseignes et les ruptures prévues.
Bonjout MRPDonnées démo
Détail du coût de revient avec ses couches de coût
(taille réelle, dans un nouvel onglet)
Coût de revient rendu d’un kit : couches de lots, fret et coût moyen pondéré quotidien.
Bonjout MRPDonnées démo
Liste des bons de commande
(taille réelle, dans un nouvel onglet)
Bons de commande par fournisseur, avec jalons et totaux.
Bonjout MRPDonnées démo
Cartes des jobs Cloud Scheduler
(taille réelle, dans un nouvel onglet)
Jobs planifiés gérés depuis l’application, chacun sécurisé par OIDC.
Schéma des flux de données du MRP
(taille réelle, dans un nouvel onglet)
Comment Shopify, les factures de fret et les taux de change alimentent le registre et les moteurs de planification, et où se branche la nouvelle intégration avec le centre de distribution.

Projet 02

Intégration du centre de distribution

API du centre de distribution · Shopify GraphQL · Cloud Scheduler

Confier la logistique à Capacity, un centre de distribution accessible uniquement par API, sans webhooks ni endpoints de mise à jour, obligeait le MRP à tout piloter : transmettre les commandes que Shopify oriente vers l’entrepôt, annoncer chaque arrivage par un ordre de réception, en cartons complets quand le colisage le permet, enregistrer les réceptions sur six créneaux de traitement par jour, renvoyer les numéros de suivi vers Shopify et rapprocher le stock de l’inventaire transmis chaque nuit par l’entrepôt.

Objectif
Changer de centre de distribution sans expédier deux fois, sans compter deux fois et sans perdre en fiabilité des stocks.
Points clés
  • Testée de bout en bout, d’une boutique Shopify de développement jusqu’à l’environnement de test du centre de distribution, avec son plan de recette automatisé
  • Une réception deux fois supérieure à la quantité annoncée est mise en attente, jamais enregistrée
  • Un inventaire de nuit qui mettrait à zéro la plupart des références est refusé
  • Check-list de mise en service, journal des requêtes et panneaux par arrivage pour les opérateurs
Technologies
  • Python
  • Flask
  • Shopify GraphQL
  • Cloud Scheduler
  • API REST
Bonjout MRPDonnées démo
Console de l’intégration du centre de distribution
(taille réelle, dans un nouvel onglet)
Console du centre de distribution : check-list de mise en service, relevés planifiés et rapprochement nocturne des stocks.
Bonjout MRPDonnées démo
Page d’arrivage avec le panneau de réception du centre de distribution
(taille réelle, dans un nouvel onglet)
Un arrivage avec son ordre de réception, et une réception mise en attente pour vérification.
Bonjout MRPDonnées démo
Journal des requêtes au centre de distribution
(taille réelle, dans un nouvel onglet)
Chaque appel au centre de distribution journalisé, nouvelles tentatives comprises.

Projet 03

Analytique sur DataSync

DataSync · BigQuery · Looker Studio

Avant le MRP, DataGem a remplacé les tableurs par des tableaux de bord quotidiens sur BigQuery ; ces flux tournent désormais sur DataSync, sa plateforme d’ingestion : les données Shopify sont exportées, chargées en tables intermédiaires puis fusionnées dans BigQuery chaque jour, sans intervention humaine, et ce même entrepôt de données alimente aujourd’hui les exports comptables du MRP.

Objectif
Des indicateurs quotidiens et fiables, sans que personne ne touche à un tableur.
Points clés
  • Exports Shopify en masse, transférés en flux vers BigQuery par fenêtres de dates
  • Tables intermédiaires fusionnées dans l’historique par clé : relancer un traitement ne duplique aucune ligne
Technologies
  • DataSync
  • BigQuery
  • Cloud Run Jobs
  • Cloud Scheduler
  • Looker Studio
Console DataSyncDonnées démo
Historique des exécutions DataSync avec leurs journaux
(taille réelle, dans un nouvel onglet)
DataSync (espace de démo) : une synchronisation Shopify avec son journal d’exécution en direct.
Schéma de l’architecture DataSync
(taille réelle, dans un nouvel onglet)
DataSync : une seule plateforme d’ingestion, chaque client dans son propre cloud.

The dashboard created by Datagem Consulting has been a game-changer for our start-up. Pierre has demonstrated an excellent understanding of our needs, delivering a customized solution tailored specifically to our business requirements.

We now have immediate access to all our data with 100% accuracy, presented exactly how we want to see our business – all in one place, automatically updated daily without any human intervention.

Our needs continue to evolve, and over time, we have requested additional custom analysis and data tracking. Pierre has always responded promptly, day or night 😊, listening carefully, with patience.

He has been the perfect partner in this project. We have made many people envious of our Dashboard, and I certainly don’t miss our gigantic Excel files!

Aude EstampesDirectrice financière, Bonjout Beauty

Et maintenant, à vous.