Retour à l’expérience Carter-Cash

Carter-Cash

Panier continu & parcours multi-appareil

01 / 4

CONTINUITÉ DU PARCOURS

Retrouver son panier, quel que soit l’appareil

Permettre au client de reprendre son achat après une déconnexion, une session expirée ou un changement d’appareil

À l’origine, le panier reposait principalement sur la session du navigateur. Après une période d’inactivité, une reconnexion ou le passage sur un autre appareil, un client pouvait perdre son panier en cours et devoir recommencer son parcours.

J’ai refondu son initialisation afin de ne plus dépendre uniquement de cette session. Lorsqu’un client se connecte, le système peut retrouver son dernier panier encore valide dans la base de données et le réinjecter dans son parcours. Si aucun panier ne peut être repris, un nouveau panier est créé selon le contexte de l’utilisateur.

  • Continuité
  • Session
  • E-commerce

02 / 4

RÈGLES DE CONTEXTE

Réconcilier panier, identité et magasin

Choisir le bon panier sans perdre le contexte dans lequel l’achat a commencé

Lors d’une connexion, plusieurs états pouvaient se rencontrer : un panier anonyme déjà présent dans la session, un ancien panier encore actif dans la base de données ou un magasin différent de celui précédemment associé au client. Les comptes vendeurs nécessitaient également un comportement distinct de celui des clients classiques.

J’ai structuré les règles permettant d’arbitrer ces situations. Un panier anonyme peut être rattaché au client qui vient de se connecter ; en son absence, le dernier panier valide est recherché. Le magasin du panier et celui de la session sont ensuite synchronisés selon le contexte. Un client retrouve ainsi son environnement d’achat, tandis que les usages vendeurs restent isolés dans un panier dédié.

  • Règles métier
  • Identité
  • Contexte magasin

03 / 4

OBSERVATION & DONNÉES

Comprendre les parcours entre appareils

Rendre visibles les passages d’un appareil à l’autre tout au long du parcours d’achat

La continuité du panier permettait au client de poursuivre son achat, mais elle ouvrait également une nouvelle question : comprendre comment un parcours commencé sur mobile, desktop ou tablette évoluait jusqu’à la commande.

J’ai conçu un suivi des appareils utilisés aux moments clés du panier : création, changement d’appareil, entrée dans le paiement et finalisation. Des règles garantissent que seules les transitions cohérentes sont conservées, puis une vue agrégée permet d’analyser les principaux parcours entre appareils. J’ai accompagné cette fonctionnalité jusqu’à sa mise en production.

  • Multi-appareil
  • Analyse comportementale
  • Production

04 / 4

RÉALISATION TECHNIQUE

Structurer la continuité avec Symfony

La continuité du panier devait arbitrer plusieurs sources d’état : la session, l’utilisateur connecté et la base de données, tout en préservant le magasin sélectionné. Le suivi multi-appareil devait ensuite observer ce parcours sans ajouter de dépendance forte au tunnel d’achat

  • Symfony
  • Doctrine
  • PHPUnit

Initialisation du panier

Un service Symfony central orchestre les différents cas : panier déjà en session, association d’un panier anonyme après connexion, récupération du dernier panier valide ou création d’un nouveau panier. Un repository Doctrine sélectionne le panier réutilisable selon l’état de la commande associée.

Identité et contexte magasin

Les règles distinguent explicitement les clients et les vendeurs. Le panier conserve également son magasin afin de réconcilier, lors d’une reprise, le contexte enregistré avec celui de la nouvelle session.

Suivi événementiel

Le composant EventDispatcher découple la journalisation des appareils du parcours métier. Des événements sont déclenchés aux étapes significatives, puis un service applique les règles d’intégrité, détecte le type d’appareil et enregistre uniquement les transitions pertinentes. Une vue SQL agrège ensuite les parcours finalisés.

Tests et fiabilité

Les principaux scénarios d’initialisation sont couverts par PHPUnit : création, association après connexion, récupération depuis la base et traitement spécifique des vendeurs. Les dépendances liées à la sécurité, à la session, aux repositories et à Doctrine sont simulées afin d’isoler les règles métier.

  • Symfony
  • Doctrine
  • EventDispatcher
  • Security
  • Session
  • DQL
  • Mobile Detect
  • PHPUnit