# ledomaine — Les Habitations Le Domaine (Mercier, Montréal) - site: https://www.ledomaine.ca/ (pages /appartement//) - méthode: html (micro-site WordPress, une page par typologie) - annonces: 5 → 5 - couverture après (sur 5 annonces): prix 100%, adresse 100%, dispo 0%, superficie 0%, commodités 0% - fixture: ok · test: ok (2 passed) ## Champs extraits - Par typologie (2½, 3½, 4½, 4½ sous-sol, 5½) : titre h1, type d'unité, prix « À partir de NNN $/mois » (meta description ou corps), description complète du bloc « Description de l'appartement » (inclusions « rien d'inclus », entrée laveuse/sécheuse, planchers bois franc, balcon/pas de balcon, rangement, « Les animaux sont interdits », téléphone), galerie photos + plan (8 à 46 images). - Adresse et secteur constants du micro-site (2990, Avenue de Granby, Mercier–Hochelaga-Maisonneuve). - Dédup des alias (/appartement-2/ → canonical). - `details.contact.phone` dérivé de la description (514-256-9037). ## Champs indisponibles à la source - **Disponibilité** : jamais publiée (« Pour connaître les disponibilités, veuillez communiquer avec nous ») → availability="" honnête. - **Superficie** : jamais publiée. - **Unités individuelles** : le site n'expose que des typologies « à partir de », pas d'inventaire d'unités. - lat/lng : la page « Situer » contient un LatLng(45.400994, -71.882428) qui pointe… vers Sherbrooke (valeur par défaut du thème) — non utilisé. - Pas de liste de commodités structurée (tout est en prose dans la description) → amenities=[] ; les détails sont dérivés de la description par normalize. ## Fragilités - Prix uniquement dans du texte libre (meta description / corps) via regex « à partir de NNN $ ». - La page ne dit pas si une typologie est réellement disponible — les 5 pages existent en permanence. - Site à ~5 pages : tout changement de gabarit WP casse les regex ; l'extraction de description a maintenant un chemin structurel (.text-wrapper) + repli textuel. ## Améliorations apportées - Extraction de la description rendue **structurelle** (paragraphes du `.text-wrapper` sous le h2 « Description de l'appartement ») avec repli sur l'ancien découpage regex — capture désormais garantie de la politique animaux et de « rien d'inclus » même si l'ordre des blocs change. - Audit complet de la source (pages typologies, /nos-services/, /situer-le-domaine/, wp-json) : confirmé qu'aucune donnée additionnelle exploitable n'existe (pas d'API, pas de coordonnées valides, pas de disponibilité). ## Échantillon avant/après **Appartement 2 et demi** (660 $ « à partir de ») - avant : description tronquée par regex texte, details=`{"appliances":{"washer_dryer_hookup":true},"balcony":true,"contact":{…},"price_from":true}` - après : description structurelle identique mais robuste ; mêmes champs (la source n'offre rien de plus) — `balcony:true` reste un faux positif de normalisation (voir ci-dessous) ## Lacunes génériques de normalisation détectées - « **Pas de balcon** » (2½) déclenche quand même `balcony=true` : la règle `balcony` n'a aucun motif négatif (`pas de balcon|sans balcon|no balcony`). - « **Les animaux sont interdits** » n'est pas reconnu par `_PETS_NO_RE` (le motif exige « animaux interdits » adjacents ; « animaux **sont** interdits » passe entre les mailles) → pets=None au lieu de "non" sur les 5 annonces. - « **rien d'inclus** » n'est pas exploité : pourrait valoir `inclusions{heating:false, electricity:false, hot_water:false}`.