Skip to content
# gestion_legrand — Gestion Le Grand
- site: https://gestionlegrand.ca (WordPress + Elementor)
- méthode: API wp-json — articles de la catégorie « Location » (1 requête) + grille /a-louer/ pour les vignettes (1 requête)
- annonces: 5 (appartements ; l'agence loue aussi des maisons quand dispo — même catégorie)
- couverture (sur 5 annonces): prix 100%, dispo 100%, type 100%, ville 100%, secteur 100%, images 100%, description 100%, adresse 40% — superficie dans le texte (935 pi², 1 500 pi² : parse_area_sqft au finalize)
- fixture: ok (2 requêtes) · test: ok (2 verts)
wp-json/wp/v2/posts?categories=28 (catégorie « Location », _fields
id,link,title,content) :
- id de post WordPress → external_id stable ;
- titre « 3 ½ – Place des Bâtisseurs, Drummondville » → title ; le format
d'unité en tête → unit_type ; la ville après la dernière virgule → city
(repli « Drummondville » : tout le parc y est — la catégorie Location
l'affirme : « Vérifiez nos locations disponibles à Drummondville ») ;
- contenu de l'article (paragraphes dédupliqués) → description ; on y lit :
- « Prix : 1 200 $ / mois » → price_label/price ;
- le paragraphe « Disponible maintenant » / « Disponible dès juin
2026 !! » → availability (texte source) ;
- « situé au 140, rue Raymond » → address (seulement si présent) ;
- « secteur … Saint-Nicéphore » → sector.
- Vignettes : la grille Elementor de /a-louer/ mappe post- → img
data-src (lazy-load LiteSpeed) — nécessaire car l'API média renvoie
rest_forbidden pour une partie des pièces jointes.
- Superficie et inclusions (déneigement, tonte, borne de recharge…) restent
dans la description : parse_area_sqft/textmine les structurent au
finalize().
# Champs indisponibles à la source
- GPS : jamais publié.
- Adresse civique complète : publiée seulement pour Place des Bâtisseurs
(« 140, rue Raymond ») ; les autres articles ne donnent que la rue dans
le titre (rue Chapleau, boul. Saint-Joseph, rue Denise-Marleau).
- Une seule photo par annonce côté REST/grille (les galeries des pages
articles sont des carrousels Elementor non requêtés pour rester à
2 requêtes/sync).
# Fragilités
- L'id de la catégorie « Location » (28) est codé en dur : si l'agence
recrée la catégorie, l'API renverrait une liste vide — visible au sync.
- Prix/adresse/secteur extraits du texte libre par regex : un changement de
formulation (« Loyer : » au lieu de « Prix : ») ferait retomber ces champs
à vide (jamais deviné) — le test de fixture le détecterait.
- « Disponible 1 er juillet 2026 » : l'exposant « er » du HTML insère une
espace (texte source tel quel ; parse_availability_date s'en accommode).
# Échantillon
- 2581 : 3½ – Place des Bâtisseurs, 1 200 $/mois, dispo maintenant,
140 rue Raymond, secteur Saint-Nicéphore, ascenseur.
- 1645 : 4½ – rue Chapleau, 1 590 $/mois, dispo maintenant, 935 pi²,
2 chambres.
- 1483 : 5½ – rue Denise-Marleau, 1 550 $/mois, dispo 1er juillet 2026,
1 500 pi², 3 chambres.