fix(qlik-search): la sélection ne s'appliquait pas, les résultats ne correspondaient pas au terme

Symptôme : « tapis anti » renvoyait 40 articles sans rapport (mugs, miroirs,
couvertures) avec des codes centraux contigus — c'est-à-dire le début du
catalogue Qlik, pas un résultat de recherche.

Cause : SearchResults + SelectValues. On ré-injectait les qText renvoyés par la
recherche globale dans un SelectValues sur le champ, sans vérifier le retour et
sans laisser à l'Engine le temps d'évaluer la sélection. Quand la sélection
n'est pas appliquée, le cube renvoie simplement les premières lignes de la
dimension « Article Code » — soit exactement les 40 lignes demandées.

Correctifs :
- Sélection via list object : SearchListObjectFor + AcceptListObjectSearch,
  c'est-à-dire le mécanisme d'un volet de filtre Qlik. Qlik applique sa propre
  sémantique de recherche et sélectionne lui-même les valeurs, sans réinjection
  de valeurs texte. Libellé d'abord, code centrale en repli.
- Délai d'évaluation (QLIK_SETTLE_MS, défaut 250 ms) après ClearAll, après la
  recherche et après l'acceptation, comme le fait déjà l'extraction.
- Garde-fou côté client : chaque ligne du cube est revérifiée contre le terme
  (tous les mots présents dans le libellé, insensible casse/accents, ou code
  correspondant). Une liste sans rapport avec la recherche est pire que zéro
  résultat.
- Dédoublonnage par code centrale : un article référencé chez plusieurs
  fournisseurs produisait autant de lignes (vu sur « Couverture de Pique-nique »,
  code 10636135, listé deux fois).
- Diagnostic : inventaire des champs, nombre de valeurs trouvées, sélections
  actives et compteur de lignes écartées sont tracés dans les logs ; si tout est
  écarté, l'UI dit que le filtre n'a pas été appliqué au lieu d'afficher un
  « aucun résultat » trompeur.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DfqUihgixw4K1AmJhizWiu
This commit is contained in:
Claude committed 2026-07-29 09:14:56 +00:00
1 parent 62375d3310
commit a1a95fa290
3 files changed
+177 -64

No files matched your search

+7 -2
View File
@@ -159,10 +159,15 @@ export function ProduitResults({ query }: { query: string }) {
{source === "qlik" && qlikError && (
<div
className="rounded-xl p-3 text-[12px]"
className="rounded-xl p-3 text-[12px] flex items-start gap-2"
style={{ background: "var(--bg-elevated)", border: "1px solid var(--border)", color: "var(--text-secondary)" }}
>
Articles trouvés, mais l&apos;extraction des mesures réseau a échoué : {qlikError}
<AlertTriangle className="w-3.5 h-3.5 mt-0.5 shrink-0" style={{ color: "var(--accent-error)" }} />
<span>
{rows.length === 0
? qlikError
: `Articles trouvés, mais l'extraction des mesures réseau a échoué : ${qlikError}`}
</span>
</div>
)}