spb/lou-ka Public
Lou·Ka — tous les logements à louer du Québec, un seul endroit.
HTML 99.7%
1# lakle — La Klé (Cité Verte)2- site: https://lakle.ca/phase-1-occupation-immediate/ (+ /contact pour adresses/coordonnées)3- méthode: json-api (sélecteur de plans WP `/wp-json/do-selecteur-plans/v1/unite`) + html (cartes phases 2-3)4- annonces: 26 → 465- couverture après (sur 46 annonces): prix 57%, adresse 100%, dispo 100%, superficie 100%, commodités 100%6- fixture: ok · test: ok (2 passed)78## Champs extraits9- **Sélecteur de plans (tour phase 4, 26 unités)** : `<polygon class="disponible">` (numéro, étage, type, prix) + API JSON par unité : prix (`montant` + `montant_suffixe` « + taxes »), type, **superficie habitable structurée → `area_sqft` explicite** (distincte de la terrasse), superficie terrasse/balcon, style, nb chambres, date libre (`a_partir`), plan PDF, galerie, promotion. `details.floor` depuis `data-etage` (structuré).10- **Cartes phases 2 et 3 (nouveau — 20 unités)** : `ul.liste-unite-disponible > li` : nom d'unité (B16, H, C et Ci…), phase, « 1214pi² - 3 chambres » (type + superficie dérivés par finalize), texte marketing, mention « Disponible en octobre / dès maintenant » → availability, photo du plan, PDF.11- **Page /contact (nouveau)** : marqueurs Google Map structurés par phase → **adresse civique avec code postal + lat/lng** par phase (phase 4 : Av. Ernest-Gagnon G1S 0E4 ; phase 3 : 475 Ernest-Gagnon ; phase 2 : 1180 Louis-Adolphe Robitaille) — avec repli constant si la page change.12- Commodités du complexe (liste « Toutes les unités incluent » de l'accueil, vérifiée) : électroménagers, électricité, chauffage/climatisation centrale, piscine intérieure, salle d'entraînement, toiles solaires, vélos intérieurs, stationnement intérieur en option, interphone, puce d'accès, caméras.1314## Champs indisponibles à la source15- **Prix des unités phases 2-3** : aucun prix par unité (les tuiles « à partir de 1575$/1945$/2615$ » sont des filtres projet-entiers, pas rattachées à ces unités — non utilisées). → 20/46 sans prix, fidèle à la source.16- Politique animaux / fumeur : jamais mentionnée.17- Meublé : non mentionné.18- Étage des unités phases 2-3 (seulement « en hauteur » en texte libre).1920## Fragilités21- Le sélecteur de plans est associé à la **phase 4** par déduction (calendly « la-kle-phase-4 », visuels phase-4) alors que l'URL dit « phase-1-occupation-immediate » (slug historique) — à revalider si le site restructure.22- `external_id` des cartes = `p<phase>-<slug du nom>` (ex. `p3-b16`) : stable tant que le nom d'unité ne change pas.23- La disponibilité `a_partir` (« Libre le 8 août 2026 ») semble générée avec la date du jour côté serveur → normalisée « now ».24- Les cartes sans mention « Disponible … » reçoivent « Disponible » (la section s'intitule « Découvrez nos unités disponibles »).2526## Améliorations apportées27- **Bug corrigé** : `area_sqft` prenait la superficie de la **terrasse** (finalize prend le min des superficies trouvées dans la description : 161 pi² de balcon < 682 pi² habitables). Désormais `superficie_habitable` structurée de l'API → 100 % correct.28- +20 annonces : unités disponibles des phases 2 et 3 (cartes), auparavant totalement ignorées.29- Adresse civique réelle + code postal par phase (avant : « Cité Verte, Québec ») et **lat/lng** (avant : géocodage sur adresse vague).30- `details.floor` structuré depuis `data-etage`.31- Liste des commodités du complexe complétée et vérifiée contre le site (11 items au lieu de 5).3233## Échantillon avant/après34**La Klé — Unité 103 (3½)** (1845 $)35- avant : area_sqft=161 (terrasse !), address=`Cité Verte, Québec`, lat/lng absents, amenities=536- après : area_sqft=682, address=`Av. Ernest-Gagnon, Québec, G1S 0E4`, lat=46.798431/lng=-71.25187, details.floor=1, amenities=113738**La Klé — Unité B16 (Phase 3)** (nouvelle annonce)39- avant : absente40- après : unit_type=5½ (3 chambres), area_sqft=1214, availability=`Disponible en octobre en hauteur` → 2026-10-01, address=`475 Ernest-Gagnon, Québec, G1S 0E4`, lat/lng phase 3, plan PDF + photo4142## Lacune générique de normalisation détectée43- `parse_area_sqft()` retourne le **min** de toutes les superficies d'un texte : quand une description contient l'appartement ET son balcon/terrasse (« Superficie 682 pi² | Balcon 161 pi² »), la terrasse gagne. Un indice de contexte (mots balcon/terrasse à proximité → exclure) éviterait ce piège pour les connecteurs qui n'ont pas de champ structuré.44