SPB Git forge

spb/immo-ka

Public

Immo-Ka — agrégateur des propriétés à vendre au Québec (73 connecteurs, ~40 000 annonces, React+FastAPI)

112commits 1branches 0releases
125.4 MBsize
maindefault branch
13 days agolast push
Python 47.5% HTML 27.9% TypeScript 15.5% CSS 7.2% JavaScript 2%
6.0 KB

# Immo-Ka — Rapport final : enrichissement des connecteurs + solidité mobile

Date : 2026-08-19 · périmètre : www.immo-ka.com (M4M64a:8096)

# 1. Enrichissement des connecteurs (Mission 1)

# Avant / après (annonces publiées)

Indicateur Avant (2026-08-18) Après (2026-08-19)
Description exploitable (≥ 80 car.) 82,5 % 99,3 %
Annonces à ≤ 1 image 12 084 (17,6 %) 2 128 (3,2 %)
Annonces sans aucune image 331 202 (repli élégant par type affiché)
Images par annonce (moyenne) 22,9 26,8
Chambres renseignées 73,6 % 77,3 %
Superficie renseignée 35,6 % 40,5 %
GPS 94,2 % 95,1 % (restant = adresses vagues LesPAC/DuProprio + biens hors Québec, jamais de coordonnées inventées)
Score de complétude moyen — 86,5 / 100
Annonces visibles 68 475 (dont ~12 000 quasi vides) 65 475 (toutes riches ; les doublons MLS inter-bannières sont maintenant correctement fusionnés/masqués : 51 364)

# Connecteurs enrichis (fiche détail complète : galerie entière en meilleure résolution, description longue, taxes/évaluations, pièces, courtier + téléphone, GPS, visites virtuelles)

  • Famille source.immo (~20 sources : Century 21 ×2, Vendirect, Domicilia, CIEMCQ, The Agency, Via ×4, 12 agences indépendantes) : 1 → ~28-31 images, villes résolues, taxes, étiquettes de pièces.
  • Realtor.ca (API PropertyDetails via Scrapfly, FR), Ubee (API Listing, ~130 codes traduits), Charisma, AvecUnCourtier/CIO (bannière réelle), eXp (GPS exact, pièces), Publimaison (GPS via /carte, galeries tous types), LogisQuébec (galeries dépolluées des « propriétés similaires »), Barnes (106 fiches mortes purgées, galeries par préfixe MLS), GLMC, Guide Habitation, BHHS, Imcha, Agence Image, Immeubles Contact, KW Urbain (details réparés + type), et KW Prestige / KW Distinction ressuscités (sitemaps figés → énumérations internes ; 0 → ~1 000 annonces complètes).
  • Cache BD detail_cache : 103 981 fiches détail mémorisées — seules les fiches nouvelles/modifiées sont relues à chaque cycle.

# Contrôle qualité (immoka/quality.py — nouveau)

  • Score de complétude 0-100 par annonce ; seuil de publication : prix plausible + ville + type de bien + contenu exploitable → sinon quarantaine (14 920 visibles-éligibles, motifs affichés dans les Stats), re-testée à chaque cycle.
  • Cohérences immobilières : bornes de prix vente (20 k–80 M$) et location (300–25 k$/mois, détection loyer vs vente), superficies plausibles, année valide, pièces/chambres, GPS borné Québec.
  • Champs dérivés : prix au pi² et m², type de transaction ; types de bien promus depuis les fiches Centris (Sotheby's 863 récupérées) et re-normalisés (bi-génération, X logements, ventes d'entreprise…).
  • Golden record : la dédup par adresse fusionne les champs manquants du doublon masqué dans la fiche conservée (description, galerie plus riche, GPS en paire, téléphone).
  • Archivage : vendues/louées/retirées désactivées (18 611 archivées au total) ; statut « Vendu » explicite = quarantaine immédiate.

# Images (immoka/imgaudit.py — nouveau)

  • Nettoyage au finalize : placeholders des portails, doublons multi-tailles (les handlers dynamiques .axd/.ashx gardent leur querystring d'identité).
  • Audit réseau budgété des couvertures avec cache 30 j : 257 913 URLs vérifiées, dimensions décodées des en-têtes (JPEG/PNG/WebP/GIF), 241 images mortes confirmées (404/410) retirées, minuscules éliminées, couverture valide promue en tête. Verdict « morte » sur preuve seulement : les 403/429 (rate-limit/anti-hotlink CDN, gotcha DuProprio) ne retirent jamais rien — le repli onError du frontend couvre le reste.
  • Annonce sans image valide → image de secours élégante par type de bien aux couleurs Immo-Ka (jamais d'icône cassée).

# 2. Mobile + validation du rendu (Mission 2)

  • Carte Ka Maps (framework partagé Groupe Ka, le même que Lou-Ka) : fond Mapbox Standard 3D, pastilles de prix GPU, clusters avec prix moyen, « Rechercher dans cette zone », bascule 2D/3D, aperçu au toucher, caméra dans l'URL, synchronisation liste ↔ carte ; fiche : mini-carte 3D avec bâtiment de l'annonce surligné. Ancienne carte MapLibre maison retirée.
  • Stats alignées Lou-Ka : 15 KPI (dont prix médian/pi², jours sur le marché, baisses de prix, qualité, quarantaine, sous le marché), donut juste-valeur, 6 tables. Section « Qualité des données » (complétude, quarantaine, anomalies par connecteur).
  • Fiche mobile : galerie scroll-snap + lightbox pincement/balayage/légendes de pièces, CTA collant, bulle KA Agent dégagée ; cartes de liste avec miniature légère (cover_thumb) et repli par type.
  • Bug de prod corrigé : les liens directs/Google vers une fiche (301 vers l'URL slug) tombaient sur la page 404 React — route /propriete/:uid/:slug ajoutée.
  • Validation (scripts/valider_rendu.py, rejouable) : matrice 7 largeurs (360/390/414/paysage 844/768/1024/1440) × 11 pages (accueil, carte, sans-résultat, agences, stats, contact, 5 fiches cas-limites : 1 photo, très photographiée, description longue, prix élevé, sans superficie) → 77/77 OK : 0 débordement horizontal, 0 image cassée, cibles tactiles ≥ 44 px (les 2 « erreurs JS » des fiches = télémétrie Mapbox bloquée, sans effet). Vérifié aussi en Safari iOS réel (simulateur iPhone 17 Pro : accueil, fiche, carte, stats). Captures : docs/screenshots/validation-2026-08-19/ (+ rapport md/json).

# 3. Suivi

  • Le cycle horaire (immo-ka-sync) entretient tout : enrichissement (budgets par connecteur), géocodage, Vrai-Prix, audit d'images (2 000/cycle), dédup, qualité.
  • Restant connu : ~2 100 annonces à 1 image = petites annonces à photo unique (Kijiji/LesPAC) + fantômes LogisQuébec (HTTP 410) ; « Propriétés résidentielles » (libellé Realtor) à raffiner ; KW Urbain sort de quarantaine au prochain cycle.