Aller au contenu

Services et fonctions principales

Enrichissement des modèles

Fichier principal observé :

plugins/ccx-feeds-industrial/includes/application/product-model-enrichment.php

ccx_product_models_fetch_enrichment_offer_rows()

Charge les offres éligibles depuis ccx_offers_norm_v2 pour une verticale donnée.

La requête sélectionne explicitement les colonnes nécessaires à l’enrichissement. Les colonnes facultatives sont protégées par ccx_product_models_offer_optional_select().

Critères d’éligibilité :

WHERE vertical_id = %s
  AND review_required = 0
  AND status = 'ok'
  AND COALESCE(brand_norm, '') <> ''
  AND COALESCE(title_clean, '') <> ''

Conséquence : une offre classée en review, unknown ou sans titre/marque ne participe pas aux projections de spécifications.

ccx_product_models_get_slug_map()

Charge depuis ccx_product_models_v1 la correspondance entre :

  • model_key ;
  • slug ;
  • marque et modèle normalisés ;
  • image ;
  • nombre d’offres ;
  • prix minimum.

Cette correspondance sert à rattacher les groupes d’offres aux modèles projetés.

ccx_product_models_collect_enrichment_groups()

Regroupe les offres éligibles par identité de modèle, puis associe à chaque groupe les informations de ccx_product_models_v1.

Une divergence entre les offres actuelles et la table des modèles peut donc produire :

  • un modèle sans spécification ;
  • une offre sans modèle projeté ;
  • des compteurs temporairement différents entre projections.

ccx_product_specs_build_row()

Consolide les attributs disponibles sur les offres d’un groupe :

  • écran ;
  • type d’affichage ;
  • résolution et fréquence ;
  • RAM ;
  • options de stockage et couleurs ;
  • système, réseau et SIM ;
  • batterie ;
  • CPU et GPU ;
  • caméra et USB.

La confiance est calculée à partir du nombre de champs renseignés et du nombre de sources :

$confidenceScore = min(100, ($filledFields * 6) + min($sourceCount, 10) * 4);

La ligne conserve aussi source_count, created_at et updated_at.

ccx_product_specs_rebuild()

Procédure :

  1. validation de la verticale ;
  2. installation éventuelle de la table ;
  3. lecture des offres éligibles ;
  4. construction des groupes ;
  5. construction des lignes ;
  6. exclusion des lignes sans model_slug ou model_key ;
  7. remplacement complet de la projection pour la verticale ;
  8. retour du statut et du nombre de lignes insérées.

La fonction est PHP, pas une fonction SQL MariaDB.

Service d’écriture

Les spécifications sont écrites avec :

ccx_product_specification_projection_write_service()
    ->replaceVerticalSpecifications($vertical, $preparedRows);

Le remplacement vertical permet une reconstruction déterministe et évite l’accumulation de lignes obsolètes dans cette projection.

Galerie

ccx_product_gallery_build_row() consolide l’image du modèle et les URLs d’images des offres. Les doublons sont éliminés et le nombre d’images est limité avant sérialisation JSON.

Règle d’évolution

Lorsqu’un nouvel attribut doit apparaître dans une projection :

  1. vérifier qu’il existe ou est calculé dans ccx_offers_norm_v2 ;
  2. l’ajouter à la requête d’enrichissement ;
  3. l’extraire et le consolider dans le constructeur de ligne ;
  4. vérifier le schéma de la projection cible ;
  5. reconstruire la verticale ;
  6. contrôler le nombre de lignes et un échantillon de valeurs.