Skip to content
# 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)
- 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²