// Auteur : Simon-Pierre Boucher — contact@spboucher.ai /** * Facteurs de localisation du Québec (cost_locations). Module PUR. * * Main-d'œuvre : les conventions collectives de l'industrie de la construction * (Loi R-20, CCQ) fixent des taux UNIFORMES pour tout le Québec ; seuls les * chantiers isolés / Baie-James / Nunavik ont des grilles distinctes (APCHQ * publie ces grilles). Le facteur main-d'œuvre est donc 1,00 partout, sauf * régions éloignées (primes d'éloignement, hébergement — hypothèse). * * Matériaux / équipement : surcoût de transport et de disponibilité par * rapport à Montréal (référence 1,00) — HYPOTHÈSES documentées, * modifiables en base ; aucun indice public ne publie de facteur municipal. */ import type { CostLocation } from "../types"; export interface LocationSeed extends Omit { /** centre approximatif pour l'affectation par distance */ lat: number; lng: number; /** rayon (km) à l'intérieur duquel une propriété est affectée à ce centre */ radiusKm: number; /** municipalités affectées explicitement (nom MAMH) */ municipalities: string[]; } const L = (code: string, fr: string, en: string, region: string, m: number, l: number, e: number, lat: number, lng: number, radiusKm: number, municipalities: string[] = []): LocationSeed => ({ code, nameFr: fr, nameEn: en, regionCode: region, materialFactor: m, labourFactor: l, equipmentFactor: e, overallFactor: Math.round((0.5 * m + 0.42 * l + 0.08 * e) * 1000) / 1000, lat, lng, radiusKm, municipalities, }); export const LOCATION_SEEDS: LocationSeed[] = [ L("QC-MTL", "Montréal", "Montréal", "06", 1.0, 1.0, 1.0, 45.5019, -73.5674, 25, ["Montréal", "Westmount", "Mont-Royal", "Côte-Saint-Luc", "Hampstead", "Montréal-Est", "Montréal-Ouest", "Dorval", "Pointe-Claire", "Kirkland", "Beaconsfield", "Dollard-Des Ormeaux", "Sainte-Anne-de-Bellevue", "Baie-D'Urfé", "Senneville"]), L("QC-LAV", "Laval", "Laval", "13", 1.0, 1.0, 1.0, 45.6066, -73.7124, 15, ["Laval"]), L("QC-LNG", "Longueuil et Rive-Sud", "Longueuil and South Shore", "16", 1.0, 1.0, 1.0, 45.5312, -73.5181, 30, ["Longueuil", "Brossard", "Boucherville", "Saint-Lambert", "Saint-Bruno-de-Montarville", "Sainte-Julie", "Chambly", "La Prairie", "Candiac", "Saint-Constant", "Châteauguay", "Beloeil", "Saint-Hubert"]), L("QC-LAU-LAN", "Laurentides — Lanaudière (couronne nord)", "Laurentians — Lanaudière (north shore)", "15", 1.01, 1.0, 1.01, 45.75, -73.75, 60, ["Terrebonne", "Repentigny", "Mascouche", "Blainville", "Mirabel", "Saint-Jérôme", "Boisbriand", "Sainte-Thérèse", "Saint-Eustache", "Deux-Montagnes", "L'Assomption", "Joliette"]), L("QC-QUE", "Québec", "Québec City", "03", 1.01, 1.0, 1.0, 46.8139, -71.208, 30, ["Québec", "L'Ancienne-Lorette", "Saint-Augustin-de-Desmaures"]), L("QC-LEV", "Lévis — Chaudière-Appalaches", "Lévis — Chaudière-Appalaches", "12", 1.02, 1.0, 1.01, 46.7382, -71.2465, 40, ["Lévis", "Saint-Georges", "Thetford Mines", "Montmagny", "Sainte-Marie"]), L("QC-GAT", "Gatineau — Outaouais", "Gatineau — Outaouais", "07", 1.02, 1.0, 1.01, 45.4765, -75.7013, 40, ["Gatineau", "Chelsea", "Cantley", "Val-des-Monts", "L'Ange-Gardien", "Pontiac"]), L("QC-SHE", "Sherbrooke — Estrie", "Sherbrooke — Eastern Townships", "05", 1.02, 1.0, 1.01, 45.4042, -71.8929, 50, ["Sherbrooke", "Magog", "Granby", "Cowansville", "Coaticook"]), L("QC-TRV", "Trois-Rivières — Mauricie — Centre-du-Québec", "Trois-Rivières — Mauricie — Centre-du-Québec", "04", 1.02, 1.0, 1.01, 46.3432, -72.5477, 60, ["Trois-Rivières", "Shawinigan", "Drummondville", "Victoriaville", "Bécancour", "Nicolet"]), L("QC-SAG", "Saguenay — Lac-Saint-Jean", "Saguenay — Lac-Saint-Jean", "02", 1.04, 1.0, 1.03, 48.4284, -71.0683, 90, ["Saguenay", "Alma", "Roberval", "Dolbeau-Mistassini", "Saint-Félicien"]), L("QC-BSL", "Bas-Saint-Laurent", "Lower Saint Lawrence", "01", 1.04, 1.0, 1.03, 48.4489, -68.523, 100, ["Rimouski", "Rivière-du-Loup", "Matane", "La Pocatière", "Amqui"]), L("QC-ABT", "Abitibi-Témiscamingue", "Abitibi-Témiscamingue", "08", 1.06, 1.02, 1.05, 48.2354, -79.0227, 150, ["Rouyn-Noranda", "Val-d'Or", "Amos", "La Sarre", "Ville-Marie"]), L("QC-CDN", "Côte-Nord", "North Shore", "09", 1.08, 1.03, 1.06, 49.2181, -68.1518, 250, ["Baie-Comeau", "Sept-Îles", "Port-Cartier", "Forestville"]), L("QC-GIM", "Gaspésie — Îles-de-la-Madeleine", "Gaspésie — Magdalen Islands", "11", 1.07, 1.02, 1.05, 48.8323, -64.4896, 200, ["Gaspé", "Chandler", "Percé", "Sainte-Anne-des-Monts", "Carleton-sur-Mer", "Les Îles-de-la-Madeleine"]), L("QC-NDQ", "Nord-du-Québec", "Northern Québec", "10", 1.2, 1.12, 1.15, 51.5, -76.0, 600, ["Chibougamau", "Lebel-sur-Quévillon", "Matagami", "Chapais"]), L("QC-RUR", "Québec — autres régions (rural)", "Québec — other regions (rural)", "00", 1.03, 1.0, 1.02, 46.5, -72.0, 0), ];