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 :
- validation de la verticale ;
- installation éventuelle de la table ;
- lecture des offres éligibles ;
- construction des groupes ;
- construction des lignes ;
- exclusion des lignes sans
model_slugoumodel_key; - remplacement complet de la projection pour la verticale ;
- 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 :
- vérifier qu’il existe ou est calculé dans
ccx_offers_norm_v2; - l’ajouter à la requête d’enrichissement ;
- l’extraire et le consolider dans le constructeur de ligne ;
- vérifier le schéma de la projection cible ;
- reconstruire la verticale ;
- contrôler le nombre de lignes et un échantillon de valeurs.