2.5 KiB
2.5 KiB
Fonctionnement général de PriceWatch
Lorsqu’un utilisateur colle une URL dans la web UI et déclenche l’ajout/déclenchement d’un scrap, voici le cheminement principal entre le frontend Vue et le backend FastAPI :
-
Entrée utilisateur / validation
- Le popup "Ajouter un produit" envoie
POST /scrape/previewavec l’URL + 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.
- Le popup "Ajouter un produit" envoie
-
Backend (API)
- L’endpoint
/scrape/previewreçoit l’URL, détermine le store (viapricewatch/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é
ProductSnapshotcontient les métadonnées, la liste d’images (jpg/webp) et les champsmsrp,discount,categories,specs, etc. - En cas de succès, la preview renvoie un JSON que le frontend affiche dans le popup. En cas d’erreur (404, 401, scraping bloqué), l’utilisateur voit directement le message retourné.
- L’endpoint
-
Confirmation / persist
- Quand l’utilisateur clique sur "Enregistrer", la web UI déclenche
POST /scrape/commitavec l’objet snapshot. - Le backend réinsère les données dans la base (
pricewatch/app/core/io.py) et l’API/productsou/enqueuepeut ensuite réafficher ou re-scraper ce produit.
- Quand l’utilisateur clique sur "Enregistrer", la web UI déclenche
-
Cycle de rafraîchissement
- Le frontend peut aussi appeler
/enqueuepour forcer un nouveau scrap d’une 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 viaGET /products.
- Le frontend peut aussi appeler
-
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.