SPB Git

Repository Public

Page 1 · 264 commits on main
  1. Thu, Aug 13, 20267 commits

    1. Profil enrichi — photo téléversée, bio, ville, coordonnées, réseaux sociaux
      ···
      - louka/profile.py : PUT /api/me/profile (nom affiché, bio 280, ville,
        téléphone, site web, réseaux instagram/facebook/x/linkedin/tiktok/youtube),
        POST /api/me/avatar (Pillow : EXIF, recadrage carré centré, 512 px, JPEG,
        purge des anciennes photos), DELETE /api/me/avatar (retour avatar Google)
      - /uploads/ monté (data/uploads/), colonnes users (display_name, avatar_url,
        bio, city, phone, website, socials JSON)
      - /api/me : nom et avatar « effectifs » (display_name > Google, upload >
        Google) + tous les champs ; profil public /u/{ka_id} : bio, ville, rôle,
        site, réseaux (jamais courriel/téléphone)
      - /profil : éditeur complet (photo avec téléversement, nom affiché, bio avec
        compteur, ville, téléphone, site, 6 réseaux avec icônes maison)
      - /u/{ka_id} : bio, chips ville/rôle/site, boutons réseaux sociaux
      - python-multipart ajouté (formulaires multipart FastAPI)
      Simon-Pierre Boucher 14 files +679 −36
    2. Comptes v2 — KA-ID, profil « carte de membre », rôles, favoris, pages gestionnaires
      ···
      - KA-ID : identifiant membre unique « ka- » + 10 chiffres, attribué à la
        création du compte (index unique, backfill au premier /api/me)
      - /profil : carte de membre Groupe KA (encre + lime, KA-ID en vedette, avatar,
        ancienneté, bande décorative), infos du compte, copie du KA-ID
      - Profil PUBLIC opt-in : /u/{ka_id} (nom, avatar, ancienneté — jamais le
        courriel ; 404 indistinguable si non public), toggle + lien copiable
      - Rôles à l'intégration (/bienvenue après le premier login Google) :
        · locataire — favoris (cœur sur les cartes, page /favoris, toggle optimiste)
        · gestionnaire — réclame la page de SA source (1/compte, 1 compte/source)
          et la personnalise (/gestion : accroche, description, contact, logo) ;
          page publique /g/{source} avec inventaire relié + pagination
      - louka/accounts.py (rôles, favoris, source_profiles), tables favorites +
        source_profiles + colonnes users (ka_id, public, role, org_source)
      - Contexte de compte partagé (account.tsx) : header, cartes et pages reliés
      Simon-Pierre Boucher 16 files +1,469 −12
    3. Comptes utilisateurs — connexion Google (OAuth 2.0 / OpenID Connect)
      ···
      - louka/auth.py : flux authorization-code serveur (login -> Google -> callback),
        state signé, upsert table users, session HMAC-SHA256 en cookie httpOnly 30 j
        (stdlib seulement), /api/me, /api/auth/logout, /api/auth/config
      - db.py : table users (google_sub unique, email, name, picture)
      - Frontend : bouton « Connexion » (logo Google) dans le header, avatar + menu
        compte (courriel, se déconnecter) — masqué tant que l'OAuth n'est pas configuré
      - .env : SESSION_SECRET généré ; GOOGLE_CLIENT_ID/SECRET à coller
        (redirect URI : https://www.lou-ka.com/api/auth/google/callback)
      Simon-Pierre Boucher 6 files +317 −2
    4. Web — mention Groupe KA + page Conditions d'utilisation + courriels officiels
      ···
      - Footer : « Lou-Ka est une plateforme du Groupe KA » (lien groupe-ka.com),
        © Groupe KA, contact@groupe-ka.com, lien vers /conditions
      - Nouvelle page /conditions : opérateur (info@groupe-ka.com), nature du
        service, exactitude, retrait de contenu (contact@groupe-ka.com), usage
        acceptable, volet légal (admin@groupe-ka.com) — route + menu mobile
      - Confidentialité : responsable Loi 25 admin@groupe-ka.com, retraits et
        questions contact@/info@groupe-ka.com (remplace contact@spboucher.ai)
      Simon-Pierre Boucher 4 files +120 −4
    5. Web — pagination 12 annonces/page + icônes SVG maison (fin des emojis génériques)
      ···
      - Pager.tsx : pagination éditoriale (précédent/suivant, numéros avec ellipses,
        rappel « X–Y sur N »), sous la grille ET sous la liste de la vue carte
      - Home.tsx : 12 annonces/page via limit/offset API, page dans l'URL (?page=N),
        retour page 1 au changement de filtre, défilement doux vers les résultats
      - Icons.tsx : jeu d'icônes SVG au trait « éditorial sharp » (maison, immeuble,
        caméra, patte, sofa, éclair, liste, carte, curseurs, alerte, boussole…)
      - Emojis remplacés partout (cartes, chips, bascule liste/carte, FAB filtres,
        nav mobile, onglets Stats, fiche, carrousel vide, popups carte, 404)
      Simon-Pierre Boucher 10 files +382 −43
  2. Wed, Aug 12, 20261 commit

    1. Portails & courtiers en location — 10 connecteurs portés d'Immo-Ka (Kijiji, LesPAC, RE/MAX, Sutton, Royal LePage, Via Capitale, Proprio Direct, Ubee, Barnes, M Immobilier)
      ···
      - base.py : backends Scrapfly (scrapfly/get_scrapfly) + post() portés d'Immo-Ka
      - _detailutil.py : helper partagé d'enrichissement fiche détail (cache BD, budget par sync) adapté au schéma Listing
      - Kijiji c37 apparts/condos + c36 chambres/coloc (Apollo __NEXT_DATA__, QC l9001)
      - LesPAC b457 logements + b458 coloc + b460 aînés (searchResponse, ancre Montréal = province entière triée par distance)
      - RE/MAX Québec : index Meilisearch public shardé par RTA, slugs -a-louer seulement
      - Sutton : sitemap inscriptions typeInscription=2 (= locations)
      - Royal LePage : recherche transactionType=LEASE (formulaire caché), 28 villes d'ancrage
      - Via Capitale : criteresJson AVendre:false via Firecrawl (Cloudflare)
      - Proprio Direct : API searchListings filter rentOrSale:rent, volet résidentiel
      - Ubee : API SearchProperties listingType Renter (askPrice = loyer mensuel)
      - Barnes : Algolia facette type:rental (property_rent) ; M Immobilier : CODE_STATUT=AL
      - sources.json : 255 → 265 (10 nouvelles sources « Province »/Montréal)
      - Écartés après vérification live (pas de location résidentielle) : DuProprio, Profusion, Engel & Völkers, KW Prestige/Distinction/Urbain, Expert PM, Sotheby's
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher 13 files +2,759 −1
  3. Tue, Aug 11, 20261 commit

    1. Filtres avancés — refonte du menu web + facettes par ville
      ···
      - /api/facets accepte ?city= : quartiers restreints à la ville (sélecteur dépendant)
      - Menu de filtres refait : rangée principale compacte (recherche, ville,
        quartier, loyer min–max, « Plus de filtres ») + panneau avancé repliable
        en segments (disponibilité, meublé, animaux, superficie, gestionnaire)
      - Correction du débordement horizontal (colonnes 1fr → contrôles bornés)
      - Chips rapides (dispo maintenant, animaux, meublé) + pastilles de filtres
        actifs retirables ; api.ts : price_min, pets, furnished, available_by, area_min
      - ios/ ignoré : l'app iOS native vit dans son propre dépôt (lou-ka-ios)
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher 5 files +388 −71
  4. Sun, Aug 9, 202613 commits

    1. Simon-Pierre Boucher 3 files +234 −4
    2. Expansion P3 — Estrie (6 connecteurs +24 annonces, 17 non-connectables)
      ···
      terater (12) · alexcellence (4e Houzez, sous-classe Dynamic) · oxford ·
      immeubles_pm (plogg vivant) · majestic (Granby) · lequerre (OBNL).
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher 84 files +54,661
    3. Expansion P3 — Est & Nord + Chaudière-Appalaches (7 connecteurs +98 annonces, 9 non-connectables)
      ···
      quartier_plus (Thetford, 59) · immeubles_bois (Rimouski, catalogue 23) ·
      louer_saguenay · luxuor · beaulieu_groupe · gestion_jdm · alias_appartements.
      LM Gestion et Alexandre Pelletier re-vérifiés (sites toujours morts).
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher 46 files +29,930
    4. Expansion P3 — Mauricie/CdQ/Lanaudière (6 connecteurs +53 annonces, 8 non-connectables)
      ···
      moderno · acceslogis_gb · ferrovia (23, prix non publiés) · habitations_sf ·
      lambert · fournelle. Non-connectables documentés (parcs pleins, vitrines
      sans unités, renvois Facebook).
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher 45 files +42,985
    5. Expansion P3 — Outaouais (5 connecteurs +41 annonces, 10 non-connectables)
      ···
      wandji (API /api/buildings découverte, 29) · gio (crawl-delay 3 respecté) ·
      immnasr · quanta · leviu (portail Magex). Registre fusionné.
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher 82 files +12,412 −1
    6. Expansion P2 — Estrie (15 connecteurs, +279 annonces)
      ···
      Famille Houzez factorisée (dynamic -> gestimmo_estrie, agence_sherbrooke) ·
      uptimo (51) · dynamic (49) · matinale (42, Crawl-Delay 20 respecté) ·
      gestimmo (41) · montagnais (6 campus étudiants) · floria (Livya) + 8 autres.
      6 non-connectables documentés (plateforme plogg morte, vitrines sans prix).
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher 349 files +432,335
    7. Page Stats en 5 onglets + rapport PDF enrichi (source unique marketstats.py)
      ···
      - louka/marketstats.py : tous les agrégats du marché (régions, offre,
        inclusions, prix au pi², baisses de prix 30 j, santé des sources) —
        partagés entre /api/stats/detailed et le rapport PDF
      - Onglets : Vue d'ensemble (tuiles + régions + histogramme) · Loyers
        (histogramme, par taille, prix au pi², baisses de prix cliquables) ·
        Régions & villes · L'offre (inclusions %, dispo, animaux, superficie) ·
        Gestionnaires (top 20 + santé des syncs + alertes 24 h)
      - Rapport PDF : page « Offre » ajoutée (barres d'inclusions, prix au pi²,
        baisses de prix), 4 pages, mêmes chiffres que le site
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher 6 files +706 −311
    8. Expansion P2 — Outaouais (10 connecteurs, +136 annonces)
      ···
      garic (admin-ajax JSON avec GPS, 47) · aalto (RentCafe/Zibi via Firecrawl,
      28) · desmarais (14) · souleymane (13) · elite (12) · lacite (crawl-delay 10
      respecté, prix non publiés) + 4 autres. Aucune exclusion nécessaire.
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher 160 files +92,105
    9. PDF légendaires : fiche de propriété par annonce + rapport global du marché
      ···
      - louka/pdfgen.py (reportlab) au style éditorial sharp : logo Lou·Ka dessiné
        (boîte lime tournée), tuiles à ombre décalée, chips encre/lime
      - Fiche (/api/listings/{uid}/pdf, 2 pages) : prix géant + badge « vs le
        secteur », chips clés, photos encadrées, encadré « En bref » (text mining),
        description structurée, inclusions ✓, tuiles du quartier + barres de
        proximité + badges chaleur/criminalité, à proximité avec temps de marche,
        QR code vers la fiche en ligne, attributions de licences
      - Rapport global (/api/stats/rapport.pdf, 3 pages) : grands chiffres,
        couverture par région avec barres, histogramme des loyers, par taille,
        top 20 villes et gestionnaires
      - Boutons : « Télécharger la fiche (PDF) » sur chaque annonce, « Télécharger
        le rapport global (PDF) » sur la page Stats
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher 6 files +778
    10. Expansion P2 — Est & Nord (19 connecteurs, +633 annonces)
      ···
      medway (494 — Lévis 343, Québec 81, La Malbaie, Pont-Rouge, Rivière-du-Loup) ·
      immeubles_aeb (26, Saguenay) · location_saguenay (21, crawl-delay 10 respecté) ·
      appartements_rimouski (17, GPS permutés corrigés) · habitations_jeanne (14,
      Baie-Comeau) · stb_immobilier (11, correctif : Matane pas Lévis) ·
      immeubles_dcl (9, API FleetCart) + 12 autres. Non-connectables documentés :
      habitat_honguedo (Gaspé, vide depuis 2020), immofidelite (RPA hors périmètre).
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher 259 files +255,406
    11. Expansion P2 — Mauricie/Centre-du-Québec/Lanaudière (17 connecteurs, +423 annonces)
      ···
      evoludev (Laravel+JSON-LD, 125) · groupe_robin (admin-ajax, 65) · cosoltec
      (Planpoint x3 vitrines, 51) · info_logement (45) · jutras (35) · gestion_isr
      (API Supabase découverte, 21) + 11 autres. 3 non-connectables documentés
      (nicolyn, gestion_traversy, proplex).
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher 265 files +325,255
    12. Expansion P2 — Chaudière-Appalaches (le_baronet, girs, +11 annonces)
      ···
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher 35 files +24,826
    13. Expansion provinciale P1 : 26 nouveaux connecteurs + 8 extensions (+1 358 annonces)
      ···
      Lot 0 extensions : girescom +Beauce, msi +Thetford, utile +Trois-Rivières/
      Rimouski, cogir/realstar/centurion/plan_a +Gatineau/Sherbrooke.
      Lot 1 plateformes maîtrisées : thrace (Livya, 181), lr_gestion (Rentsync),
      urban_services + immobilia (Building Stack).
      Lot 2 Est & Nord : immeubles_bc (Rimouski), tri_logis (Rouyn), devcore
      (Sept-Îles/Outaouais), multi_logis (Côte-Nord+Lévis), courtemanche (Saguenay).
      Lot 3 Estrie : lachance (82), gesteco (API Umbraco), savouet, laureat_richard,
      desroches. Lot 4 Mauricie/CdQ : location_di, cap_gestion (122), capital_rdr,
      gestion_tb, summum (93). Lot 5 Outaouais/Ch-App : halfred (165), heafey (245),
      brigil (Firecrawl), mellem, quartier_oree, le_st_georges, place_florimay.
      
      Enrichissement complet appliqué : géocodage provincial (+616), POI 1 756
      immeubles, quartier 1 088 annonces jointes (0 hors-zone), normalize corrigé
      (frontières de mots des mois). Registre : 114 sources, 108 connecteurs,
      ~7 350 annonces. Secrets tiers caviardés des fixtures (jetons Mapbox +
      caviardage automatique à l'enregistrement).
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher 937 files +738,569 −561
  5. Sat, Aug 8, 202618 commits

    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 2 files +8 −3
    2. Stats : compte « ailleurs au Québec » distinct du Grand Montréal (expansion provinciale)
      ···
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher 3 files +25 −3
    3. Phase 1 expansion provinciale : recensement 173 gestionnaires (33 P1) + plan de déploiement
      ···
      5 rapports régionaux vérifiés site par site (techno, robots.txt, CGU) +
      familles de plateformes + exclusions documentées + ordre de construction.
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher 6 files +611
    4. Page /bot (transparence LouKaBot) + User-Agent pointant dessus
      ···
      Explique le robot aux gestionnaires : cadence, respect de robots.txt, aucune
      donnée personnelle, contact pour flux officiel/retrait, consigne de blocage.
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher 3 files +61 −1
    5. Passerelle de sortie vers l'annonce originale (à la Centris)
      ···
      /passerelle/:uid — Lou-Ka -> gestionnaire avec points animés, barre de
      progression (2,2 s) puis redirection ; boutons « Y aller maintenant » et
      « Rester sur Lou-Ka ». Sécurité : uid seulement, l'URL de destination vient
      de l'API (aucune redirection ouverte). CTAs de la fiche (desktop + sticky)
      rebranchés ; prefers-reduced-motion respecté.
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      simon-pierre boucher 4 files +163 −2
    6. Text mining des descriptions : nettoyage, extraction, sections, En bref
      ···
      louka/textmine.py (déterministe, ~1 ms/annonce, aucune dépendance) :
      - A nettoyage : TITRES EN MAJUSCULES -> sections, doublons (« Disponible
        disponible »), phrases collées, typographie québécoise (insécables $/%)
      - B extraction : bail minimum, occupants (« 11 chambreurs »), sdb/cuisine
        commune-privée, électros, dépôt, ~40 quartiers (réutilise normalize.py)
      - C sections jamais reformulées ; « En bref » par gabarit strict à partir
        des faits haute-confiance seulement (aucune invention)
      - D confiance par fait, incohérences (quartier mentionné ≠ secteur),
        complétude 0-100 — 25 tests dont un test d'or sur le 2435 boul. Laurier
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      simon-pierre boucher 3 files +1,424
    7. Fiche v2 mobile-first : essentiel d'abord, badge marché, CTA sticky, historique de prix
      ···
      - Ordre mobile : galerie (balayage natif + compteur) -> prix + badge
        « vs le secteur » (seuils -15 %/+10 %) -> chips clés défilantes -> ancres ->
        description -> inclusions (confirmées ✓ vs mentionnées, badge 0 $ de frais
        cachés) -> détails pratiques -> quartier -> à proximité groupé repliable
        avec temps de marche estimés
      - Desktop : 2 colonnes (logement | synthèse+quartier) via display:contents
      - CTA source sticky en bas d'écran mobile (toujours visible)
      - Criminalité reformulée (« 15 % sous la moyenne canadienne ✅ »)
      - Backend : table price_log (historique de prix aux changements), colonne
        digest (description structurée, pipeline en cours), « en ligne depuis X
        jours », plomberie schema/db/web
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      simon-pierre boucher 7 files +504 −142
    8. 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 9 files +1,657
    9. 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 10 files +495
    10. Recherche : enrichissements de quartier à la Centris (26 sources documentées)
      ···
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      simon-pierre boucher 1 file +209
    11. Mobile : menu déroulant animé + sélecteur de consentement témoins + page confidentialité
      ···
      - Header : hamburger animé (-> X), panneau déroulant avec liens en cascade
        (Logements, Carte, Stats, Sources, Confidentialité), backdrop flouté,
        verrouillage du défilement, fermeture à la navigation
      - CookieConsent : bandeau au premier chargement (aucun témoin tiers — honnête),
        3 choix (tout accepter / essentiels / personnaliser avec cases préférences
        et statistiques), mémorisé en localStorage, ré-ouvrable depuis le pied de
        page et la page confidentialité
      - /confidentialite : politique de confidentialité et de témoins
      - Vue carte synchronisée avec l'URL (?view=carte depuis le menu)
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      simon-pierre boucher 5 files +333 −2
    12. POI : stratégie par tuiles Overpass (11 requêtes pour 1249 immeubles, 4 min)
      ···
      L'union d'around() par immeuble était intenable (~13 s/immeuble, throttling).
      On télécharge tous les POI des catégories par tuile de 0,5° (marge 4 km),
      puis calcul local du plus proche par catégorie (préfiltre rectangulaire +
      haversine). Miroir kumi.systems avec rotation vers l'instance officielle.
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      simon-pierre boucher 1 file +107 −38
    13. 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 8 files +277 −3
    14. gitignore : brouillons de correspondance
      ···
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      simon-pierre boucher 1 file +1
    15. Sécurité : caviardage des clés API tierces dans les fixtures de test
      ···
      Les pages HTML archivées des sites sources contenaient leurs clés Google Maps
      (publiques par nature côté client, mais republiées inutilement sur GitHub).
      Toutes caviardées ; l'enregistreur les caviarde désormais automatiquement.
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      simon-pierre boucher 1,330 files +1,616 −1,600
    16. Mission 3 (suite) — 13 nouveaux connecteurs Québec/Lévis (+747 annonces)
      ···
      somex_saintnicolas (145) · quartier_sila (200) · edifia (184 : Le Vital,
      Capella, Cardinal N/S) · aula (69) · girescom (38) · mercini (35) ·
      quartier_mosaique (24) · la_cour (20) · louis14 (18, prix réels via widget
      Livya jamais affichés sur leur site) · immeubles_guillot (7) · sig (4
      résidences étudiantes UL) · promenade_des_forts (2) · centurion (Quartier QB,
      684 unités — 'No Vacancy' actuellement, se peuplera automatiquement).
      
      Découverte transverse : 4 sites (Somex, Sila, Louis XIV, Le Vital) utilisent
      le module Livya (ex-RealVuu) dont le flux RSC Next.js rendu serveur expose
      l'inventaire JSON complet. La Cour + AULA partagent le parseur do-selecteur
      (REST wp-json), déjà éprouvé chez Immostar.
      
      Registre : 88 sources, 82 connecteurs. 191 tests verts.
      Couverture GPS : 95,6 % global · 97,5 % des annonces avec adresse.
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      simon-pierre boucher 260 files +164,397 −3
    17. Géocodage : User-Agent ASCII (le serveur ArcGIS d'Adresses Québec 500 sur les accents)
      ···
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      simon-pierre boucher 1 file +3 −1
    18. Géocodage : repli Adresses Québec (MERN) + nettoyage « bureau »/« (Québec) »
      ···
      Les rues trop récentes pour OpenStreetMap (Courchevel, L'Amont, Étienne-
      Dallaire — développements neufs de Lévis) sont résolues par le géocodeur
      officiel du gouvernement (ArcGIS findAddressCandidates, seuil de score 75).
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      simon-pierre boucher 1 file +46 −1
Menu

Theme