fix(sources): Manger Bouger sans filtre déroule tout le catalogue (#78) #126
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/manger-bouger-empty-filter"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Le parcours « tout voir » (filtre texte vide) de la source Manger Bouger dans l'onglet Sources s'arrêtait après la 1ʳᵉ page (9 recettes) sur le serveur déployé, au lieu de dérouler tout le catalogue de la Fabrique à Menus.
Cause
manger-bouger.tslist()construisait toujours l'URL avec un&query=final, même vide :Sur le serveur déployé, cette URL renvoie la page 1 pour tout
page=N(hypothèse : cache CDN qui replie lequery=vide, ou rendu serveur qui ignorepagesansqueryréel — non reproductible depuis une machine de dev, où l'URL avec&query=vide pagine correctement). La page 2 revenant identique à la page 1, le garde-fou anti-boucle de #38 (RecipeSourcesPanel.tsx— « 0 nouvelexternalId⇒ fin de liste ») coupe le défilement. Le garde-fou fait son travail ; la cause est en amont.Aucun autre adaptateur scrapé n'ajoute un paramètre de recherche vide à un endpoint paginé —
marmiton.ts/quitoque.ts/ohmonbento.tsle conditionnent tous ; seulmanger-bouger.tsl'ajoutait systématiquement.Correctif
manger-bouger.tslist()— n'ajoute&query=que si le terme de recherche est non vide (aprèstrim). La requête catalogue nue?diet=ALL&page=N(quemangerbouger.frpagine réellement) est désormais utilisée pour le parcours sans filtre.diet=ALLconservé. Le chemin filtré (&query=<mot-clé>) est inchangé.LIST_URL/hasMorePagescorrigés : la pagination « vérifiée en direct » ne valait que pour le chemin avec un termequery.manger-bouger.test.ts— 4 cas ajoutés audescribe("list")(qui n'avait aucun cas sansquery, d'où la régression) :list({})construit exactement…/recettes?diet=ALL&page=1(sansquery=) ;querycomposé uniquement d'espaces = pas de filtre ;nextCursornon nul sihasMorePages) ;list({ query: "salade" })ajoute toujours&query=salade(non-régression du chemin filtré).Hors scope
freshItems.length === 0de #38 : correct tel quel, il cesse simplement de se déclencher une fois la requête corrigée.specs/backend-architecture.md, déjà obsolète pour Marmiton/750g/Manger Bouger (cf. #37).Vérifié localement
pnpm lint✅ ·pnpm build(tsc api + web, vite) ✅. Mocha → CI (pas de Postgres local ; les nouveaux cas suivent exactement le motif de capture d'URL déjà présent dans le fichier).Closes #78.
🤖 Generated with Claude Code