# copley — Groupe Copley - site: https://www.groupecopley.com/properties (Webflow, pagination ?15d7d54c_page=N) - méthode: html - annonces: 52 → 52 - couverture après (sur 52 annonces): prix 100%, adresse 100%, dispo 100%, superficie 100%, commodités 100% - fixture: ok · test: ok ## Champs extraits - title, city/neighbourhood, type, bedrooms, bathrooms, prix : champs `fs-cmsfilter-field` des cartes `div.property_item` (carte liste). - area_sqft : NOUVEAU — bloc « 1573 sqft » de la carte (valeur structurée du CMS). - lat/lng : NOUVEAU — divs `.data---latitude` / `.data---longitude` embarquées dans la carte. - availability : bandeau de la carte (« Available »), raffiné par la fiche : le fil d'Ariane expose une variante datée « Available Jun 2026 » (fiche détail). - amenities : NOUVEAU — liste d'icônes de la fiche (`.property-header_features-item` : Laundry, Balcony, Pool, Gym, Storage Locker, Garage…) + caractéristiques principales (`.main-features_item` : « Heating: Electric », « Cooling: Central Air », « Parking: 1 space », « Backyard ») + « X salle(s) de bain » depuis la carte. - details : NOUVEAU — ac (label structuré « Cooling » non vide) et parking.available (label « Parking ») posés explicitement ; le reste dérivé centralement des amenities. - description : fiche détail (`.property-header_description`). - images : fiche détail (CDN Webflow, variantes responsive « -p-NNN » exclues). - address : composée « , , QC » (le CMS ne publie que la rue en title). ## Champs indisponibles à la source - Animaux, meublé, étage : jamais affichés. - Inclusions au bail (chauffage/électricité/eau chaude incluses ou non) : le site affiche le TYPE de chauffage (« Heating: Forced Air »), pas son inclusion dans le loyer. - Date de disponibilité précise au jour : seulement « Mois AAAA » quand ce n'est pas immédiat. ## Fragilités - Webflow : classes générées (`fs-cmsfilter-field`, `.data---latitude`, paramètre de pagination `?15d7d54c_page=`) — un re-publish du site peut les changer. - La visibilité conditionnelle Webflow (`w-condition-invisible`) est incohérente sur les tags de disponibilité (le JS client corrige à l'affichage) : on préfère la variante datée quand elle existe, sinon « Available ». - Le site mélange Montréal/Toronto/Ottawa : filtre sur city=Montreal (les cartes hors périmètre sont ignorées). - LACUNE GÉNÉRIQUE : « Cooling: Central Air » n'est reconnu par aucun motif `ac` central (contourné ici par un details.ac explicite car le label est structuré) ; « Heating: Forced Air » est interprété centralement comme inclusions.heating=true alors que c'est un type de chauffage — un motif « heating: » ≠ « heating included » serait plus juste. ## Améliorations apportées - Superficie (100% des annonces), salles de bain, lat/lng extraits des cartes. - Fiches détail migrées vers le cache BD `self.detail()` (clé = sha1 prix|dispo|type|pi²) : les re-syncs ne revisitent plus les 52 fiches. - Disponibilité remplie partout (avant : 43/52 vides) — bandeau carte + variante datée fiche. - Commodités (avant : 0/52) + details.ac / details.parking. - Adresse enrichie de la ville (avant : rue seule) ; description via le bloc dédié. ## Échantillon avant/après 447 Mount Stephen - avant : 3500.0 | 5½ | dispo="" | date=None | area=None | pets=None | details={} | addr="447 Mount Stephen" | amenities=[] - après : 3500.0 | 5½ | "Available" | now | 1573 pi² | pets=None | details={"inclusions":{"heating":true},"appliances":{"fridge":true},"balcony":true,"parking":{"available":true},"ac":true} | addr="447 Mount Stephen, Westmount, QC" | amenities=[Laundry, Kitchen Appliances, Light Fixtures, Balcony, Heating: Forced Air, Cooling: Central Air, Parking, Backyard: 2 balconies, 1.5 salle(s) de bain] 2365 Rue des Equinoxes, Suite 515 - avant : 2650.0 | 4½ | dispo="" | date=None | area=None | details={"appliances":{"fridge":true}} | addr="2365 Rue des Equinoxes, Suite 515" - après : 2650.0 | 4½ | "Available Jun 2026" | now (juin passé) | 1031 pi² | details={…,"ac":true,"parking":{"available":true},"pool":…} | addr="2365 Rue des Equinoxes, Suite 515, Montréal, QC" | amenities=[2 salle(s) de bain, Balcony, Ensuite Bathroom, Garage, Gym, Kitchen Appliances, Laundry, Light Fixtures, Pool, Storage Locker, Heating: Electric, Cooling: Central Air, Parking: 1 space, Backyard]