# groupe_dallaire — Groupe Dallaire (Faubourg du Moulin) - site: https://faubourgdumoulin.ca/disponibilite/ (JetEngine admin-ajax `get_listing` + pagination `jet_smart_filters`) - méthode: json-api (AJAX WordPress) + fiches d'unité html - annonces: 257 → 257 - couverture après (sur 257 annonces): prix 100%, adresse 100%, dispo 100%, superficie 100%, commodités 100% - fixture: ok · test: ok ## Champs extraits - Cartes AJAX : numéro d'unité, étage (désormais → `details.floor` structuré), prix (« 2475$ /mois* », légende du site « * Chauffé, éclairé, climatisé, stationnement int. » reportée dans `price_label`), date de disponibilité (« Disponibilité : juillet 2026 »), promotion, plan de l'unité (image), complexe déduit du slug. - Fiche d'unité (nouveau, via `self.detail` + cache BD, budget 150 vraies requêtes/sync) : - **type d'unité** (« 5½ TYPE D'UNITÉ ») — avant : consulté seulement pour les unités sans type déduit du nom du plan, sans cache ; - **superficie nette** (champ « Pieds carrés » / « Superficie nette: 1098 pi² ») → `area_sqft` structuré (107 → 257 annonces couvertes, 100 %) ; - **inclusions réelles** (répéteur JetEngine sous « Incluant » : Stationnement ext/int, Eau chaude, Internet haute vitesse, Forfait télé 4k, Entrée laveuse-sécheuse, Aires communes) — remplacent la liste générique codée en dur (qui reste en repli tant que la fiche n'est pas en cache) ; - plan du niveau (`NIVEAU_x.png`) ajouté aux images. ## Champs indisponibles à la source - Adresse civique exacte par immeuble (le site ne donne que « rue Lionel-Audet ») ; pas de lat/lng. - Animaux, meublé, description rédigée : non publiés par unité. - Jour précis de disponibilité (mois/année seulement). ## Fragilités - L'appel AJAX dépend des `page_settings` du widget (post_id 105, element_id cb310a3) : un remaniement Elementor casserait la pagination. - Le type d'unité vient d'un texte à côté de « TYPE D'UNITÉ » sur la fiche ou du nom de fichier du plan — fragile aux renommages. - Budget 150 fiches/sync : sur une flotte de 257, la couverture complète demande 2 syncs (le cache BD prend ensuite le relais). ## Améliorations apportées - Fiches d'unité désormais visitées via le **cache BD** (`self.detail`, clé = hash de la carte) pour TOUTES les unités, avec budget de 150 vraies requêtes (exception au-delà → pas de cache pollué). Avant : jusqu'à 180 requêtes non mises en cache à chaque sync, uniquement pour le type. - `area_sqft` 127 → 257 (100 %), `unit_type` complété pour toutes les unités, inclusions réelles par unité (ex. certaines fiches ajoutent chauffage/clim), `details.floor` structuré depuis la carte, plan du niveau en image. ## Échantillon avant/après - Avant : « Faubourg du Moulin (Sonora) — Unité 101 (5½) » — 2475 $, area NULL, amenities génériques codées en dur, pas de floor. - Après : même annonce — area_sqft 1098 (« Pieds carrés »), amenities réelles (6 items dont « Forfait télé et enregistreur 4k »), details.floor=1, plan de niveau ajouté. - Après : « Noroît — Unité 102 (3½) » — area_sqft 708, inclusions réelles avec chauffage + ac + storage dérivés.