Divioseo 2021

PIM - Product Information Management

Maintenance et évolution du PIM d'un grand e-commerce français gérant plusieurs centaines de milliers de produits issus de dizaines de fournisseurs.

Laravel MySQL API Redis API PrestaShop

Problématique

Maintenir la cohérence d'un catalogue de plusieurs centaines de milliers de produits alimenté par des dizaines de fournisseurs aux formats et aux rythmes d'envoi radicalement différents est un défi permanent.

La complexité des sources :

  • Chaque fournisseur a ses propres conventions : noms de colonnes différents, encodages variés, structures imbriquées ou aplaties
  • Les canaux de transmission sont hétérogènes : dépôt FTP, email avec pièce jointe, API REST propriétaire, scraping de catalogue en ligne
  • Les fréquences de mise à jour varient du temps réel au fichier hebdomadaire, imposant des pipelines d'import distincts par fournisseur

Les enjeux de fiabilité :

  • Une erreur d'import peut provoquer des dépublications en masse ou des prix incorrects visibles par les clients
  • Les fichiers fournisseurs arrivent parfois malformés, tronqués ou avec des changements de format sans préavis
  • La volumétrie (centaines de milliers de produits) impose des traitements en arrière-plan pour ne pas saturer la base de données

Les besoins métier :

  • Les équipes ont besoin d'agir rapidement sur des lots de produits (campagnes promotionnelles, retraits de catalogue, mises à jour de catégorie)
  • Toute action en masse mal exécutée sur un catalogue aussi large est difficile à corriger

Solution technique

J'ai maintenu et fait évoluer une architecture d'import modulaire, capable d'absorber n'importe quelle source fournisseur sans modifier le cœur du système.

Architecture d'import :

  • Système de connecteurs modulaires : chaque source fournisseur dispose de son propre connecteur (FTP, email IMAP, API HTTP, scraper)
  • Parser universel capable de lire CSV, TSV, XLS, XLSX et JSON avec détection automatique de l'encodage
  • Mapping configurable par fournisseur pour normaliser les colonnes vers le schéma interne, sans toucher au code

Fiabilité des imports :

  • Traitement via le système de queues Laravel pour absorber les gros volumes sans bloquer l'application
  • Redis utilisé pour le cache des données de référence (catégories, marques, fournisseurs) et réduire la pression sur MySQL
  • Validation des données à l'entrée avec rapport d'erreurs par ligne pour identifier les anomalies fournisseur
  • Système de rollback pour annuler un import défectueux avant publication

Actions en masse :

  • Interface dédiée avec filtres multi-critères pour sélectionner précisément les produits à traiter
  • File d'attente des opérations en masse pour éviter les timeouts sur les grands lots
  • Logs d'audit de chaque action pour traçabilité complète

Synchronisation PrestaShop :

  • Publication via l'API PrestaShop avec gestion des conflits et des mises à jour partielles
  • Synchronisation différentielle : seules les modifications depuis le dernier import sont poussées

Le projet

J'ai assuré la maintenance et le développement continu du PIM (Product Information Management) d'un grand e-commerce français, un système critique gérant plusieurs centaines de milliers de produits alimentés par des dizaines de fournisseurs.

Périmètre

La plateforme est le point central de toute la donnée produit : chaque référence transite par ce système avant d'être publiée sur le site e-commerce via l'API PrestaShop.

Fonctionnalités principales

  • Imports multi-sources : Récupération automatique des catalogues fournisseurs selon différentes fréquences et canaux — fichiers déposés sur FTP, envoyés par email, exposés via API, ou extraits par scraping
  • Formats hétérogènes : Parsing et normalisation de fichiers CSV, TSV, XLS, XLSX et JSON quel que soit le format du fournisseur
  • Mise à jour automatisée : Synchronisation des stocks, prix et données produit à la fréquence définie par fournisseur (temps réel, quotidien, hebdomadaire)
  • Actions en masse : Plusieurs dizaines d'opérations groupées pour modifier, publier, dépublier ou supprimer des produits en lot
  • Publication PrestaShop : Synchronisation avec le front e-commerce via l'API PrestaShop