Skip to content
# immomarketing — IMMOMARKETING / Immoappart
- site: https://immoappart.ca (11 pages de secteurs Québec + Grand Montréal → fiches /appartement//)
- méthode: html
- annonces: 82 → 82
- couverture après (sur 82 annonces): prix 100%, adresse 99%, dispo 98%, superficie 0%, commodités 99%
- fixture: ok · test: ok
- lat/lng : 100% (attributs
data-lat/data-lng de la carte interactive de chaque fiche — structurés)
- description complète : conteneur
.the-content (promotions, inclusions de loisirs, « Informations supplémentaires ») au lieu du og:description tronqué → finalize() dérive maintenant pets (« Animaux non acceptés » → non, 53/82), smoking (Non-fumeur), contact{phone,email}, parking, ac, pool, gym…
- amenities : liste « Inclusions » dédiée de la fiche (dropdown) au lieu de toutes les puces de
main (moins de bruit marketing)
- spécifications structurées « Caractéristiques de l'immeuble » : Prix (repli de price_label), Pièces (repli de unit_type), Chambre/Salle de bain (ajoutées à la description)
- adresse : h2 « numéro + rue » sans virgule finale maintenant accepté (ex. « 570, Charest est » de JB Laliberté)
- title, unit_type, price/price_label (bandeau), availability (« Date de disponibilité »), images — inchangés
# Champs indisponibles à la source
- superficie : jamais affichée (aucun champ « Superficie » sur les fiches, vérifié sur Québec/Montréal/Laval)
- 1 fiche sans adresse civique (Le Président I & II, Montréal), 2 fiches avec « Date de disponibilité » vide (Le Loumii)
- « Date de déménagement » du dropdown : signification ambiguë (souvent passée) — non utilisée
- pas de custom post type dans /wp-json/ (types WP standards seulement)
# Fragilités
- 82 fiches à visiter, MAIS le connecteur passe maintenant par self.detail() : clé = hash du texte de la carte liste (adresse+prix+type+badge) → seules les fiches nouvelles/modifiées sont re-téléchargées (budget max_details=120 vraies requêtes, comptées dans fetch_fn)
- Si un changement de la fiche n'affecte pas la carte liste (ex. description seulement), il n'est vu qu'au prochain changement de carte
- LACUNE GÉNÉRIQUE (normalize.py) : le crédit promotionnel « Crédit de 1 000 $ Éclaire » matche la règle electricity (
eclaire\b) → inclusions.electricity=true à tort sur les fiches Cité M ; de même « 2 espaces pour seulement 150 $ » donne parking.price=50 (le motif (\d+)\s*\$ coupe le nombre après la fenêtre de 40 caractères)
# Améliorations apportées
- Cache BD des fiches détail (self.detail) — ~93 requêtes seulement au premier sync, quasi 0 ensuite
- GPS structuré sur 100% des annonces (nouveau)
- pets/smoking/contact/parking dérivés grâce à la description complète (avant : og:description tronqué, pets=None partout)
- amenities propres (liste « Inclusions » officielle) + specs chambres/salles de bain dans la description
- correction d'adresse pour les h2 sans virgule finale
# Échantillon avant/après
- CITÉ M 4½ AVANT : desc=og(600c), amenities=15 puces mélangées, pets=None, lat=None, details={ac,pool,gym,storage,parking{intérieur}}
- CITÉ M 4½ APRÈS : desc=
.the-content(1718c)+2 chambre(s), 2 salle(s) de bain., amenities=10 « Inclusions », pets=non, smoking=false, contact{418-575-6158, citem@immomarketing.ca}, parking{intérieur, included:false}, lat/lng=46.83891/-71.312
- JB Laliberté AVANT : address=`` · APRÈS :
570, Charest est