SPB Git forge

spb/food-ka

Public

Food-Ka — agrégateur de produits d'épicerie du Québec — www.food-ka.com

55commits 1branches 0releases
10.2 MBsize
maindefault branch
9 days agolast push
Python 53.9% TypeScript 24% CSS 14.9% JavaScript 5.8% HTML 1.4%
2.0 KB

# Transverse — Matching inter-bannières (product_links)

Généré automatiquement par scripts/gen_connector_docs.py.

# Mécanique (foodka/matching.py)

matching.py : rapprochement inter-bannières — « le même produit ailleurs » Après chaque cycle d'ingestion, reconstruit la table product_links (group_id, uid) : groupes de produits ACTIFS identiques vendus par des bannières DIFFÉRENTES, rapprochés par clé normalisée marque + nom nettoyé + format. Matching CONSERVATEUR (mieux vaut rater un rapprochement qu'en inventer) :

  • marque non vide obligatoire (égalité stricte après normalisation) ;
  • format identique (quantité + unité de base via parse_size) ;
  • similarité élevée entre noms nettoyés (accents/casse/mots vides/ format retirés, jetons triés) — seuil 0,86, ou 0,95 si aucun format n'est connu de part et d'autre. Une source « *_flyer » est la même bannière que sa source catalogue (metro / metro_flyer) : un groupe doit couvrir >= 2 bannières distinctes.

# État live

  • Groupes de produits identiques : 1 518
  • Produits rapprochés : 3 638
  • Règles conservatrices : marque non vide et strictement égale ; format identique (quantité + unité de base) ; similarité de noms nettoyés ≥ 0,86 (0,95 sans format) ; un groupe couvre ≥ 2 bannières distinctes (*_flyer = même bannière que son catalogue).
  • Garde-fous perf : MAX_BLOCK 3000, comparaisons en fenêtre triée de 30 (coût linéaire ; rebuild mesuré à ~7 s).

# Taille des groupes

Produits par groupe Groupes
2 1127
3 278
4 67
5 22
6 13
7 5
8 1
9 2
10 1
11 1
12 1

# Sources les plus rapprochées

Source Produits dans un groupe
maxi 675
provigo 638
club_entrepot 345
metro 301
superc 291
nuvo 169
iga_flyer 101
pa 99
tradition 96
aliments_merci 79

Reconstruit après chaque cycle d'ingestion (table repartie de zéro : idempotent).