SPB Git forge

spb/uqo-eval

Public
55commits 2branches 0releases
134.4 MBsize
maindefault branch
yesterdaylast push
TypeScript 90.1% JavaScript 3.2% Python 3.2% CSS 1.8% HTML 1.8%
10.3 KB · 190 lines typescript
Raw Blame History
1// UQO Éval — laboratoire pédagogique d'évaluation immobilière2export type Lang = "fr" | "en";34const dict = {5  fr: {6    tagline: "Comprendre comment une propriété est évaluée",7    sub: "Laboratoire pédagogique d'évaluation immobilière : 3,7 millions d'unités d'évaluation et 745 000 ventes réelles au Québec (2021-2026). Chaque estimation montre son calcul en entier — comparables, ajustements, pondérations, intervalle de confiance.",8    searchPlaceholder: "Entrez une adresse (ex. 861 route Elgin, Saint-Pamphile)",9    estimateBtn: "Analyser",10    manualTitle: "Pas d'adresse ? Décrivez la propriété",11    municipality: "Municipalité",12    propertyType: "Type de propriété",13    floorArea: "Superficie habitable (m²)",14    yearBuilt: "Année de construction",15    landArea: "Superficie du terrain (m²)",16    estimatedValue: "Valeur estimée",17    range: "Intervalle de confiance (P10-P90)",18    confidence: "Indice de confiance",19    whyTitle: "Comment cette valeur est calculée",20    modelPart: "Modèle hédonique (LightGBM, 690 000 ventes QC)",21    compsPart: "Comparables ajustés (médiane pondérée)",22    weightModel: "poids du modèle",23    weightComps: "poids des comparables",24    compsTitle: "Comparables utilisés",25    adjTime: "Ajust. marché",26    adjArea: "Ajust. superficie",27    adjAge: "Ajust. âge",28    adjusted: "Prix ajusté",29    sold: "Vendu",30    distance: "Distance",31    weight: "Poids",32    history: "Valeur estimée par année",33    assessed: "Évaluation municipale (rôle 2026)",34    disclaimer:35      "Plateforme à vocation pédagogique, universitaire et expérimentale — cette estimation statistique ne constitue pas une évaluation immobilière professionnelle certifiée (OEAQ).",36    unifamilial: "Unifamiliale",37    plex: "Plex (2-5 logements)",38    condo_ou_multi: "Condo / multirésidentiel",39    chalet: "Chalet",40    maison_mobile: "Maison mobile",41    terrain: "Terrain",42    autre: "Autre",43    notFound: "Adresse introuvable",44    dataNote: "Données : rôles d'évaluation foncière du Québec (MAMH) et transactions publiques.",45    confA: "Très fiable",46    confB: "Fiable",47    confC: "Indicative",48    confD: "Peu fiable — marché mince",49    searchNoResult: "Aucun résultat — essayez « numéro rue municipalité »",50    loading: "Calcul en cours…",51    /* ---- couche pédagogique (mode étudiant) ---- */52    studentMode: "Mode étudiant",53    seeAnalysis: "Voir l'analyse",54    hideAnalysis: "Masquer l'analyse",55    pedIntro:56      "Le mode étudiant révèle les mécanismes du calcul : critères de sélection des comparables, formules d'ajustement, pondérations et construction de l'indice de confiance.",57    pedWhyCompsTitle: "Pourquoi ces comparables ?",58    pedWhyComps:59      "Les ventes candidates sont cherchées dans un rayon adaptatif (2,2 km, élargi si le marché est mince), puis filtrées : même famille de type de propriété, superficie habitable à ±20 % (relâchée à ±40 % si moins de 6 candidates). Les 12 meilleures selon leur poids sont retenues.",60    pedWeightTitle: "Comment le poids de chaque comparable est calculé",61    pedWeight:62      "Le poids est le produit de trois gaussiennes : proximité (σ = 1 500 m), récence (σ = 24 mois) et similarité de superficie (σ = 25 %). Une vente proche, récente et de taille semblable pèse donc beaucoup plus lourd dans la médiane pondérée.",63    pedAdjTitle: "Les trois ajustements, en dollars",64    pedAdjTime:65      "Ajustement de marché : le prix de vente est ramené aux conditions actuelles via l'indice mensuel du type de propriété (une vente de 2023 est « revalorisée » au niveau du marché d'aujourd'hui).",66    pedAdjArea:67      "Ajustement de superficie : 50 % du prix au m² du comparable par m² d'écart avec la propriété analysée, plafonné à ±25 % du prix.",68    pedAdjAge:69      "Ajustement d'âge : 0,5 % du prix par année d'écart de construction, plafonné à ±10 %.",70    pedBlendTitle: "La combinaison finale",71    pedBlend:72      "Lorsque les deux sources existent, l'estimation finale = 65 % modèle hédonique + 35 % comparables ajustés. Le modèle capte les tendances de masse (18 variables) ; les comparables ancrent l'estimation dans le marché local récent.",73    pedConfTitle: "Décomposition de l'indice de confiance",74    pedConfBase: "Base",75    pedConfComps: "Nombre de comparables (+2,5 chacun, max +25)",76    pedConfDisp: "Faible dispersion des comparables (max +20)",77    pedConfModel: "Présence du modèle hédonique (+15)",78    pedConfWidth: "Pénalité de largeur de fourchette (au-delà de 30 %)",79    pedConfTotal: "Score final",80    pedConceptsTitle: "Trois notions à ne pas confondre",81    pedConceptMarket: "Valeur marchande",82    pedConceptMarketDef:83      "Le prix le plus probable sur un marché libre et concurrentiel — c'est ce que la plateforme estime.",84    pedConceptAsking: "Prix demandé",85    pedConceptAskingDef:86      "Le prix affiché par le vendeur — une stratégie de mise en marché, souvent au-dessus (ou parfois sous) la valeur marchande.",87    pedConceptSale: "Prix de transaction",88    pedConceptSaleDef:89      "Le prix réellement payé, observé dans les 745 000 ventes du corpus — la seule mesure directe du marché.",90    pedRoleTitle: "Et la valeur au rôle ?",91    pedRole:92      "L'évaluation municipale sert au calcul de la taxe foncière. Elle est établie 18 à 24 mois avant son entrée en vigueur : dans un marché qui monte, elle est souvent sous la valeur marchande courante.",93  },94  en: {95    tagline: "Understand how a property is appraised",96    sub: "A teaching laboratory for real-estate valuation: 3.7M assessment units and 745k real Québec sales (2021-2026). Every estimate shows its full computation — comparables, adjustments, weights, confidence interval.",97    searchPlaceholder: "Enter an address (e.g. 861 route Elgin, Saint-Pamphile)",98    estimateBtn: "Analyze",99    manualTitle: "No address? Describe the property",100    municipality: "Municipality",101    propertyType: "Property type",102    floorArea: "Living area (m²)",103    yearBuilt: "Year built",104    landArea: "Lot area (m²)",105    estimatedValue: "Estimated value",106    range: "Confidence interval (P10-P90)",107    confidence: "Confidence index",108    whyTitle: "How this value is computed",109    modelPart: "Hedonic model (LightGBM, 690k QC sales)",110    compsPart: "Adjusted comparables (weighted median)",111    weightModel: "model weight",112    weightComps: "comparables weight",113    compsTitle: "Comparables used",114    adjTime: "Market adj.",115    adjArea: "Area adj.",116    adjAge: "Age adj.",117    adjusted: "Adjusted price",118    sold: "Sold",119    distance: "Distance",120    weight: "Weight",121    history: "Estimated value by year",122    assessed: "Municipal assessment (2026 roll)",123    disclaimer:124      "Educational, academic and experimental platform — this statistical estimate is not a certified professional appraisal (OEAQ).",125    unifamilial: "Single-family",126    plex: "Plex (2-5 units)",127    condo_ou_multi: "Condo / multi-residential",128    chalet: "Cottage",129    maison_mobile: "Mobile home",130    terrain: "Land",131    autre: "Other",132    notFound: "Address not found",133    dataNote: "Data: Québec property assessment rolls (MAMH) and public transactions.",134    confA: "Very reliable",135    confB: "Reliable",136    confC: "Indicative",137    confD: "Low reliability — thin market",138    searchNoResult: "No result — try “number street municipality”",139    loading: "Computing…",140    /* ---- pedagogical layer (student mode) ---- */141    studentMode: "Student mode",142    seeAnalysis: "See the analysis",143    hideAnalysis: "Hide the analysis",144    pedIntro:145      "Student mode reveals the mechanics of the computation: comparable selection criteria, adjustment formulas, weights, and how the confidence index is built.",146    pedWhyCompsTitle: "Why these comparables?",147    pedWhyComps:148      "Candidate sales are fetched in an adaptive radius (2.2 km, widened in thin markets), then filtered: same property-type family, living area within ±20% (relaxed to ±40% below 6 candidates). The best 12 by weight are kept.",149    pedWeightTitle: "How each comparable's weight is computed",150    pedWeight:151      "The weight is the product of three Gaussians: proximity (σ = 1,500 m), recency (σ = 24 months) and area similarity (σ = 25%). A nearby, recent, similarly sized sale therefore weighs much more in the weighted median.",152    pedAdjTitle: "The three adjustments, in dollars",153    pedAdjTime:154      "Market adjustment: the sale price is brought to current conditions via the property type's monthly index (a 2023 sale is 're-priced' at today's market level).",155    pedAdjArea:156      "Area adjustment: 50% of the comparable's $/m² per m² of difference with the subject, capped at ±25% of the price.",157    pedAdjAge:158      "Age adjustment: 0.5% of the price per year of construction difference, capped at ±10%.",159    pedBlendTitle: "The final blend",160    pedBlend:161      "When both sources exist, the final estimate = 65% hedonic model + 35% adjusted comparables. The model captures mass trends (18 variables); the comparables anchor the estimate in the recent local market.",162    pedConfTitle: "Confidence index breakdown",163    pedConfBase: "Base",164    pedConfComps: "Number of comparables (+2.5 each, max +25)",165    pedConfDisp: "Low comparable dispersion (max +20)",166    pedConfModel: "Hedonic model available (+15)",167    pedConfWidth: "Range-width penalty (beyond 30%)",168    pedConfTotal: "Final score",169    pedConceptsTitle: "Three notions not to confuse",170    pedConceptMarket: "Market value",171    pedConceptMarketDef:172      "The most probable price on an open, competitive market — this is what the platform estimates.",173    pedConceptAsking: "Asking price",174    pedConceptAskingDef:175      "The price posted by the seller — a marketing strategy, often above (sometimes below) market value.",176    pedConceptSale: "Transaction price",177    pedConceptSaleDef:178      "The price actually paid, observed in the 745k sales of the corpus — the only direct measure of the market.",179    pedRoleTitle: "What about the assessed value?",180    pedRole:181      "The municipal assessment is used to compute property tax. It is set 18-24 months before taking effect: in a rising market, it often sits below current market value.",182  },183} as const;184185export type TKey = keyof (typeof dict)["fr"];186187export function t(lang: Lang, key: TKey): string {188  return dict[lang][key] ?? dict.fr[key];189}190