SPB Git

spb/vrai-prix

Public

Vrai-Prix — l'évaluation du vrai prix des propriétés résidentielles au Québec.

History of src/app/HomeClient.tsx Clear filter
page 1
  1. Tue, Oct 20, 2026 1

    1. feat(ventes): registre des ventes récentes (flux Journal de Québec / Journal de Montréal, api.qub.ca)
      …
      - page /ventes : tuiles (30 j, 90 j, médiane, dernière capture), médianes par type,
        filtres GET municipalité / type / prix / période (sans JS requis), tableau
        date · adresse (→ /estimation) · municipalité (→ /municipalite) · type · prix ·
        rôle · écart vs rôle, pagination ; JSON-LD Dataset + fil d'Ariane
      - API /api/ventes (mêmes filtres, Cache-Control 5 min)
      - page municipalité : section « Dernières ventes à … » (12 dernières, n et
        médiane 12 mois, lien vers le registre filtré)
      - navigation : entrée « Ventes » (header + menu mobile), pied de page, bouton
        « Toutes les ventes récentes » sous le flux de l'accueil, onglet Marché actif,
        sitemap
      - lib/ventes.ts + index idx_tx_city_date (city NOCASE, date DESC, amount DESC)
      - connecteur ingest-jdm.mjs : jeton externe QUB_TOKEN / --token (court-circuite
        le login Scrapfly) ; scripts/qub-token-safari.sh (laptop, Safari piloté par
        AppleScript + cliclick, ~/.config/vrai-prix/qub.env) et ingest-via-safari.sh
      
      Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +5
  2. Tue, Sep 8, 2026 1

    1. Méthode du coût + propriétés à vendre (portage uqo-eval → Vrai-Prix)
      …
      Deux nouveaux univers, portés du fork UQO Éval (commits 8fa85f6, 726b80b,
      1779481, 08b3a13) et rebrandés Vrai-Prix :
      
      • /cout — méthode du coût « ultra avancée » : base data/cost.db (184 articles,
        99 assemblages, 16 localisations ; 4 967 observations, 2 895 grilles APCHQ
        2023→2026, 1 084 points StatCan 18-10-0289), moteur déterministe
        (RCN → dépréciation âge-vie / composantes → terrain → indication, fourchette
        P10-P90, confiance A-D décomposée), atelier propriété / construction,
        catalogue d'assemblages, console admin (jeton COST_ADMIN_TOKEN), connecteurs
        Firecrawl (APCHQ, CCQ, StatCan, Canac, BMR, Patrick Morin, imports
        Altus/RSMeans) + planificateur `npm run cost:sync`, PDF « Rapport — Méthode
        du coût » (mot-symbole Vrai-Prix, palette rouge/bordeaux), 9 outils Ka
        (cout_*), lien « Voir la méthode du coût » sur chaque rapport de valeur.
      
      • /a-vendre — toutes les propriétés réellement à vendre au Québec (copie
        Immo-Ka data/immoka.db, ~71 600 annonces vivantes) : recherche FTS +
        filtres, fiche complète (galerie, prix, caractéristiques, historique de prix,
        mesure Vrai-Prix vs prix demandé, duel des méthodes, portrait au rôle,
        voisines), atelier « mon évaluation » (bassin de ventes réelles + annonces,
        comparables, grille d'ajustements en $, réconciliation, confrontation ;
        localStorage), analyse IA du bâtiment (Sonnet 5, photos + description →
        composantes → moteur déterministe du coût, overrides, JSON technique,
        similaires techniques). Table vp_eval (ex-uqo_eval) produite par
        scripts/eval-immoka.ts (shards) + build-marche-stats.mjs.
      
      • /stats/marche + teaser /stats — la mesure à l'épreuve du marché, lue à chaud
        depuis data/marche-stats.json (src/lib/marche-stats.ts) avec repli sur
        l'instantané versionné src/data/marche-stats.json.
      
      • scripts/immoka-sync.sh — rafraîchissement nocturne : .backup Immo-Ka sur
        M4M64b (SSH LAN, clé gardien), rsync delta, ré-évaluation en shards,
        vp_eval + agrégats, index/FTS, bascule atomique, pm2 restart.
      
      • Intégration : nav header/tabbar/footer/sitemap, accueil (2 cartes),
        méthodologie (sections 08 Méthode du coût et 09 Marché), confidentialité
        (analyse IA à la demande, photos publiques, rétention 30 j), prompt système
        de Ka. Rebranding complet : aucune mention UQO / IMM1003 / IMM1033 /
        « laboratoire pédagogique » ; « mode étudiant » → « mode exercice ».
      
      • Dépôt : .gitignore `data/` → `/data/` (src/data/*.json désormais versionné :
        stats.json, stats-v2.json, marche-stats.json) + `tmp/` ; devDep tsx ;
        scripts cost:sync / immoka:sync ; docs/cost-*.md portés.
      
      Tests : 69 vitest (moteur, connecteurs hors ligne, IA hors ligne), tsc propre,
      next build OK.
      
      Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +32
  3. Tue, Aug 25, 2026 2

    1. Barre de navigation mobile commune Groupe KA (KA Tabbar v1)
      …
      Pilule flottante fixe en bas (standard ka-ui/nav, variante Next.js) :
      Estimer · Marché · Ventes · Méthode, accent rouge signature, bilingue fr/en,
      safe-area iOS. Estimer mène immédiatement à la recherche d adresse (focus du
      champ héros, id vp-adresse) ; Ventes ancre le flux des dernières ventes
      réelles de l accueil (id ventes).
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +1 −1
  4. Sat, Aug 22, 2026 1

    1. Upgrade majeur apparence + information : contexte marché, fourchette visuelle, accueil enrichi
      …
      - Fiche estimation : barre de fourchette P10-P90 (marqueurs estimation + rôle),
        faits rapides ($/m², type, année, superficies), section « Le marché autour de
        cette propriété » (courbe d'indice base 100 + tendances 12 mois/2021, ventes
        réelles du secteur avec rayon adaptatif, position percentile dans la
        municipalité), comparables enrichis ($/m², superficie, année)
      - Moteur : MarketContext (estimator) — stats secteur depuis les candidats déjà
        chargés, percentile municipal (db), aussi servi par /api/estimate (manuel)
      - Accueil : pouls du marché (indice par type + variations), dernières ventes
        réelles captées (lien vers l'estimation), bande « comment ça marche »,
        compteur ventes/30 j — page en ISR 1 h
      - DB : index idx_tx_date sur transactions(date)
      - MetricViz : RangeBar, MarketIndexChart, PercentileBar, IndexSpark
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +204 −1
  5. Thu, Aug 13, 2026 2

    1. SEO programmatique — pages municipalités, sitemaps 3,7 M de fiches, métadonnées
      …
      - Fondations : metadataBase, gabarit de titres, og/twitter, canonical par
        page, JSON-LD Organization+WebSite (layout), title/description uniques
        sur toutes les pages statiques (pages clientes scindées en wrapper
        serveur + *Client.tsx).
      - /estimation/[id] : generateMetadata (adresse, estimation, fourchette),
        JSON-LD SingleFamilyResidence/Residence/Place + BreadcrumbList,
        estimation dédupliquée via React cache().
      - Pages programmatiques : /municipalites (index A-Z), /municipalite/[slug]
        (~1 097) et /municipalite/[slug]/[type] (~5 900) — stats agrégées
        (médiane, totaux, croissance 2021-2026), liens HTML vers les fiches,
        municipalités voisines (lib/municipalites.ts, cache mémoire).
      - Sitemaps : /sitemap-index.xml (à soumettre dans GSC) → /sitemap.xml
        (7 043 pages) + /estimation/sitemap/0-83.xml (45 000 fiches chacun,
        plages de rowid). robots.ts (disallow /api/, /compte).
      - noindex : /compte, /estimation/manuelle (espace d'URL paramétrique).
      - Accueil : section « Explorer par municipalité » (maillage indexable).
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +1 −1
    2. SSO « Se connecter avec KA ID » via le hub groupe-ka.com
      …
      Routes /api/auth/ka/{login,callback} + /api/auth/{me,logout}, session
      cookie signée (ka-auth.ts, node:crypto pur), profil hub (hub-profile.ts,
      cache 60 s), page /compte carte de membre, AccountButton au header.
      (Déployé le 2026-08-13 ; l'intégration au layout arrive avec le commit SEO.)
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +99
Menu

Theme