Aller au contenu

Incident — Samsung Smartphone Hard Lock

Symptôme

Des offres Samsung Galaxy étaient reconnues comme smartphones par le classifieur probable, puis rejetées par la projection finale :

spec_type_probable = smartphone
spec_type_final = unknown
vertical_id = unknown
status = review
reject_code = unknown_vertical

Aucune spécification smartphone n’était alors générée pour ces offres.

Cause

Dans :

plugins/ccx-feeds-industrial/includes/pipeline/90-offers-norm.php

la règle :

CCX_SMARTPHONE_HARD_LOCK_V1

contenait un comportement de repli qui remplaçait une classification smartphone déjà établie par unknown lorsque les conditions spécifiques du hard lock ne correspondaient pas.

Le comportement concernait les calculs de :

  • vertical_id ;
  • spec_type_final.

Correctif

Dans les deux branches concernées :

- ELSE 'unknown'
+ ELSE 'smartphone'

Le hard lock conserve ainsi la verticale déjà reconnue au lieu de dégrader l’offre en unknown.

Validation

Validation syntaxique :

php -l plugins/ccx-feeds-industrial/includes/pipeline/90-offers-norm.php

Reconstruction du flux Samsung :

docker exec -it ccx-wordpress php \
/var/www/html/wp-content/plugins/ccx-feeds-industrial/includes/pipeline/90-offers-norm.php \
samsung

Après reconstruction, 71 offres Galaxy observées présentaient :

vertical_id = smartphone
spec_type_final = smartphone
status = ok

Impact

  • restauration de l’éligibilité des offres Samsung Galaxy ;
  • restauration de la construction des modèles smartphone ;
  • restauration de la génération des spécifications ;
  • disparition du faux rejet unknown_vertical pour ces offres.

Prévention

Toute règle de verrouillage de verticale doit respecter ce principe :

une règle spécialisée ne doit pas dégrader une classification probable cohérente vers unknown sans conflit explicite et traçable.

Ajouter des tests de non-régression couvrant au minimum :

  • smartphone reconnu + catégorie compatible ;
  • smartphone reconnu + catégorie marchande incomplète ;
  • véritable accessoire ;
  • véritable conflit de verticale.