SPB Git

spb/lou-ka

Public

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

History of scripts Clear filter
page 1
  1. Thu, Aug 27, 2026 1

    1. feat(scraping): migration Firecrawl -> Scrapfly des 6 connecteurs a rendu JS
      …
      - base.get_rendered : rendu via Scrapfly (render_js+ASP), wait_ms = ancien
        waitFor Firecrawl, retry x3 sur contenu vide puis echec honnete ;
        FIRECRAWL_API retire du socle
      - aalto/osgoode/brigil/realstar : _rendered delegue au socle (retry centralise)
      - realstar/osgoode/brigil : selecteur li[class*=property-box] — le rendu
        Scrapfly capture le DOM avant que le JS RentCafe ne revele les cartes
        (property-box-hidden), qui sont completes ; filtre QC en aval inchange
      - via_capitale : CARD_SPLIT accepte les hrefs relatifs (serialisation
        Scrapfly) en plus des absolus (fixtures Firecrawl historiques)
      - fixtures record/replay : get_rendered accepte wait_ms (cle de rejeu = URL)
      - fixtures re-enregistrees via Scrapfly : aalto 24, osgoode 4, brigil 12,
        realstar 9 ; rejeu test_connectors 10/10
      - gen_connector_docs : backend get_rendered documente Scrapfly (ex-Firecrawl)
      
      Valide en live : aalto 24, lynk_olymbec 4, via_capitale page 1 = 34 cartes.
      Lou-Ka ne depend plus de FIRECRAWL_API_KEY.
      Simon-Pierre Boucher · 1 file +4 −5
  2. Tue, Aug 25, 2026 1

    1. Court terme : hotellerie du Quebec en reservation directe (1 922 fiches)
      …
      - sithotels : repertoire officiel SIT Quebec (ministere du Tourisme/CITQ),
        1 542 fiches squelettes geolocalisees avec no CITQ ; saute les hotels
        couverts par un connecteur moteur (fiche riche prioritaire)
      - mews : 110 hotels via l'API bookingEngine (session signee md5, Origin
        obligatoire), prix frais a chaque sync, photos, repli geoloc SIT
      - reservit : 235 hotels via l'API du front Angular ; sessions proxy a IP
        collante par hotel (le direct est banni du noeud et l'IP tournante
        declenche le filtre de securite Reservit)
      - scripts/detect_hotel_engines.py + data/hotels_engines.json : table
        hotel -> moteur de resa (1 174 sites sondes : 278 reservit, 121 mews)
      - schema : types Hotel et Motel ; Sources : categorie Hotellerie ;
        fiche CT : CTA « Reserver en direct a l'hotel » pour la categorie hotels
      
      Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +445
  3. Mon, Aug 24, 2026 1

    1. Annuaire des déménageurs du Québec : page /demenageurs (565 entreprises, 17 régions)
      …
      - data/demenageurs.json : dataset canonique (balayage Google Places via Serper,
        188 villes, dédoublonnage CID/téléphone) — partagé avec Immo-Ka
      - louka/demenageurs.py : API /api/demenageurs (filtres région + texte)
      - frontend : page Demenageurs.tsx (recherche, filtre par région, tel:/site web),
        liens nav + menu mobile + prefooter
      - seo.py : SSR /demenageurs (liste complète par région, JSON-LD MovingCompany
        ItemList) + entrée sitemap-pages
      - scripts/build_demenageurs.py : régénération du dataset
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +260
  4. Tue, Aug 18, 2026 4

    1. Script de reprise : complète les tuiles env (limites Overpass) puis calcule les KA Scores
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +20
    2. Recherche synchronisée liste ↔ carte (une seule vérité partagée)
      …
      · /api/search : une réponse = page de liste + tous les points carte,
        même tri — compteur liste = marqueurs par construction ; bbox, polygone
        dessiné, tris (prix/récent/affaires), include=liste, annonces sans
        position comptées honnêtement.
      · MapSearch.tsx : état unique filtres+zone+tri+page, miroirs survol/clic
        < 100 ms dans les deux sens, page ajustée au clic marqueur + pulsation,
        « Rechercher quand je déplace la carte », « Rechercher dans cette zone »,
        recadrage animé respectant l intention (byUser), « Recadrer sur les
        résultats », zone dessinée en puce retirable + URL, carrousel mobile
        synchronisé aux marqueurs, états vides propres, URL complète partageable.
      · Géolocalisation d accueil : arrivée sur le site → demande de position →
        vue carte centrée sur l utilisateur (une fois par session, lien partagé
        respecté, refus silencieux).
      · Marqueurs « déjà vu » atténués (localStorage), fourchette de prix des
        clusters au survol, spiderfy discret des unités d un même immeuble.
      · Tests : scripts/test-sync.mjs (25 vérifications E2E Playwright, critères
        1-9), tests/test_search.py (9 tests API).
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +350
    3. Qualité des données + solidité mobile + framework de juste valeur (fair value)
      …
      Mission 1 — enrichissement des connecteurs et qualité :
      - quality.py : score de complétude 0-100 + seuil de publication (quarantaine
        des annonces sans prix plausible / localisation / contenu exploitable)
      - imgcheck.py : audit des images (liens morts 404/410, minuscules, placeholders
        multi-adresses, doublons) -> galeries nettoyées images_ok, cache image_checks,
        politesse 3 requêtes/hôte, écriture hors transaction réseau
      - 26 connecteurs enrichis (galeries complètes, descriptions, prix, adresses) :
        kangalou, royal_lepage, medway, remax_quebec, groupe_maurice, mellem, sutton,
        lespac, heafey, kijiji, fb_marketplace, zumper, equinoxe_batimo, logis_experts,
        quartier_sila, msi, summum, quartier_plus, urban_services, cosoltec, garic,
        lakle, matinale, huma, jutras, groupe_theoret, ferrovia
      - normalize : clean_city/clean_sector (rues et entités HTML retirées des menus),
        kijiji : adresses françaises « 89, rue X » correctement découpées
      - geocode : virgule après le n° civique corrigée (lot AQ), base en WAL
      - dedup : une annonce en quarantaine ne masque jamais un doublon publié
      
      Mission 2 — mobile :
      - /api/img : miniatures WebP servies à la taille de l écran (cache disque)
      - SmartImg : miniature -> original -> visuel de secours Lou-Ka (jamais d icône cassée)
      - lightbox tactile : balayage scroll-snap + pincement + double-tape
      - bannière témoins : ne recouvre plus le bouton Filtres (--consent-h)
      - cibles tactiles >= 44 px (pointer: coarse) ; KA Agent plein écran à l ouverture
      - stats : complétude moyenne, quarantaine par source
      
      Mission 3 — juste valeur locative (fairvalue.py, fv-logement-1.0) :
      - 3 niveaux : segments médians (repli en échelle) + coefficients de
        caractéristiques appris et centrés + comparables kNN géographiques (médiane
        pondérée) ; couloir de sécurité, fourchette, indice de confiance
      - prudence : pas de verdict si confiance faible, prix « à partir de »,
        prix non mensuel, écart hors plausible ; chambres/coloc = segment dédié
      - pastilles sous/dans/au-dessus du marché (cartes + fiche), bloc Analyse de
        prix avec histogramme, filtre « Sous le marché » + tri, page /juste-valeur
      - API : champs fv_* + deal/sort, /api/fairvalue/{uid} ; stats + PDF ;
        historisation fv_segments ; tests synthétiques ; docs/FAIRVALUE*.md
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +75
    4. docs: documentation standardisée des 214 connecteurs (générateur + fiches)
      …
      scripts/gen_connector_docs.py : générateur 100 % programmatique et rejouable
      qui croise data/sources.json, l introspection statique (ast) du code des
      connecteurs et la BD live (volumétrie, complétude SQL par champ, sync_log).
      Écrit docs/connecteurs/INDEX.md + une fiche par connecteur (sections fixes :
      description, accès, champs -> schéma, fréquence & budget, volumétrie,
      erreurs, licence, historique).
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +587
  5. Thu, Aug 13, 2026 1

  6. Sat, Aug 8, 2026 3

    1. Expansion provinciale : bornes géographiques élargies (géocodage + recensement)
      …
      Le garde-fou du géocodeur et la bbox des aires de diffusion excluaient
      Gatineau, l'Abitibi, le Saguenay, le Bas-Saint-Laurent, la Côte-Nord et la
      Gaspésie. Élargis à la province habitée (44,5-63 / -80 à -56) ;
      reconstruction du recensement provincial lancée.
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +5 −2
    2. Quartier : scripts de construction des données + centiles PMD + correctif débordement mobile
      …
      - scripts/build_{recensement,contexte,environnement}.py : pipelines rejouables
        (StatCan recensement 2021 + limites AD, PMD, INSPQ défavorisation, écoles
        MEQ/IMSE, îlots de chaleur INSPQ, actes criminels SPVM, IGC WDS)
      - merge_quartier.py : fusion + rangs centiles québécois des scores PMD
        (l'échelle nationale brute écrasait les valeurs urbaines)
      - data/quartier.db (51 Mo, gitignoré) : déployé par rsync, reconstruit par
        scripts — 11 317 AD, 49 791 actes SPVM 24 mois, 1 249 immeubles chaleur
      - min-width:0 sur les enfants de .detail-grid (débordement mobile)
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      simon-pierre boucher · 4 files +1,372
    3. Stats de quartier (à la Centris) — runtime + fiche « Le quartier »
      …
      - louka/quartier.py : jointure lat/lng -> aire de diffusion 2021 (point-dans-
        polygone local, préfiltre bbox), assemblage fiche (démographie recensement,
        scores de proximité StatCan, défavorisation INSPQ, îlot de chaleur,
        criminalité SPVM <500 m sur l'île / indice IGC ailleurs), enrichissement
        listings.dauid dans la boucle watch
      - data/quartier.db : base statique construite par scripts/ (fusion via
        scripts/merge_quartier.py), défensif si absente
      - fiche : section « Le quartier » (tuiles démographiques, barres de proximité
        0-100, badges chaleur/criminalité, attributions licences ouvertes)
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      simon-pierre boucher · 1 file +76
Menu

Theme