SPB Git

spb/lou-ka

Public

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

History of frontend Clear filter
page 1
  1. Sat, Sep 5, 2026 1

    1. Simon-Pierre Boucher · 2 files +7 −7
  2. Fri, Sep 4, 2026 1

    1. 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).
      Simon-Pierre Boucher · 51 files +4,164 −2,259
  3. Thu, Aug 27, 2026 1

    1. Simon-Pierre Boucher · 1 file +1 −1
  4. Wed, Aug 26, 2026 4

    1. Simon-Pierre Boucher · 1 file +5 −1
    2. 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>
      Simon-Pierre Boucher · 4 files +441 −361
  5. Tue, Aug 25, 2026 13

    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 · 3 files +17 −5
    2. Fiche logement : refonte editoriale v2 — icones contextuelles, sections sans boites
      …
      - Nouveau composant AmenityIco (~34 pictos maison, trait 1.8) : chaque
        inclusion/caracteristique est appariee par mots-cles (accents neutralises)
        a SON icone — lave-vaisselle, chauffage, balcon, stationnement, animaux,
        piscine, foyer… — fini le meme ✓ repete dix fois
      - Inclusions : grille en filets (tuile icone 32px accent-soft, libelle,
        ✓ discret a droite pour le confirme ; neutre pour les mentions libres)
      - Chips cles du hero : hairline + icone contextuelle (3½ → porte, dispo →
        calendrier, pi² → regle…) au lieu d aplats marine
      - Colonne editoriale (gauche) de-boxee : description, inclusions, details
        pratiques respirent sans carte — les modules de donnees (droite) restent
        en cartes ; titres avec tiret accent net (sans bordure/ombre heritees)
      - Details pratiques : rangees en filets, cles en micro-mono, fini les tuiles
      - Prix 38-54px, ancres en onglets textes, en-bref en filet accent,
        galerie au cadre allege (hairline, rayon 10)
      - Mobile : le CTA sticky prend le bas d ecran, la tabbar s efface sur la
        fiche (body:has(.cta-sticky)) — plus de chevauchement
      Simon-Pierre Boucher · 3 files +192 −4
    3. Desktop : grille uniforme + header sans debordement
      …
      - Grille editoriale : suppression du grand format 7n+1 (annonces de tailles
        inegales jugees etranges) — 3 colonnes uniformes, le style editorial
        (fiches sans boite, image dominante, stagger) est conserve
      - Header : nav sans retour de ligne (Court terme tenait sur 2 lignes),
        burger des 960px, badge Groupe KA masque sous 1140px (debordement de 6px
        du bouton Connexion autour de 1100px) — verifie par mesure Playwright de
        1440 a 900px : plus aucun element coupe a droite
      Simon-Pierre Boucher · 1 file +12 −6
    4. Court terme : DA editoriale v2 (meme langage que l accueil)
      …
      - Hero typo geant Trouvez votre prochaine escapade. avec surlignage orange
        irregulier ; benefits-cards et stat-chips remplacees par la ligne LIVE
        (hebergements indexes en count-up, regions, derniere synchro reelle des
        connecteurs ct qui tictaque, prix moyen/nuit)
      - Recherche au coeur : grand champ Ou voulez-vous vous evader ? souligne,
        criteres Region/Type/Prix par nuit en filets, Tous les criteres avec badge
      - Barre de resultats sticky N hebergements · Liste|Carte · Filtres (mobile),
        FAB supprime ; resume des criteres actifs sous la recherche sur mobile
      - Grille magazine grid-edito (grand format 16/9 toutes les 7 fiches) et
        transitions de vue ; reutilise integralement la couche CSS v2 de l accueil
      - Hooks useCountUp/useAgo factorises dans src/live.ts (partages Home/CT)
      Simon-Pierre Boucher · 3 files +137 −119
    5. Refonte editoriale v2 de l accueil — direction artistique premium
      …
      Moins de boites, plus de typographie : le contenu structure la page.
      
      - Hero : composition typographique geante (clamp 44-88px), surlignage orange
        irregulier en trait SVG sous chez-vous., plus de gros boutons rectangulaires
      - Donnees vivantes : ligne mono LIVE avec compteur anime (count-up 0,9s),
        derniere synchro reelle qui tictaque a la seconde (max last_sync des
        connecteurs), sources et loyer moyen — separes par filets, zero chip
      - Recherche au coeur : grand champ Ou voulez-vous habiter ? souligne 2px
        (focus accent), criteres inline Ville/Quartier/Loyer separes par filets
        verticaux, bouton texte Tous les criteres avec badge — la boite filterbar
        disparait de l accueil
      - Barre de resultats sticky : N logements · Liste|Carte (onglets textes a
        soulignement anime scaleX) · Filtres (mobile) — remplace le FAB flottant
      - Fiches editoriales : plus de carte-boite — l image domine (radius 10,
        zoom 1,025 au survol), prix 22px niveau 1, adresse niveau 2, quartier/ville
        en mono uppercase niveau 3, source en micro-mono niveau 4
      - Grille a rythme magazine : 3 colonnes, 1 grand format panoramique 16/9
        toutes les 7 fiches, apparition en decale par colonne, align-items start
      - Pagination nue : chiffres sans boites, page courante soulignee accent
      - Nav mobile : tabbar flottante detachee des bords (radius 18, blur, ombre
        portee), etat actif = trait accent sous l icone ; widget KA Agent remonte
      - Primitives locales v2 : rayons 0/6/10/18, durees 150/240/350ms, hairlines
      - Feuille mobile : resume des criteres actifs sous la recherche (remplace le
        FAB), poignee, application sticky
      - Classes partagees avec CourtTerme (.hero, .filterbar, .stat-chip…)
        intactes : la refonte vit dans de nouvelles classes + une couche finale
      Simon-Pierre Boucher · 2 files +439 −131
    6. Accueil : pastilles actives — neutraliser l uppercase herite de la page Sources
      …
      La regle .pill de la page Sources (10.5px, uppercase) venait apres celle de
      l accueil et fuyait sur les pastilles de filtres actifs ; text-transform et
      letter-spacing sont desormais explicites sur .pills .pill.
      Simon-Pierre Boucher · 1 file +1
    7. Accueil : refonte majeure du rendu — CTA hero, filtres et boutons peaufines
      …
      - Hero : halo d accent + trame de points decorative, rangee CTA (Explorer /
        Voir la carte) avec ombres decalees accent, stat-chips interactives
        (tabular-nums, survol), avantages en mini-cartes bordees encre
      - Filterbar : cadre 2px + rayon 16, recherche 52px focus accent (ombre 3x3),
        selects survolables, bouton Plus de filtres avec icone, badge compteur et
        chevron anime, panneau avance en pointille avec easing
      - Segments : etat actif encre + souligne accent interieur ; pastilles actives
        avec animation d apparition et survol danger (intention de retrait)
      - Chips 42px avec icones alignees ; bascule Liste/Carte etat actif encre
      - Mobile : poignee de sheet, bouton Voir les resultats sticky en bas de la
        feuille, FAB avec badge compteur
      Simon-Pierre Boucher · 2 files +161 −56
    8. Court terme : upgrade majeur — 21 nouveaux connecteurs, 12 enrichis, fiches améliorées
      …
      - 21 nouveaux connecteurs (chaleto, hébergement-charlevoix, chaletsalpins,
        memoria, pourvoiries FPQ, campingquebec, hebergia, rezerve, accestremblant,
        chaletsdanslenord, alouerauxiles, rvmt, boraboreal, homminichalets…)
      - enrichissement des existants : airbnb (desc/capacité/commodités via PDP),
        booking/vrbo/expedia (Apollo SSR, bug slug vrbo corrigé), sepaq (desc+géo),
        tremblantliving (prix API Streamline), qldc/kijiji/parcscanada/bonjourquebec/
        gitespassant ; sinistar : prix vérifiés inaccessibles (documenté)
      - fiches CT : /api/ct/listings/{uid}/context (analyse prix/nuit par segment,
        histogramme, centile) + badge marché + hébergements similaires à proximité
      - registre sources_ct.json : 52 sources (7 mortes retirées, 21 ajoutées)
      
      Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
      Simon-Pierre Boucher · 4 files +146 −2
    9. Nav v2 correctif : le ✕ de fermeture vit DANS le panneau (fixe, toujours visible)
      …
      Le ✕ était le burger du header ; si le header n'est pas épinglé (bas de page),
      il défilait hors écran alors que le panneau fixed restait affiché — impossible
      de fermer sans Escape. Ajout d'un .mm-close position:fixed en haut à droite du
      panneau et burger masqué à l'ouverture (une seule commande de fermeture).
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 2 files +13 −2
    10. Nav mobile v2 : le dropdown 480px devient un panneau plein écran fixed
      …
      Standard KA 2026-08-25 : .mobile-menu passe de position:absolute top:100%
      (max-height 480px) à position:fixed inset:0 — menu visible peu importe la
      position de scroll. Rang du header (marque + burger→✕) maintenu au-dessus du
      panneau, verrou de scroll CSS pur via html:has(.mobile-menu.open).
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +13 −10
  6. Mon, Aug 24, 2026 9

    1. Simon-Pierre Boucher · 1 file +10
    2. 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 · 2 files +240
    3. feat(fiche): dossier d'intelligence locative — passe sharp desktop/mobile + PDF complet
      …
      CSS : pastilles de statut affûtées, score hiver et note Google en tuiles
      à ombre dure, timeline encre, media queries 640px (tableau coût réel,
      dates empilées, barres d'avis compactes). PDF fiche : cinq nouvelles
      sections fidèles au web — coût réel ligne par ligne (statuts étiquetés),
      historique Lou-Ka + vies antérieures, passeport de l'immeuble (tuiles
      KPI, rotation, pression), gestionnaire (note Google, distribution des
      avis, plaintes, confiance d'association), score hiver.
      
      Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +38 −7
    4. feat(fiche): styles du dossier d'intelligence locative — coût réel, historique, immeuble, gestionnaire, hiver
      …
      Complète les snapshots ka2 (backend 8efd8cb + composants 0ee1a2d) : pastilles
      de statut de donnée (observé/estimé/inconnu), tableau du coût réel, timeline
      Lou-Ka, distribution des avis Google, score hiver.
      
      Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +166
    5. Simon-Pierre Boucher · 7 files +670
    6. feat(design): passe « éditorial sharp » sur la fiche — cartes, KPI, tableaux, pastilles
      …
      Blocs de la fiche transformés en cartes encre (bordure 1,5 px + ombre décalée
      douce), titres de section à marqueur accent + filet, tuiles KPI blanches à
      ombre dure, tableaux zébrés avec survol accent, barres de proximité/crime/air
      en dégradé, pastilles d'état unifiées (mono, point, liseré), décisions TAL en
      mini-cartes. Vérifié Playwright desktop 1440 + mobile 390 (overflow 0,
      check-order OK).
      
      Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +111
    7. feat(tal): historique du Tribunal administratif du logement par adresse
      …
      Décisions publiques du TAL (diffusées par SOQUIJ) croisées avec l'adresse
      de chaque annonce : recherche « no civique + rue » via Scrapfly (le site
      exige rendu JS + IP résidentielle ; pas de phrases entre guillemets),
      puis vérification de l'adresse exacte dans le texte intégral et
      classification (non-paiement, résiliation, expulsion, reprise/éviction,
      insalubrité…, demande du locateur vs du locataire, verdict). Cache par
      adresse dans data/tal.db, backfill borné dans la boucle watch + file
      prioritaire alimentée par les fiches consultées (/api/tal), bloc
      « Historique au TAL » sur la fiche (aucun nom de partie affiché —
      référence neutre + lien SOQUIJ).
      
      Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
      Simon-Pierre Boucher · 4 files +148
    8. feat(doc): page documentation /doc (guide + captures) + lien footer + PDF téléchargeable
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 7 files +160
    9. Stats : panneaux territoire (registre des loyers, population, essence)
      …
      - louka/statsextra.py : 3 panneaux calculés sur nos jeux ouverts (cache 30 min)
        · Registre des loyers : 57 k loyers déclarés — KPI, médiane par nb chambres,
          histogramme, top 15 villes
        · Population & territoire : recensement des aires de diffusion couvertes
          (population, revenu médian, % locataires, âge, défavorisation) via
          listings.dauid
        · Prix de l essence : ~2450 stations gazquebec.ca — médianes régulier/super/
          diesel, barres et tableau par région
      - dashboard : clé panels ; Stats.tsx : rendu groupé et titré réutilisant le kit
        (KpiCard/Donut/BarChart/Histogram/DataTable)
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +38
  7. Sun, Aug 23, 2026 11

    1. hydro : cache par uid + dérivation du code postal via lat/lng (Mapbox)
      …
      - cache indexé aussi par uid (clé stable annonce) : affichage cache-only sur
        la fiche sans code postal ni appel Mapbox
      - code postal dérivé du lat/lng par géocodage inverse Mapbox quand l adresse
        n en porte pas (cas Immo-Ka) — au moment du calcul seulement
      - estimate(uid, lat, lng) ; endpoint et fiche passent uid+lat+lng ;
        cache-only renvoie en_attente (bouton) si un calcul est faisable
      - precompute sélectionne lat/lng/uid, saute ce qui est déjà en cache par uid
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 3 files +19 −8
    2. hydro : pré-calcul des 100 annonces récentes + auto pour les nouvelles
      …
      - hydro.precompute(limit, budget) : calcule l estimation des annonces les plus
        récentes non encore en cache, plafond de résolutions captcha par appel
        (coût borné) ; run.py hydro-precompute [N] [budget]
      - watch : precompute(100, budget=30) à chaque cycle -> nouvelles annonces
        estimées automatiquement ; le cache data/hydro.db persiste entre releases
      - estimate(solve=False) = lecture cache seule (aucun captcha) ;
        GET /api/hydro cache-only par défaut, solve=1 pour forcer
      - fiche : le bloc s affiche AUTOMATIQUEMENT quand l estimation est en cache,
        sinon bouton de calcul à la demande
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 2 files +32 −20
    3. hydro : flux live fonctionnel (2captcha) — structure API réelle
      …
      - lieu-consommation : clé listeLieuxConsommation + cleUnique au niveau racine,
        code postal reformaté avec espace (exigé), idConso = item.id
      - estimation : {cleUnique, idConso} -> montantAnnuel + consommationAnnuelle
      - expose kwh_annuel ; testé live : 20 rue Lockwell = 283 $/an / 1100 kWh (12 s),
        2e appel servi du cache
      Activé via HQ_CAPTCHA_KEY (2captcha) dans .env.
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 2 files +5 −4
    4. Fiche : estimation du coût d electricite Hydro-Quebec (a la demande)
      …
      - louka/hydro.py : parcours PUBLIC rétro-conçu de l outil « Estimer les coûts
        d électricité à une résidence » — 2 étapes (lieu-consommation -> estimation)
        sur services-cl.solutions.hydroquebec.com, jeton reCAPTCHA v2 via solveur
        enfichable (2captcha/CapSolver, clé HQ_CAPTCHA_KEY), sortie par proxy
        résidentiel CA (Oxylabs/Bright Data), cache 6 mois data/hydro.db ; sans clé
        captcha -> {disponible:false} et bloc masqué (jamais d estimation inventée)
      - GET /api/hydro?adresse= ; bloc fiche à la demande (bouton, 1 captcha/appel)
        affichant le coût mensuel et annuel estimés
      
      Activation : définir HQ_CAPTCHA_KEY (+ HQ_CAPTCHA_PROVIDER) dans .env.
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 4 files +93
    5. Cartes : lignes de métro/REM aux couleurs officielles + transit hors ligne
      …
      - MetroLignes.tsx : couche Ka Maps (useKaMap) qui trace metro-lignes.geojson
        (lignes verte/orange/jaune/bleue + REM, extraites d OSM avec leurs couleurs
        officielles, liseré blanc de lisibilité) sur la carte de recherche, la
        vue carte et la carte 3D de la fiche
      - commerces : transit servi par data/transit.db (extrait OSM pré-calculé,
        37 237 arrêts de bus + 75 stations de métro + 57 REM + 106 gares au
        Québec — les miroirs Overpass refusent l IP du cluster) ; ajoute Station
        REM et Gare de train au bloc Commerces et transport
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 6 files +63 −1
    6. Fiche : bloc Commerces et transport (Mapbox Search Box + cache POI/OSM)
      …
      - louka/commerces.py : point de vente le plus proche de 14 grandes bannières
        (Costco, Walmart, Metro, IGA, Maxi, Super C, Provigo, Canadian Tire,
        Dollarama, SAQ, Pharmaprix, Jean Coutu, Home Depot, RONA) via l API Mapbox
        Search Box (jeton public kamaps, validation du nom retourné, anti
        « Station Métro »), cache par cellule ~1 km TTL 30 j ; station de métro et
        arrêt de bus les plus proches repris du cache POI du projet (repli
        Overpass) ; GET /api/commerces
      - bloc fiche : pastilles SVG monogrammes aux couleurs des bannières,
        nom du point de vente et distance — métro/bus en tête
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 4 files +115
    7. Fiche : qualité de l air (RSQAQ/PST) + essence à proximité (gazquebec.ca)
      …
      - louka/air.py : agrégats annuels par station du RSQAQ (MELCCFP) — horaires
        2024-2025 (PM2.5, NO2, O3, SO2, CO) + séquentielles PST/PM10 (<LD -> LD/2),
        data/air.db minuscule, station la plus proche ≤ 60 km ; bloc fiche avec
        badge global et barres vs repères OMS 2021 / norme RAA (PST 60 µg/m³)
      - louka/gaz.py : copie locale des ~2 450 stations de gazquebec.ca (prix
        Régulier/Super/Diesel, TTL 4 h, auto-refresh au lookup) ; bloc fiche avec
        KPI (stations, médiane du secteur, meilleur prix) et tableau des stations
        les plus proches, la moins chère mise en évidence
      - run.py air-refresh / gaz-refresh, GET /api/air et /api/gaz
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 5 files +219
    8. Quartier : criminalité SPVM détaillée par catégorie (12 mois, tendance)
      …
      _crime_mtl ventile désormais les actes par catégorie (vol dans/sur véhicule,
      introduction, vol de véhicule, méfait, vol qualifié, infractions mortelles) ;
      le bloc quartier affiche des barres par catégorie avec la variation vs les
      12 mois précédents (flèches chiffrées, jamais la couleur seule).
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 3 files +55 −9
    9. Risque d inondation (BDZI) + Registre des loyers v2 (visuel)
      …
      - louka/inondation.py : base locale data/inondation.db construite du GeoPackage
        BDZI officiel (25 k polygones éclatés + R*Tree, couverture Carto_ZI_S),
        lookup point-dans-polygone shapely (0-40 ms), statuts en_zone / a_proximite
        (≤100 m) / hors_zone / non_cartographie ; run.py inondation-build,
        GET /api/inondation — bloc fiche avec badge de sévérité (grand courant
        0-20 ans = élevé, faible courant 20-100 ans = modéré) et rappel que la
        cartographie officielle fait foi (CMM non couverte par la BDZI)
      - Registre des loyers v2 : tuiles KPI (volume, médiane secteur, médiane même
        nombre de chambres), bande de position p10-p90/boîte p25-p75/médiane vs le
        loyer demandé, barres des médianes par chambres (celle de l annonce
        surlignée + étiquette), date de la valeur = année du loyer (mois seulement
        si le bail débute la même année), quartiles côté API
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 5 files +253 −26
    10. Registre des loyers : extraction pancanadienne (57 433 déclarations géocodées) + bloc fiche
      …
      - louka/rdl.py : balayage par boîtes de l API publique de registre-des-loyers.ca
        (subdivision récursive sur erreur ou volume suspect), base séparée data/rdl.db,
        requête de proximité (bbox + haversine) avec médianes globale/récente/par chambres
      - run.py rdl + GET /api/rdl?lat&lng&radius
      - fiche : bloc « Registre des loyers » sous l analyse de prix — médiane du secteur,
        écart du loyer demandé vs les déclarations du même nombre de chambres,
        8 déclarations les plus proches avec la date de la valeur (année du loyer,
        mois si le bail débute la même année), crédit Vivre en ville
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 4 files +156
Menu

Theme