SPB Git

spb/lou-ka Public

Lou·Ka — tous les logements à louer du Québec, un seul endroit.

HTML 99.7%
4.0 KB

# mellem — Mellem (Groupe Mach) — Gatineau + Montréal

  • site: https://www.mellem.ca/projets/manoir-des-trembles (+ /grace-dart, /ville-marie)
  • méthode: html (Nuxt SSR) → module « plans » Livya/Realvuu (app.livya.com, Next.js SSR) dont le payload embarque l'inventaire JSON complet
  • annonces: 84 unités disponibles — Gatineau 26 (Manoir-des-Trembles, 189 unités) + Montréal 58 (Grace Dart 25, Ville-Marie 33)
  • couverture (sur 84 annonces): prix 100 %, superficie 100 %, adresse 100 %, lat/lng 100 %, dispo 100 %, commodités 100 %, images 100 %, type d'unité 96 %
  • fixture: ok (7 requêtes) · test: ok (2 verts)

# Champs extraits

  • Découverte : sitemap.xml → pages /projets/<slug> (aucune liste codée en dur) ; chaque page porte <div data-module="plans" data-project="mellem-manoir-des-trembles" data-entity="<uuid>" data-lang="fr"> → URL du module https://app.livya.com/fr/maitre-carre/projects/<project>/plans/<entity>?noLayout=1. Seul maitre-carre (compte Livya du groupe, publié dans le bundle du site) est une constante de routage.
  • Le module Next.js diffuse son payload en flux RSC (guillemets échappés) : le tableau units est repéré, dé-échappé puis décodé. Attention, la clé units sert aussi au dictionnaire des libellés d'interface → seul le tableau dont le 1er élément porte unitId est retenu.
  • Par unité : number (→ external_id = manoir-des-trembles-812), availability (AVAILABLE seulement ; RESERVED/NOT_AVAILABLE exclues), rental (les unités en vente sont écartées), rentalPrice (loyer exact, pas « à partir de »), unitSize (pi²), balconySize, rooms (4.5 → 4½), roomsBed/roomsBath, typeName, floorDisplayName + floorNumber (→ details.floor), address + city + postalCode (adresse complète reconstruite), latitude/longitude, typeImages (plan/rendu de la typologie).
  • Ville prise dans la donnée de l'unité (Gatineau / Montréal) : le connecteur ne suppose rien à partir du projet.
  • Commodités : liste « Plus de commodités pour mieux vivre » de la page projet (section.ui-sections-projects-list-inclusion) — Internet, électricité et eau chaude, 5 électroménagers, air climatisé et thermopompe, habillage des fenêtres, chute à déchet/compost, application mobile, caméras, équipe sur place, salle de colis. Les autres listes de la page (commerces du quartier) sont exclues.

# Champs indisponibles à la source

  • Secteur : non publié par unité (l'adresse et les coordonnées permettent l'enrichissement quartier en aval) → sector vide, pas de secteur déduit d'un code postal.
  • Date de libération : futureAvailability est null partout (les unités disponibles le sont immédiatement) → availability = "Disponible".
  • Animaux/meublé : non exposés (les inclusions viennent de la liste de commodités).
  • 3 unités sur 84 sans type d'unité : leur champ rooms vaut 0.5 (incohérence de la source) et leur code de type ne porte pas de typologie ; quand le code l'indique (« A-2.5 »), la typologie est relue dedans (4 unités → 2½), sinon le champ reste vide.

# Fragilités

  • Deux dépendances en série (mellem.ca puis app.livya.com) : un changement de l'intégration Livya casse la sync (0 annonce, autres sources intactes).
  • Le payload RSC est du JSON échappé dans du HTML : le décodage est borné par raw_decode et protégé par try/except ; toute évolution du format se verra immédiatement dans la fixture.
  • Le même connecteur alimente 2 immeubles montréalais : un ajout de projet au sitemap est capté automatiquement (max_projects = 8).

# Échantillon

  • mellem:manoir-des-trembles-812 | Manoir-des-Trembles — Unité 812 | 256 Boulevard Saint-Raymond, Gatineau, J9A 3G7 | 3½ | 2 299 $ par mois | 674 pi² | balcon 72 pi² | étage 8 | 45.4278/-75.7624 | 11 commodités
  • mellem:manoir-des-trembles-206 | 2½ (relu dans le code de type « A-2.5 ») | 1 557 $ | 499 pi²
  • mellem:grace-dart-605 | Grace Dart — Unité 605 | 6085 Rue Sherbrooke Est, Montréal, H1N 1C2 | 3½ | 2 196 $ | 648 pi²