EN
Copied
Modules

Avis

Module d'enrichissement qui extrait le flux complet d'avis Google pour chaque point d'intérêt d'une liste.

Purpose

Module d'enrichissement : transforme une liste de POI (avec lien Google Maps) en flux à plat d'avis — auteur, note, date, texte, drapeau de réponse propriétaire. Typiquement chaîné après scrap.

Inputs

Corps JSON avec une liste d'items POI. Chaque item doit porter un lien Google Maps ; les autres colonnes sont conservées comme contexte mais ignorées pour l'extraction.

Field Type Required Description
items list yes Lignes POI. Entre 1 et 10000 entrées par job.
source_job_id string no UUID du job amont (typiquement un job scrap). Utilisé pour la traçabilité.

Chaque entrée d'items est un objet. La seule clé requise est lien_google_maps. Les autres clés sont propagées inchangées et rattachées à chaque ligne d'avis produite.

Item key Type Required Notes
lien_google_maps string yes URL canonique Google Maps du POI. Les items sans ce champ sont rejetés à la validation.
nom string no Nom de l'établissement, propagé à chaque ligne d'avis.
adresse string no Adresse postale, propagée.
telephone string no Propagé.
site_web string no Propagé.

Exemple de requête :

{
  "source_job_id": "9d2f8e0a-1c4b-4f7e-a2b9-3d6a5e10c8f1",
  "items": [
    {
      "nom": "Boulangerie Centrale",
      "adresse": "12 rue de la Paix, 75002 Paris",
      "lien_google_maps": "https://www.google.com/maps/place/..."
    },
    {
      "nom": "Garage Dupont",
      "lien_google_maps": "https://www.google.com/maps/place/..."
    }
  ]
}

Outputs

Une ligne par avis (pas par POI). Le contexte POI est dupliqué sur chaque ligne.

Column Type Description
nom string Nom de l'établissement (depuis l'entrée).
adresse string Adresse de l'établissement (depuis l'entrée).
lien_google_maps string URL POI source.
reviewer_name string Nom public de l'auteur de l'avis.
rating integer Note en étoiles, 1–5.
date string Date relative telle que publiée par Google (ex. "il y a 2 mois").
review_text string Corps de l'avis.
owner_replied boolean true quand le propriétaire a posté une réponse publique.
owner_reply_text string Corps de la réponse du propriétaire, vide sinon.

Deux formats d'export : CSV (UTF-8, séparateur virgule, quoting RFC 4180) et XLSX. Le CSV est canonique.

Lifecycle

Cycle de vie standard : voir Jobs & lifecycle.

Pipeline

Slot Value
category enrich
needs poi_list (nécessite lien_google_maps)
produces reviews_list, owner_replied

Amont : scrap, ou tout import avec colonne lien_google_maps valide. Aval : typiquement filter et sort pour restreindre par note, réponse propriétaire, ou récence.

Endpoints

Spécifique au module :

POST /api/jobs/reviews

Corps : ReviewsJobCreateRequest (voir Inputs). Retourne le job créé en pending.

Endpoints job génériques :

Method Path Purpose
GET /api/jobs/{job_id} Récupère l'état et les métadonnées du job.
GET /api/jobs/{job_id}/events Flux SSE des événements de progression.
GET /api/jobs/{job_id}/download Téléchargement du CSV/XLSX produit.
POST /api/jobs/{job_id}/cancel Demande d'annulation.

Limits

Quotas globaux : voir /docs/fr/concepts/limits. Le module reviews consomme environ 0.4 / 3700 EF par POI. Bornes payload : 1 à 10000 items par job. Pas de plafond côté client sur le nombre d'avis par POI.

Errors

Condition Outcome
Aucun item ne porte de lien_google_maps La création échoue avec HTTP 400 et message Aucun établissement valide.
Coût estimé supérieur au quota per-job La création échoue avec HTTP 400 et un message explicite Quota dépassé.
POI sans avis publics Le POI est traité ; zéro ligne émise pour lui. Le job réussit malgré tout.
Source temporairement indisponible pour un POI Ce POI est sauté et remonté dans le résumé du job ; les autres POI continuent.
Source injoignable sur l'ensemble du run Le job termine en failed avec l'erreur amont remontée sur le job.

What's next