Lou·Ka — tous les logements à louer du Québec, un seul endroit.
- 264commits
- 1branches
- 0releases
- 180.7 MBon disk
- maindefault branch
- 6 days agolast push
-
Fri, Sep 4, 2026 8
-
feat(fiche): refonte premium mobile-first de la fiche logement (2026-09-04)
…
Frontend (frontend/src/fiche/, nouvelle arborescence) : héro prix → adresse → résumé → galerie → actions ; Lou-Ka Score (60 % KA Score emplacement + 40 % prix vs juste valeur, partiel si une composante manque) ; « En bref » déterministe (prix, accessibilité, air, inondation, coûts, TAL, chaleur, baisse de prix) ; navigation sticky par sections (scroll-spy) ; Prix et marché (juste valeur + histogramme) ; Le logement (grille icône/valeur) ; description tronquée + texte original ; inclusions dédoublonnées FR/EN ; grande carte 3D Ka Maps avec filtres de lieux (transport, épiceries, pharmacies, commerces, écoles, parcs, essence) ; À proximité / Transport en carrousels + bottom sheet ; Quartier en KPI compacts + accessibilité en lignes ; KA Scores compacts ; Registre des loyers orienté décision (jauge p10–p90, médianes par chambres, 3 comparables + sheet filtrable) ; coût réel + Hydro ; risque d'inondation (statut clair, juridique en accordéon) ; qualité de l'air en tuiles ; essence (3 stats, 3 stations, sheet) ; Dossier de l'immeuble en accordéons (historique, passeport, gestionnaire, TAL, hiver) ; Sources et méthodologie + fin de fiche. Primitives : SectionCard, Accordion, BottomSheet (modale ≥ 900 px), StatTile, StatusBadge, Skeleton, états vides/erreur, toast. Données : useFicheData (groupe critique au montage, groupe différé à l'approche de la carte). Tokens --lk-* scopés (.lk-fiche) : fond #F7F7F5, cartes blanches bord 1 px, ombres légères, rayons 10/14/18/22, orange réservé CTA/prix/score. Desktop ≥ 1024 : aside sticky (prix, CTA, score, constats, Demander à Ka). CTA sticky compact affiché seulement après le héro ; bouton « ✦ Demander à Ka » discret branché sur le widget KA Agent existant (contexte de la fiche transmis). Header compact sur la fiche (56 px, ticker masqué, favoris + partage, connexion en icône sur mobile). Aucun `order` CSS ; scrollIntoView banni de la barre de sections (faisait ouvrir la page à 434 px). Anciennes classes .fiche/.f-* intactes pour la fiche court terme. 16 anciens composants de fiche supprimés (remplacés). check-order.mjs mis à jour + shots.mjs / interactions.mjs. Backend (additif, rétrocompatible) : poi.py conserve lat/lng des POI (carte) ; gaz.py expose lat/lng des stations ; /api/gaz et /api/rdl acceptent `limit` (sheets « Voir les N »). vite.config : proxy /api paramétrable (LOUKA_API). Validé : tsc + vite build, check-order OK (scrollY 0, ordre croissant, sans overflow 375→1440), captures Playwright 6 largeurs, sheets/carte/Ka/404, fiche sans KA Score. node_modules frontend réinstallés (typescript/esbuild tronqués par ka2 le 2026-08-31 pour ENOSPC).
-
design(figma): kit Figma du frontend — plugin générateur (fondations, composants, écrans 1440/390, références live), tokens W3C, captures du 2026-09-04
…
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
-
-
Sun, Aug 30, 2026 5
-
Sat, Aug 29, 2026 4
-
Fri, Aug 28, 2026 2
-
Thu, Aug 27, 2026 11
-
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.
-
pause(ontario): expansion ON suspendue temporairement — rien d'effacé
…
- .env : LOUKA_ONTARIO=1 commenté (les 56 connecteurs gatés sortent du registre) - sources.json : 65 sources ON -> status pause + note_pause - quality.evaluate : quarantaine pause-ontario (published=0) pour province=ON tant que le flag n'est pas reposé ; province ajoutée au backfill et à l'évaluation à l'ingestion (db.py) - docs/ONTARIO-PAUSE.md : quoi/pourquoi/comment réactiver 5 851 annonces ON conservées en base, dépubliées. QC intact (62 412 publiées).
-
Revert "[ka2] fix connecteur gia_t: garde-fou page liste vide (200 à 0 octet via escalade quand gia-t.com est en panne) — le sync échoue honnêtement au lieu de désactiver l'inventaire"
…
This reverts commit e9556c5b64f5f4aa187e3e68a56f684f605fea19.
-
feat(ontario): vague 2 — 45 nouvelles sources ON (+2 964 annonces, ~5 800 ON au total)
…
7 rsgw_* (passerelle website-gateway : sterlingkaramar, drewlo, fitzrovia, bgo, panoramic, drakepm, arcanos), 12 lift_*, 5 rc_*, 11 bld_* (Buildium), 1 apf_* (AppFolio), 9 sur mesure (starlight, medallion, kggroup, qresidential, riocan, sifton, accommod8u, greenrock, westdale). Anti-doublons : exclude_import_ids (Greenrock via sterlingkaramar) + sterlingkaramar.com dans _SKIP_DOMAINS de starlight. sources.json : 503 entrées, champ connector harmonisé. Tout gaté LOUKA_ONTARIO=1. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
-
feat(ontario): activation — les 20 sources ON passent à « actif » dans sources.json
…
LOUKA_ONTARIO=1 posé dans le .env de prod (non versionné). Première synchronisation faite : 2 828 annonces ON en base (2 624 publiées) sur 30 sources — Toronto 685, London 219, Ottawa 214, Hamilton 154, Sarnia 117, Kitchener 117… Villes ON exposées automatiquement par /api/facets. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
-
feat(ontario): 20 nouveaux connecteurs ON + socle province, tout gaté LOUKA_ONTARIO=1 (zéro impact prod QC)
…
Socle : Listing.province + bbox coordonnées ON (schema.py), migration province TEXT DEFAULT 'QC' (db.py), géocodage ON via Nominatim sans repli Adresses Québec (geocode.py), townhouse/bungalow résidentiels (quality.py). Nouveaux connecteurs (disabled hors gate) : liftsystem.py (13 clients dynamiques lift_* via data/liftsystem_clients.json — Greenwin, Park, Williams & McDaniel, Briarlane, DMS, Signet, Shelter, York, Terracorp, RentSarnia, First North, TVM, Urbandale ; 922 propriétés résidentielles), rentcafe.py (4 clients rc_* via data/rentcafe_clients.json — Effort Trust, Osgoode ON, GWLRA, O'Shanter ; Scrapfly ASP), homestead.py + skyline.py (passerelle publique website-gateway.rentsync.com), killam.py (blob #available_prop RentCafe). Connecteurs QC élargis sous gate (uids QC vérifiés identiques hors gate) : capreit +189, boardwalk +74, minto +81, hazelview +14, interrent +83, morguard +258, akelius +95, metcap +60, realstar +12, cogir +38, centurion +52 annonces ON potentielles. sources.json : +19 entrées ON (status inactif) + skyline recyclé. Registre : 365 connecteurs sans gate (inchangé), 385 avec LOUKA_ONTARIO=1. Potentiel à l'activation : ~1 200-1 600 annonces ON (~30 sources). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
-
-
Wed, Aug 26, 2026 8
-
docs: gestion-immobiliere-ontario.md — cartographie ~240 gestionnaires ON (recherche pré-expansion, rien d'implémenté)
…
8 régions (Toronto, GTA, Ottawa/Est, Hamilton-Niagara, KW-Guelph, London/SW, Nord, Centre), multi-régions, leviers plateformes (LiftSystem/RentCafe/Buildium/AppFolio) et annexe exclusions (agrégateurs écartés par principe). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
-
feat(ka-id v2.2): boost COLLABORATIVE_MODEL des recommandations du modèle ALS (kaid.py aligné sur ka-ui.git/kaid f844854)
…
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
feat(ka-id v2.1): CF SIMILAR_USERS + langue transversale (kaid.py), SDK pilules « Sauvegarder cette recherche »/« Pas pour moi » (ka-id.js), alignés sur ka-ui.git/kaid cbe9c9f
…
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
fix(ka-id v2): kaid.py — les plages numériques pèsent 0.6 (un simple bon prix ne score plus 1.0), aligné sur ka-ui.git/kaid
…
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
feat(ka-id v2): personnalisation Groupe KA — louka/kaid.py (canonique ka-ui.git/kaid), journal serveur (search/detail_view/favorite), reranking personnalisé du tri par défaut (blend 0,35, session > long terme, masqués exclus), enrichisseur ka_id (session legacy sans ka_id), routeur /api/kaid, SDK ka-id.js, badge « Recommandé pour vous » sur ListingCard
…
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
Mode carte : jetons Ka re-déclarés sur le canevas (accent orange dans la carte, pas le noir générique)
…
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
Mode carte Ka Map System v2 — expérience immersive plein viewport
…
- MapSearch réécrit autour de KaMapShell : mobile edge-to-edge + bottom sheet de résultats à 3 crans, desktop split liste|carte redimensionnable (ratio persisté) avec carte quasi plein écran d un clic - Toolbar unifiée (zoom, 3D, dessiner, me localiser) au lieu des pilules flottantes ; « Rechercher dans cette zone » contextuel - Mode dessin temporaire avec CTA « N logements dans cette zone » - Fiche contextuelle v2 : photo, prix, favori, swipe/chevrons entre voisines (remplace le carrousel mobile) - Thème markers v2 : pilules off-white/encre premium, orange réservé au « sous le marché » et à la sélection ; clusters légers à anneau orange avec loyer moyen sous la bulle - Home : vue carte mémorisée dans l URL, feuille de filtres en modale au-dessus du mode carte (desktop), widget Ka Agent masqué en mode carte Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
-
Tue, Aug 25, 2026 2