SPB Git

spb/lou-ka Public

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

HTML 99.7%
4.7 KB · 49 lines markdown
Rendered Raw Blame History
1# laberge — Gestion immobilière Laberge2- site: https://www.laberge.qc.ca/recherche3- méthode: html (page liste rendue serveur + fiches unités)4- annonces: 54 → 545- couverture après (sur 54 annonces): prix 100%, adresse 100%, dispo 100%, superficie 7%, commodités 100%6- fixture: ok · test: ok (2 passed)78## Champs extraits9- **Page liste (/recherche)** : complexe, adresse de la carte, ville (filtre Québec/Lévis/L'Ancienne-Lorette), type d'unité, prix « Débutant », disponibilité, code d'unité (`data-href`).10- **Fiche unité** (via `self.detail()`, cache BD, max 150 nouveaux fetchs/sync) :11  - bloc structuré h3→p « Grandeur / Étage / Disponibilité / Superficie / Débutant » : `area_sqft` explicite (structuré à la source), `details.floor`, dispo de secours ;12  - adresse complète de l'immeuble **avec code postal** (h3 « Adresse », lien « Autres adresses » retiré) ;13  - secteur (arrondissement) depuis le `<title>` (Beauport, Sainte-Foy, etc. — 9 secteurs) ;14  - inclusions de l'unité (pictos non grisés : Chauffage/Électricité/Eau chaude, Poêle et réfrigérateur, Lave-vaisselle, Air climatisé…) ;15  - **caractéristiques en liste `<ul><li>`** (nouveau) : « Entrée laveuse, sécheuse », « Balcon privé : 72 pi² », « Stationnement extérieur : inclus », hauteur de plafonds, insonorisation… ;16  - **services de l'immeuble + dispositifs de sécurité** (nouveau) : buanderie, rangement, stationnement intérieur/extérieur, ascenseur, carte d'accès, caméra, intercom, accès mobilité réduite ;17  - description marketing du complexe, photos de l'unité.1819## Champs indisponibles à la source20- Superficie publiée sur ~7 % des unités seulement (immeubles récents comme Le 224) ; idem pour l'étage.21- Politique animaux / fumeur : jamais mentionnée.22- Meublé : seulement l'avertissement générique « frais additionnels pour semi-meublés » (pas par unité).23- Lat/lng du complexe : absent (seuls les POI « À proximité » ont des coordonnées — non utilisés).2425## Fragilités26- Détection des inclusions par pictogrammes : repose sur `style="color:#ccc"` / suffixe `_off.` des SVG pour les exclusions.27- L'adresse des complexes multi-immeubles (Le Charleroi) ne donne que la première adresse ; « Autres adresses » est dans un collapse non extrait.28- Les lignes du tableau des unités mêlent logements et stationnements/rangements : filtre regex `EXCLUDE_UNIT_RE`.29- Le secteur vient du `<title>` — dépend du format « Appartement - <secteur> - <complexe> ».3031## Améliorations apportées32- Fiches unités passées sur `self.detail()` (cache BD ; auparavant les 54 fiches étaient re-visitées à chaque sync) avec budget `max_details=150` (exception `_DetailBudget`).33- `area_sqft` et `details.floor` extraits du bloc structuré h3→p (auparavant : injectés en texte dans la description).34- Adresse enrichie du code postal depuis la fiche (avant : adresse de carte sans code postal, parfois liste de 6 numéros civiques).35- Commodités : ajout des listes `<ul><li>` de caractéristiques (auparavant ignorées) + services d'immeuble + dispositifs de sécurité → 0 annonce sans commodités (avant : 6) ; `details.parking/inclusions` dérivés présents sur 54/54.36- Dédup des libellés, nettoyage des espaces multiples dans les `<li>`.3738## Échantillon avant/après39**Le 224 — 3½ (#1-0614)** (1490 $, dispo now, 742 pi²)40- avant : address=`224, rue seigneuriale`, amenities=6 pictos, details=`{"inclusions":{"hot_water":true},"appliances":{"fridge":true,"dishwasher":true,"washer_dryer_hookup":true},"ac":true,"floor":6}`41- après : address=`224 rue seigneuriale, Québec, G1E 0M8`, amenities=29 items (quartz, insonorisation, stationnements, sécurité…), details=`{"inclusions":{"heating":false,"hot_water":true},"appliances":{fridge,stove,dishwasher,washer_dryer_hookup},"ac":true,"elevator":true,"balcony":true,"storage":true,"parking":{"available":true,…},"floor":6}` + area_sqft=742 structuré4243**Le 2910 Canardière — 4½ (#2910-34)** (1090 $, Septembre 2026)44- avant : details=`{"inclusions":{"heating":true,"hot_water":true}}`, address sans code postal45- après : details=`{"inclusions":{"heating":true,"hot_water":true},"appliances":{"washer_dryer_hookup":true},"balcony":true,"laundry":true,"storage":true,"parking":{"available":true,"type":"extérieur"}}`, address=`2910 boulevard Mgr Gauthier, Québec, G1E 2V2`4647## Lacune générique de normalisation détectée48- `normalize.py` : le motif négatif de `heating` (`non chauffe`) matche « Stationnement intérieur **non chauffé** : des frais… » → `inclusions.heating=false` erroné pour Le 224 alors que seul le stationnement est non chauffé. Le motif devrait exclure le contexte « stationnement/garage ».49