# devimco — Devimco Appartements - site: https://devimco.com/appartements (pages projets) + API Planpoint (app.planpoint.io/api/projects|groups/find, POST JSON) - méthode: json-api - annonces: 498 → 498 - couverture après (sur 498 annonces): prix 100%, adresse 100%, dispo 100%, superficie 99.8%, commodités 99.8% - fixture: ok · test: ok ## Champs extraits - Unités : API Planpoint (floors[] → units[]) — name, price, availability, deliveryDate, bedrooms, bathrooms, orientation, images/layoutGallery, inclusions. - unit_type : NOUVEAU — champ structuré `type` de l'API (« 3.5 » → 3½), avec repli sur le nb de chambres (+2). Corrige les unités où bedrooms est approximatif. - area_sqft : NOUVEAU — champ structuré `squareFeet` posé directement (avant : seulement « 570 pi² » dans amenities, parsé centralement). - furnished : NOUVEAU — booléen explicite `furnished` de l'API (true/false, jamais deviné). - details : NOUVEAU — mapping des jetons structurés de `inclusions` (« internet, electricity, heating, stove, refrigerator, dishwasher, washer, dryer… ») vers inclusions{}/appliances{}/balcony/ac. Corrige notamment `refrigerator` → fridge que la normalisation centrale ne reconnaissait pas. - address : projet Planpoint, avec NOUVEAU repli sur l'adresse affichée par la page Devimco (lien Google Maps `?query=…`) — répare Maestria Tour B et Hexagone 2 (78 annonces sans adresse → « 1245 Rue de Bleury, Montréal », « 101, Rue Murray, Montréal »). - lat/lng du projet ; étage + orientation dans description (« Étage 3 — Wellington ») ; bathrooms et « Meublé » dans amenities. ## Champs indisponibles à la source - Animaux : aucune mention par unité dans l'API ni sur les pages. - Secteur fin par unité (on utilise le secteur de la page projet : Griffintown, Centre-ville, Quartier DIX30, Vieux-Longueuil). - Adresse par tour pour les phases groupées (l'API laisse `address` vide sur certaines phases ; on utilise l'adresse de la page projet, commune au complexe). ## Fragilités - API Planpoint non documentée (POST {namespace, hostName} / {namespace}) : un changement de plateforme de Devimco casserait tout. - Détection des iframes par regex sur l'URL app.planpoint.io (projet vs groupe /g/). - Les unités « Unavailable », « Reserved » ou unitPriceTBD sont exclues (voulu). - ~500 unités par sync : tout vient de ~9 pages + ~10 POST JSON, pas de page détail. ## Améliorations apportées - 78 adresses manquantes réparées (lien Maps de la page projet en repli). - unit_type depuis le champ `type` exact de l'API. - area_sqft et furnished posés comme champs structurés explicites. - details dérivés des jetons d'inclusions de l'API (fridge/washer_dryer/ac/balcony… y compris `refrigerator` que les règles centrales ratent). ## Échantillon avant/après Alexander Phase 1 Appartements — unité 312 - avant : 2090.0 | 3½ | Disponible : 2026-08-06 | now | 763 (dérivé du texte) | pets=None | furnished=None | details={"inclusions":{"heating":true,"electricity":true,"internet":true},"appliances":{"stove":true,"dishwasher":true,"washer_dryer":true},"balcony":true,"floor":3} | 2255 René-Lévesque Blvd W, Montreal - après : 2090.0 | 3½ | idem | now | 763 (squareFeet API) | furnished=false (explicite) | details={…idem…, "appliances":{…,"fridge":true},"furnished":false} | même adresse Maestria Tour B Appartements — unité 506 - avant : prix ok | 3½ | Disponible | now | 568 | address="" (API vide) - après : prix ok | 3½ | Disponible | now | 568 | address="1245 Rue de Bleury, Montréal" (lien Maps de la page projet)