Files
scrap/fonctionnement.md
Gilles Soulier cf7c415e22 before claude
2026-01-17 13:40:26 +01:00

2.5 KiB
Raw Blame History

Fonctionnement général de PriceWatch

Lorsquun utilisateur colle une URL dans la web UI et déclenche lajout/déclenchement dun scrap, voici le cheminement principal entre le frontend Vue et le backend FastAPI :

  1. Entrée utilisateur / validation

    • Le popup "Ajouter un produit" envoie POST /scrape/preview avec lURL + le mode (HTTP ou Playwright).
    • Les boutons "Ajouter" et "Enregistrer" sont accessibles après que la preview ait renvoyé un ProductSnapshot, sinon une erreur est affichée dans le popup.
  2. Backend (API)

    • Lendpoint /scrape/preview reçoit lURL, détermine le store (via pricewatch/app/core/registry.py) et utilise un parser adapté (pricewatch/app/stores/<store>/) pour extraire titre, prix, images, description, caractéristiques, stock, etc.
    • Si la page nécessite un navigateur, la stratégie Playwright (avec pricewatch/app/scraping/playwright.py) est déclenchée, sinon le fetch HTTP simple (pricewatch/app/scraping/http.py) suffit.
    • Le snapshot structuré ProductSnapshot contient les métadonnées, la liste dimages (jpg/webp) et les champs msrp, discount, categories, specs, etc.
    • En cas de succès, la preview renvoie un JSON que le frontend affiche dans le popup. En cas derreur (404, 401, scraping bloqué), lutilisateur voit directement le message retourné.
  3. Confirmation / persist

    • Quand lutilisateur clique sur "Enregistrer", la web UI déclenche POST /scrape/commit avec lobjet snapshot.
    • Le backend réinsère les données dans la base (pricewatch/app/core/io.py) et lAPI /products ou /enqueue peut ensuite réafficher ou re-scraper ce produit.
  4. Cycle de rafraîchissement

    • Le frontend peut aussi appeler /enqueue pour forcer un nouveau scrap dune URL existante (bouton refresh dans la carte ou le détail).
    • Le backend place la requête dans Redis (via pricewatch/app/core/queue.py), un worker la consomme, met à jour la base, et le frontend récupère les nouvelles données via GET /products.
  5. Observabilité / logs

    • Les étapes critiques (preview, commit, enqueue) génèrent des logs (backend/uvicorn) disponibles dans la web UI via les boutons logs. Les erreurs sont mises en rouge et peuvent être copiées pour diagnostic.

Ce flux respecte les contraintes : la web UI déroule les interactions, le backend orchestre le scraping (HTTP vs Playwright), applique la logique store et diffuse le résultat via les endpoints REST existants.