SPB Git

spb/lou-ka Public

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

HTML 99.7%
4.1 KB

# utile — UTILE (logement étudiant, OBNL)

  • site: https://www.utile.org/en/immeubles (+ pages immeuble et pages CMS /en/inclusions/---inclusions)
  • méthode: html (+ micro-pages CMS d'inclusions via cache détail)
  • annonces: 16 → 16
  • couverture après (sur 16 annonces): prix 100%, adresse 100%, dispo 100%, superficie 0%, commodités 100%
  • fixture: ok · test: ok

# Champs extraits

  • Prix « From $x/month » (price_from), typologie (Studio, n bedroom -> n+2½), adresse + secteur (hero c-location-tag).
  • Géolocalisation structurée : lat/lng + adresse de secours depuis le marqueur carte .main-building-data (attributs data-lat/data-lng/data-address).
  • Statut corrigé : lu dans le tag visible du hero (.c-location-tag) — avant, le connecteur prenait le DERNIER tag visible de la page, qui provient des cartes « autres projets » du bas de page (statut d'un autre immeuble). Saint-Patrick passait à tort de « En location » à « Complet (prochaine période) ».
  • Inclusions réelles par immeuble : la page immeuble utilise Webflow CMS-nest (listes globales filtrées côté client), mais la page CMS /en/inclusions/<slug>---inclusions expose les slugs d'équipement par groupe (inclus appartement / immeuble / en sus / non inclus). Une vraie requête par immeuble, mise en cache via self.detail() (clé = hash de la page immeuble), plafond 30.
  • Amenities dérivées vers details : chauffage, électricité, eau chaude, internet, cuisinière, frigo, ascenseur, buanderie (en sus), stationnement souterrain (en sus), non meublé…
  • « Renting from » (stats hero) ajouté en tête de description.

# Champs indisponibles à la source

  • Superficie (aucun pi²/m² nulle part), date de disponibilité par unité (seulement Complet / En location + « Renting from » anglais), étage, animaux, prix exacts par unité (fourchettes « From »).

# Fragilités

  • Classes Webflow (c-building-apartment__collection-item, c-location-tag, c-inclusions__link, main-building-data) : un redesign casserait le parsing.
  • Slugs d'équipement avec coquilles à la source (« ascenceurs ») : mappés explicitement ; nouveau slug inconnu -> libellé de repli sans accents.
  • « Stationnement à vélo » renommé « Espace vélos » pour ne pas être classé stationnement auto par la normalisation.

# Améliorations apportées

  • Correction du statut d'immeuble (bug : mauvais tag balayé) — 2 annonces Saint-Patrick passent de « Complet (prochaine période de location) » à « En location ».
  • lat/lng structurés (16/16), inclusions réelles par immeuble (remplacent 4 commodités codées en dur), « Renting from » en description, détails inclusions/ascenseur/etc. dérivés.
  • 2026-08-08 — Expansion provinciale (lot 0) : le filtre « adresse contient Montréal » excluait tous les immeubles hors Grand Montréal (dont Jean-XXIII à Trois-Rivières, en location). Remplacé par l'extraction de la ville en fin d'adresse + table _CITY_CANON (« Québec City » → « Québec »…) ; ville inconnue → immeuble ignoré (rien d'inventé). +12 annonces : Jean-XXIII (Trois-Rivières, 2 typologies), Cité-Universitaire + Saint-Sacrement (Québec, 8), Rimouski (2) ; Sherbrooke (Pacifique) encore sans cartes (en développement). 16 → 28 annonces. Fixture réenregistrée, 2 tests verts.

# Échantillon avant/après

  • Avant : UTILE Parc La Fontaine — Studio | 843$ | Complet | amenities génériques codées en dur | details={fridge,stove,furnished:false} | lat/lng NULL
  • Après : UTILE Parc La Fontaine — Studio | 843$ | Complet | 23 commodités réelles | details={inclusions:{heating,electricity,hot_water,internet}, appliances:{fridge,stove}, elevator, laundry, furnished:false,…} | 45.5291,-73.5656

# Lacunes génériques de normalisation notées

  • Les dates anglaises « Month Day(st|th), Year » (ex. « April 1st, 2027 ») ne sont pas parsées par parse_availability_date, et pire : le jour/année étant ignorés, « april » seul donnerait une date passée -> "now". C'est pourquoi « Renting from » est placé en description et non en availability.
  • Les règles parking classeraient « stationnement à vélo intérieur » comme stationnement auto intérieur.