SPB Git

spb/lou-ka Public

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

HTML 99.7%

History of louka/ingest.py · clear filter

  1. 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 committed 2 days ago (Aug 9, 2026) · 1 file changed +5
  2. Commodités de proximité par immeuble (Overpass/OSM) sur chaque fiche
    - louka/poi.py : une requête Overpass par immeuble (13 catégories : épicerie,
      dépanneur, pharmacie, école, garderie, parc, bus, métro, gym, café,
      clinique, hôpital, bibliothèque), plus proche par catégorie avec distance,
      cache permanent par coordonnées arrondies (~11 m), politesse 1 req/s,
      rafraîchissement aux 3 mois
    - run.py poi [n] + intégration à la boucle watch (80 nouveaux immeubles/cycle)
    - /api/listings/{uid} : champ poi[] joint depuis le cache
    - fiche : section « À proximité » (icône, nom réel, distance formatée),
      mention données OpenStreetMap
    
    Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
    simon-pierre boucher committed 2 days ago (Aug 9, 2026) · 1 file changed +5
  3. Mission 4 — géocodage Nominatim + carte interactive MapLibre GL
    Géocodage (louka/geocode.py) :
    - Nominatim 1 req/s, User-Agent identifié, cache SQLite par immeuble
      (adresse normalisée sans n° d'unité) — une adresse n'est géocodée qu'une fois
    - nettoyages QC : préfixe d'unité « 101-2905 », « Montréal - Laval »,
      cardinales abrégées ; repli civique+rue en 2e tentative
    - validation bounding-box (Québec/Lévis resserrée, garde-fou provincial),
      flag geocode_failed, ré-essai des échecs après 30 jours
    - intégré à la boucle watch (nouvelles adresses géocodées à chaque sync)
    - finalize() rejette aussi les coordonnées invalides fournies par les sources
      (annonce de Limoilou qui pointait au Kazakhstan)
    
    Carte (frontend) :
    - /api/listings.geojson : GeoJSON filtré (mêmes filtres que /api/listings)
    - MapView MapLibre GL : chargement paresseux (254 ko gzip hors du bundle
      principal), clustering natif, marqueurs-prix, popup fiche (photo, prix,
      type, dispo, gestionnaire, lien), synchro avec les filtres, fitBounds
    - bascule Liste/Carte : côte à côte sur desktop, plein écran sur mobile
    - tuiles vectorielles OpenFreeMap (positron), style Lou-Ka (encre + lime)
    - worker MapLibre v6 copié par plugin Vite (imports relatifs préservés)
    
    Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
    simon-pierre boucher committed 2 days ago (Aug 8, 2026) · 1 file changed +5
  4. Mission 1a — couche commune : schéma enrichi, normalisation centrale, robustesse, tests
    - schema.Listing : availability_date (ISO/now), area_sqft, pets, furnished,
      details (JSON structuré) + finalize() appliqué à toutes les sources
    - normalize.py : dates FR/EN → ISO, superficies pi²/m², prix robuste,
      types d'unité (chambres→½, 6½+, MDV…), commodités → tags canoniques,
      stationnement/animaux/fumeur/contact extraits du texte
    - db.py : migration auto, délai de grâce (2 syncs) avant désactivation,
      détection de dérive (volume + taux de prix null) avec retraits suspendus,
      cache des pages détail, cache de géocodage (préparé pour la carte)
    - fixtures.py + run.py record : enregistrement/rejeu des réponses HTTP,
      tests de régression pytest par connecteur (snapshot + validité schéma)
    - web.py : nouveaux filtres pets/furnished/available_by/area_min
    
    Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
    simon-pierre boucher committed 2 days ago (Aug 8, 2026) · 1 file changed +11 −1
  5. Lou-Ka — agrégateur de logements à louer (Québec, Lévis, Grand Montréal)
    Plateforme complète : 68 connecteurs de gestionnaires immobiliers, schéma
    standardisé avec détection de changements (hash), API FastAPI, frontend
    React/Vite PWA (design éditorial sharp, thème clair), déployée sur
    www.lou-ka.com avec resynchronisation horaire.
    
    Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
    Simon-Pierre Boucher committed 4 days ago (Aug 6, 2026) · 1 file changed +52