Lou·Ka — tous les logements à louer du Québec, un seul endroit.
- 264commits
- 1branches
- 0releases
- 180.7 MBon disk
- maindefault branch
- 5 days agolast push
-
Thu, Aug 27, 2026 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.
-
-
Tue, Aug 25, 2026 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>
-
-
Mon, Aug 24, 2026 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>
-
-
Tue, Aug 18, 2026 4
-
Script de reprise : complète les tuiles env (limites Overpass) puis calcule les KA Scores
…
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
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>
-
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> -
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>
-
-
Thu, Aug 13, 2026 1
-
README — refonte ultra détaillée : badges à jour (22 900+ annonces, 205 connecteurs, 820 villes), galerie de screenshots web + iOS (docs/screenshots/, script Playwright scripts/screenshots.mjs), sections Lou-Ka Maps / SEO-SSR / SSO KA / quartier / PDF / iOS, CLI et API complètes
…
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
-
Sat, Aug 8, 2026 3
-
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>
-
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> -
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>
-