SPB Git

spb/lou-ka Public

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

HTML 99.7%
4.1 KB

# brivia_1sp — 1 Square Phillips (Groupe Brivia)

  • site: https://www.1squarephillips.ca/locatif (+ /galerie + API AJAX /2022/php/ajax_load_plans_*.php)
  • méthode: html + json-api (POST AJAX des plans, phase=rental)
  • annonces: 3 → 3 (une par typologie, uid stables : 1sp-studio / 1sp-1-chambre / 1sp-2-chambres)
  • couverture après (sur 3 annonces): prix 100%, adresse 100%, dispo 100%, superficie 67% (studio : aucune unité dispo), commodités 100%
  • fixture: ok · test: ok (42 requêtes rejouées, POST inclus)

# Champs extraits

  • title, unit_type, price/price_label (« à partir de X $/mois ») : cartes typologie ul.grid3cols de /locatif
  • availability : NOUVEAU — nombre réel d'unités disponibles (« 10 unités disponibles ») compté via l'API AJAX des plans (unités onsale de chaque étage, phase rental) ; texte générique conservé si aucune unité
  • area_sqft : NOUVEAU — superficie structurée (pi²) de la plus petite unité disponible de la typologie (cohérent avec le prix « à partir de »), lue dans ajax_load_plans_unit.php
  • description : intro « tout inclus » + NOUVEAU liste des unités disponibles avec superficie et balcon (ex. « unité 709 (637 pi² + balcon 97 pi²) »)
  • amenities : NOUVEAU — vraies caractéristiques de l'immeuble scrapées de la section .features (parc canin, débarcadère, hammam, piscine/sauna, salles cardio/musculation/yoga, cotravail, cinéma, stationnement souterrain…) + inclusions de l'intro ; l'ancienne liste codée en dur ne sert plus que de repli
  • details.contact : NOUVEAU — téléphone et courriel structurés (liens tel: / mailto: du pied de page)
  • address : NOUVEAU — code postal ajouté (1205, rue du Square-Phillips, Montréal, QC H3B 3C9)
  • images : perspectives + galerie + NOUVEAU plans PNG des unités disponibles

# Champs indisponibles à la source

  • Prix par unité (uniquement « à partir de » par typologie)
  • Date de disponibilité par unité (statut disponible/loué seulement)
  • Politique animaux explicite (le « parc canin » suggère pet-friendly mais rien d'affirmé — non inventé), meublé, étage de chaque annonce (typologie multi-étages)

# Fragilités

  • L'inventaire passe par des POST ajax_load_*.php non documentés (thème maison) : ~21 requêtes/sync (sélecteur + 20 étages) + 1 fiche par nouvelle unité (cache BD self.detail, clé fixe car les fiches plan sont immuables) — plafond 150 fiches
  • Le statut « onsale » est porté par une classe CSS dans du SVG (class="unit onsale") — regex fragile si le générateur SVG change
  • Les 3 cartes typologie de /locatif restent la source des prix : si la mise en page ul.grid3cols change, les annonces disparaissent
  • La détection onsale est indépendante du paramètre type envoyé à l'API (vérifié) ; seule la légende en dépend

# Améliorations apportées

  • Découverte et exploitation de l'API AJAX des plans (inventaire unité par unité) : disponibilités réelles comptées, superficies structurées, plans en images
  • Amenities réelles scrapées au lieu d'une liste codée en dur
  • Contact structuré (tel:/mailto:), adresse avec code postal
  • POST throttlé (_post_json) réutilisant la session (fixtures rejouables), cache BD des fiches unité

# Échantillon avant/après

1 Chambre locatif — avant : 2040.0 | 3½ | Disponible (tour locative en location) | now | area=∅ | pets=∅ | {"inclusions": {...}, "appliances": {"fridge": true}, "ac": true, "balcony": true, "pool": true, "gym": true, "parking": {...}, "price_from": true} après : 2040.0 | 3½ | 10 unités disponibles | now | area=598.0 | pets=∅ | {"inclusions": {heating, electricity, hot_water, internet}, "appliances": {"fridge": true}, "ac": true, "elevator": true, "balcony": true, "pool": true, "gym": true, "price_from": true, "contact": {"phone": "514-617-9999", "email": "location@1squarephillips.ca"}} + description listant les 10 unités avec pi²

2 Chambres locatif — avant : 2750.0 | 4½ | Disponible (tour locative en location) | now | area=∅ | pets=∅ | {...} après : 2750.0 | 4½ | 9 unités disponibles | now | area=853.0 | pets=∅ | {... , "contact": {...}} + unités listées (ex. unité 310 (1405 pi²))