Repository Public
-
Tue, Aug 18, 20261 commit
-
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>
-
-
Sun, Aug 9, 202610 commits
-
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>
-
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>
-
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>
-
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>
-
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>
-
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>
-
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>
-
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>
-
Expansion P2 — Chaudière-Appalaches (le_baronet, girs, +11 annonces)
···
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
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>
-
-
Sat, Aug 8, 20269 commits
-
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>
-
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>
-
Mission 1b (lot 8) — logisbourg, logisco, logisma, lokalia, lynk_olymbec
···
- lokalia : +12 annonces (variantes « + DEN » dédupliquées à tort), GPS 100 % - logisco : adresse complète JSON-LD, superficie/étage structurés, 4 sections de commodités, pages unité en cache - lynk_olymbec : valeurs semi-inventées supprimées, prix/dispo réels RentCafe - normalize.py : non-chauffé avec trait d'union, branchements combinés, « refusés sauf un chat » -> conditions, « (sans utilisation) » neutralisé, fourchettes « de X $ à Y $ » = prix plancher Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
Mission 1b (lot 5) — gestipro, gimcote, gparadis, groupe_dallaire, hazelview
···
- groupe_dallaire : superficie 49 % -> 100 %, inclusions réelles par unité, fiches en cache (180 requêtes/sync évitées) - gestipro : GPS 100 %, animaux 92 %, inclusions depuis « Frais et charge » - gimcote : description/animaux/meublé 100 %, GPS 100 % - gparadis : +1 immeuble Saint-Roch (regex pluriels) - normalize.py : « à la charge des locataires » -> non inclus, « actuellement vacant » -> disponible maintenant Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
Mission 1b (lot 6) — headway, huma, immomarketing, immostar, interrent
···
- interrent : bug amenities (champ inexistant) corrigé, animaux 0 -> 203 - immostar : commodités 0 -> 100 % sur les 6 micro-sites, superficie 100 % - huma : dates de dispo réelles par unité, adresses et GPS par phase - immomarketing : GPS 100 %, cache detail, animaux 53/82 - normalize.py : animal au singulier, promos neutralisées, prix stationnement complet (formats 150 $ et $85) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
Mission 1b (lots 4,7,9-13) + mission 2 — 37 connecteurs mis à niveau, Logis-Experts activé
···
Nouveau connecteur logis_experts (logis-experts.com, API JSON) : 516 annonces, 188 immeubles, prix/adresse/code postal/secteur/lat-lng à 100 %, superficie et commodités via pages détail en cache. Faits saillants de l'audit : - lakle : +20 unités (phases 2-3 ignorées), superficie terrasse->habitable - dma_locago : +11 unités Tour Frontenac, correction des disponibilités - equinoxe_batimo : adresses 0 % -> 100 % (602 annonces) - sgiq : lat/lng 88 %, animaux 100 %, sync 83 s -> 4 s - msi/picard/progim/capreit… : pages détail migrées vers le cache BD - utile : statut hero corrigé (2 annonces faussement « Complet ») - per : « Animaux permis : Non » inversé corrigé normalize.py : ~20 nouveaux cas génériques remontés par les agents (dates anglaises mois-jour, animaux singulier/poids/interdits, aires communes, piscine/stationnement « chauffé », balcon négatif, vélo, « ($) », semi-meublé, superficies balcon/terrasse ignorées, milliers avec virgule, hydro/heat/terrace anglais, nombres en toutes lettres) — chaque cas couvert par un test. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
Mission 1b (lot 1) — akelius, app_urbains, axia, beaudoin, boardwalk, bribourg
···
- akelius : JSON détail découvert (pets 221/247, meublé, inclusions, photos HD) - boardwalk : superficie 100 %, dispo réelle, sync 210 s -> 54 s (cache detail) - beaudoin : commodités 100 % (additional_features), superficie 67 % - app_urbains : superficie 100 %, adresse Le Charlie corrigée - normalize.py : « chiens et chats acceptés » -> oui (priorité sur conditions) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
Mission 1b (lots 2-3) — audit et mise à niveau de 10 connecteurs + correctifs normalisation
···
Connecteurs : brio, brivia_1sp, brochu, capreit, cogir, contraste, copley, cromwell, denux, devimco — fixtures + tests + rapports d'audit. Faits saillants : - cogir : collision d'uid corrigée (283 annonces au lieu de 270), annonces fantômes « liste d'attente » exclues - capreit : lat/lng 100 %, fiches derrière cache detail (sync 75 s -> 0,4 s) - devimco : adresses 84 % -> 100 %, superficie structurée - contraste : commodités 0 % -> 100 %, faux « 0 $/mois » supprimés - brivia_1sp : API AJAX des plans découverte (dispo réelle, superficies) normalize.py : négations chauffage/éclairage, « chiens non permis » -> pets conditions, options payantes neutralisées (optionnel/en sus), stationnement mixte int+ext, étage restreint aux commodités, refrigerator/cooling anglais. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
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>
-