# niddamour — Nid d'Amour / Karen Cadet inc. - site: https://niddamour.ca/ (config source.immo) -> API https://api-v1.source.immo/api/listing/view//fr/items (+ fiches ref_number) - méthode: json-api - annonces: 14 → 14 - couverture après (sur 14 annonces): prix 100%, adresse 100%, dispo 100%, superficie 29%, commodités 71% - fixture: ok · test: ok ## Champs extraits - Liste API (inchangé) : statut AVAILABLE + for_rent + RESIDENTIAL, prix rent structuré, chambres -> type d'unité, ville/quartier via dictionnaire (« Montréal (Le Plateau-Mont-Royal) »), filtre régions CMM, lat/lng structurés. - Fiche API (désormais via self.detail, cache BD) : - adresse civique + app. + code postal (nouveau : postal_code) ; - description + addendum HTML (DÉTAILS / SERVICES À PROXIMITÉ, balises retirées) + nombre de sdb -> description enrichie (nouveau) ; - champ structuré `inclusions` -> amenities brutes (lignes) + details.inclusions{…: true} ; - champ structuré `exclusions` -> details.inclusions{…: false} explicites (nouveau — « Électricité, chauffage et eau chaude » exclus ne deviennent plus positifs même si l'addendum les mentionne) ; - étage de l'unité principale (`units[].level`) -> details.floor (nouveau). ## Champs indisponibles à la source - Superficie : `dimension` toujours vide (building/land/units) — seule la description la mentionne parfois (4/14 dérivées par la normalisation). - Date de disponibilité précise (seulement le statut AVAILABLE -> « Disponible »), animaux, fumeur ; `attributes` et `rooms` vides chez ce compte. - 4/14 annonces sans texte `inclusions` à la source -> amenities vides. ## Fragilités - Dépend de la config publique source.immo lue sur la page d'accueil (`config_path`) : si le site WordPress change, plus de clés API. - API non documentée (entêtes x-si-*) ; le format des dictionnaires (city/region/subcategory) peut évoluer. - L'URL publique /propriete// est une route Angular (404 serveur) — inchangée pour garder les uid stables. ## Améliorations apportées - Fiches détaillées via self.detail(...) (cache BD, clé = hash JSON de l'item de liste) + plafond de 150 vraies requêtes/sync (avant : 40 fetchs directs à chaque sync). - Adresse avec code postal ; description enrichie (addendum + sdb) ; details.inclusions structurés avec négatifs (exclusions) ; details.floor. ## Échantillon avant/après - Avant : « 5453 Rue Saint-Urbain » — 2500 $, 5½, details `{"inclusions": {"internet": true}, "appliances": {"fridge": true}}` (électricité/chauffage/eau chaude exclus non signalés), pas d'étage, adresse sans code postal. - Après : « 5453 Rue Saint-Urbain, H2T 2W8 » — details `{"inclusions": {"internet": true, "electricity": false, "heating": false, "hot_water": false}, "appliances": {"fridge": true}, "laundry": true, "storage": true, "floor": 1}`, description enrichie (détails de l'appartement, services à proximité, 2 sdb). ## Lacunes génériques de normalisation observées - Aucune nouvelle propre à cette source (les champs `exclusions` sont traités structurellement dans le connecteur, comme prévu par l'architecture).