SPB Git

spb/lou-ka Public

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

HTML 99.7%
4.1 KB · 48 lines markdown
Rendered Raw Blame History
1# akelius — Akelius Residential (Grand Montréal)2- site: https://rent.akelius.com/en/search/canada/apartment/montreal3- méthode: json-api (TransferState Angular SSR + JSON détail /lettings/marketing/v2/CA/&lt;id&gt;.json)4- annonces: 247 → 2475- couverture après (sur 247 annonces): prix 100%, adresse 100%, dispo 100%, superficie 100%, commodités 100%6- fixture: ok · test: ok (2 passed)78## Champs extraits9- **Carte liste (TransferState de la page de recherche)** : id, adresse (rue, ville, code postal, borough), lat/lng, loyer (`total-rent`), disponibilité (`is-available-from-now-on` / `available-from-date`), superficie (`unit-size`), chambres/sdb, étage, type (loft/apartment), promotion (`free-rent`), photos 400 px.10- **JSON détail** (`/lettings/marketing/v2/CA/<id>.json`, via `self.detail()` avec clé = sha1(loyer, dispo, lastPublishedDate), max 150 nouveaux fetchs/sync) :11  - `pets` structuré (`pets-allowed`: yes/no → oui/non, autre → conditions) ;12  - `furnished` structuré (`furnished-state`) ;13  - `details.inclusions{heating, electricity, hot_water, internet}` (booléens explicites) ;14  - `details.appliances{dishwasher, washer_dryer}` ;15  - `details.ac / elevator / balcony / pool / gym / laundry / construction_year / contact.phone` ;16  - ~30 commodités keyfacts booléennes → libellés français dans `amenities` (climatisation, ascenseur, balcon, buanderie, piscine, chauffage/eau chaude inclus, etc.) ;17  - photos 600 px (remplacent les 400 px de la liste) ;18  - description libre (`free-text`) si présente.1920## Champs indisponibles à la source21- Pas de description marketing rédigée par unité (le keyfact `free-text` est rarement rempli).22- Pas d'info stationnement dans les keyfacts canadiens (ni type ni prix).23- Pas de politique fumeur.24- `pets-allowed` absent sur ~10 % des unités (26/247) — laissé à None.2526## Fragilités27- Le TransferState est encodé avec `&q;` au lieu de `"` et la clé du cache API est un hash variable : on repère la liste d'unités par heuristique (`keyfacts` dans le premier élément).28- Le JSON détail est servi depuis un blob Azure avec BOM UTF-8 : décodage `utf-8-sig` obligatoire (`resp.json()` échouerait).29- Le chemin `/lettings/marketing/v2/CA/…` est déduit du bundle JS (non documenté) — surveiller un éventuel changement de version (v2 → v3).30- 259 unités QC dans le flux : la première synchronisation ne visite que 150 détails (budget), la deuxième complète le reste ; ensuite le cache BD évite tout refetch tant que loyer/dispo/lastPublishedDate ne bougent pas.31- Toronto/Ottawa dans le même flux : le filtre province+ville doit rester à jour si Akelius ajoute des villes QC.3233## Améliorations apportées34- Découverte et intégration du JSON détail par unité (endpoint non documenté trouvé dans le bundle Angular).35- Nouveaux champs : `pets`, `furnished`, `details` structurés (inclusions, électroménagers, ac, ascenseur, balcon, piscine, gym, buanderie, année de construction, téléphone de contact).36- Commodités passées de 2 items génériques (« X pi² », « N sdb ») à la liste réelle des keyfacts vrais, en français.37- Photos upgradées de 400 px à 600 px depuis `documents[]`.38- Visites détail plafonnées (150/sync) et mises en cache via `self.detail()` (clé dérivée du contenu liste).3940## Échantillon avant/après41**4557 Sherbrooke Street West — unité 12** (1795 $, 3½, dispo 2026-10-01, 553 pi²)42- avant : pets=None, details=`{}`, amenities=["553 pi²","1 sdb"]43- après : pets=`oui`, details=`{"inclusions": {"heating": true, "hot_water": true, "electricity": false, "internet": false}, "appliances": {"washer_dryer": true, "dishwasher": false}, "laundry": true, "ac": false, "elevator": false, …, "construction_year": 1920, "contact": {"phone": "+1 438 998 0689"}}`4445**4557 Sherbrooke Street West — unité 304** (3095 $, 5½, dispo 2026-10-01, 1012 pi²)46- avant : pets=None, details=`{"floor": 3}`47- après : pets=`oui`, details=`{"inclusions": {"heating": true, "hot_water": true, "electricity": false, "internet": false}, "appliances": {"dishwasher": true, "washer_dryer": true}, "ac": true, "laundry": true, "floor": 3, "elevator": …}`48