Vrai-Prix — l'évaluation du vrai prix des propriétés résidentielles au Québec.
TypeScript 90.2%
JavaScript 3.5%
Python 3.4%
CSS 1.9%
HTML 0.6%
1// Auteur : Simon-Pierre Boucher — contact@spboucher.ai2/**3 * Catalogue initial des assemblages résidentiels (cost_assemblies +4 * cost_assembly_components). Module PUR.5 *6 * Chaque composant : quantité d'article par UNITÉ D'ASSEMBLAGE, facteur de7 * pertes, heures de main-d'œuvre par unité d'assemblage (métier), coût8 * d'équipement par unité. Quantités et productivités = HYPOTHÈSES DOCUMENTÉES9 * de prise de quantités résidentielle (16 po c/c, hauteur d'étage 9 pi…),10 * modifiables en base ; les prix viennent de la base de coûts, jamais d'ici.11 */12import type { AssemblyComponent, CanonicalUnit, Quality, UxCategory } from "../types";1314export const ASSEMBLY_VERSION = 1;1516export interface AssemblySeed {17 code: string;18 mf: string;19 cat: UxCategory;20 fr: string;21 en: string;22 descFr: string;23 descEn: string;24 unit: CanonicalUnit;25 life: number; // vie économique (années)26 group: string; // groupe de condition (roof, windows, kitchen…)27 quality?: Quality;28 buildingType?: string;29 components: AssemblyComponent[];30}3132type CO = { w?: number; h?: number; t?: string; e?: number; n?: string };33let seq = 0;34const C = (itemCode: string, quantity: number, o: CO = {}): AssemblyComponent => ({35 itemCode,36 quantity,37 wasteFactor: o.w ?? 0,38 labourHours: o.h ?? 0,39 trade: o.t ?? null,40 equipmentCost: o.e ?? 0,41 sequence: ++seq,42 notes: o.n ?? null,43});44/** heures seules (aucun article) */45const H = (trade: string, hours: number, n?: string): AssemblyComponent => C("", 0, { h: hours, t: trade, n });46/** équipement seul */47const E = (cost: number, n: string): AssemblyComponent => C("", 0, { e: cost, n });4849const A = (50 code: string,51 mf: string,52 cat: UxCategory,53 fr: string,54 en: string,55 unit: CanonicalUnit,56 life: number,57 group: string,58 descFr: string,59 descEn: string,60 components: AssemblyComponent[],61 o: { quality?: Quality; buildingType?: string } = {}62): AssemblySeed => {63 seq = 0;64 return { code, mf, cat, fr, en, unit, life, group, descFr, descEn, components: components.map((c, i) => ({ ...c, sequence: i + 1 })), ...o };65};6667export const ASSEMBLY_SEEDS: AssemblySeed[] = [68 /* ================================================================ SITE */69 A("SITE-EXCAV-BASEMENT", "31", "excavation", "Excavation de sous-sol", "Basement excavation", "m3", 75, "structure",70 "Excavation mécanique du volume de sous-sol (pelle 8-14 t), moitié des déblais évacuée, moitié réutilisée en remblai. 22 m³/h.",71 "Mechanical excavation of the basement volume (8-14 t excavator), half hauled away, half reused as backfill. 22 m³/h.",72 [C("EXCAVATOR-HOUR", 0.045, { n: "22 m³ excavés par heure-machine" }), C("TRUCK-HAUL", 0.5, { n: "50 % des déblais évacués" }), H("operateur", 0.045), H("manoeuvre", 0.02)]),73 A("SITE-BACKFILL", "31", "excavation", "Remblai et compaction", "Backfill and compaction", "m3", 75, "structure",74 "Remblai périmétrique : 40 % de gravier importé, 60 % de déblais réutilisés, compaction mécanique.",75 "Perimeter backfill: 40 % imported gravel, 60 % reused spoil, mechanical compaction.",76 [C("BACKFILL-GRAVEL", 0.4), C("EXCAVATOR-HOUR", 0.03), H("operateur", 0.03), H("manoeuvre", 0.03), E(0.8, "plaque vibrante")]),77 A("SITE-DRAIN-FRENCH", "33", "excavation", "Drain français", "French drain", "pi_lin", 40, "structure",78 "Drain perforé 4 po au pied de la semelle, enrobé de pierre nette (≈ 0,05 m³/pi lin).",79 "4 in perforated drain at the footing, wrapped in clear stone (≈ 0.05 m³/lin ft).",80 [C("WEEPING-TILE-4IN", 1.05), C("BACKFILL-GRAVEL", 0.05, { n: "pierre nette autour du drain" }), H("manoeuvre", 0.06)]),81 A("SITE-SERVICE-CONNECTIONS", "33", "site", "Branchements aqueduc, égout et électricité", "Water, sewer and electrical service connections", "lump", 50, "site",82 "Tranchée, conduites de branchement et raccordements aux réseaux municipaux (forfait par bâtiment).",83 "Trench, service pipes and connections to municipal networks (lump sum per building).",84 [C("SERVICE-CONNECTIONS", 1), C("EXCAVATOR-HOUR", 4), H("operateur", 4), H("plombier", 6), H("manoeuvre", 8)]),8586 /* ========================================================= FONDATIONS */87 A("FND-FOOTING", "03", "foundation", "Semelle de béton 24 × 10 po", "Concrete footing 24 × 10 in", "pi_lin", 75, "structure",88 "Semelle continue coffrée, 2 barres 10M, béton 30 MPa (0,047 m³/pi lin).",89 "Continuous formed footing, 2 × 10M bars, 30 MPa concrete (0.047 m³/lin ft).",90 [C("CONC-READYMIX-30MPA", 0.047, { w: 0.05 }), C("REBAR-10M-20FT", 0.1), C("LUM-2X10-12", 0.02, { n: "coffrage de semelle (réutilisé 4×)" }), H("coffreur", 0.12), H("ferrailleur", 0.02), H("manoeuvre", 0.05)]),91 A("FND-WALL-POURED-8IN", "03", "foundation", "Mur de fondation béton coulé 8 po", "Poured concrete foundation wall 8 in", "pi2", 75, "structure",92 "Mur coulé en coffrages modulaires, armature 10M, boulons d'ancrage, pompe à béton (0,0189 m³/pi²).",93 "Wall poured in modular forms, 10M rebar, anchor bolts, concrete pump (0.0189 m³/sq ft).",94 [C("CONC-READYMIX-30MPA", 0.0189, { w: 0.05 }), C("REBAR-10M-20FT", 0.05), C("FORM-RENTAL", 1), C("ANCHOR-BOLT", 0.02), H("coffreur", 0.09), H("ferrailleur", 0.01), H("manoeuvre", 0.03), E(0.6, "pompe à béton")]),95 A("FND-WALL-BLOCK-8IN", "04", "foundation", "Mur de fondation en blocs de béton 8 po", "Concrete-block foundation wall 8 in", "pi2", 70, "structure",96 "Blocs 8 × 8 × 16 posés au mortier type N (1,125 bloc/pi²), armature verticale.",97 "8 × 8 × 16 blocks laid in type N mortar (1.125 block/sq ft), vertical rebar.",98 [C("CONC-BLOCK-8IN", 1.125, { w: 0.04 }), C("MORTAR-TYPE-N-30KG", 0.094), C("REBAR-10M-20FT", 0.02), H("briqueteur", 0.12), H("manoeuvre", 0.06)]),99 A("FND-SLAB-BASEMENT-4IN", "03", "foundation", "Dalle de sous-sol 4 po", "Basement slab 4 in", "pi2", 75, "structure",100 "Gravier compacté 6 po, pare-vapeur 6 mil, béton 30 MPa 4 po (0,0094 m³/pi²), finition truelle.",101 "6 in compacted gravel, 6 mil vapour barrier, 4 in 30 MPa concrete (0.0094 m³/sq ft), trowel finish.",102 [C("BACKFILL-GRAVEL", 0.0142), C("POLY-6MIL", 1, { w: 0.1 }), C("CONC-READYMIX-30MPA", 0.0094, { w: 0.05 }), H("cimentier", 0.02), H("manoeuvre", 0.015), E(0.1, "pompe/vibrateur")]),103 A("FND-SLAB-ON-GRADE-INSULATED", "03", "foundation", "Dalle sur sol isolée 5 po", "Insulated slab-on-grade 5 in", "pi2", 75, "structure",104 "Gravier 8 po, isolant XPS 2 po, pare-vapeur, treillis 6 × 6, béton 5 po, bordure épaissie.",105 "8 in gravel, 2 in XPS, vapour barrier, 6 × 6 mesh, 5 in concrete, thickened edge.",106 [C("BACKFILL-GRAVEL", 0.02), C("INS-XPS-2IN", 1, { w: 0.05 }), C("POLY-6MIL", 1, { w: 0.1 }), C("WIRE-MESH-6X6", 1, { w: 0.1 }), C("CONC-READYMIX-30MPA", 0.0118, { w: 0.05 }), C("REBAR-10M-20FT", 0.01), H("cimentier", 0.03), H("coffreur", 0.01), H("manoeuvre", 0.02), E(0.15, "pompe")]),107 A("FND-SLAB-GARAGE-5IN", "03", "garage", "Dalle de garage 5 po", "Garage slab 5 in", "pi2", 60, "structure",108 "Gravier 8 po, pare-vapeur, treillis 6 × 6, béton 5 po avec pente vers la porte.",109 "8 in gravel, vapour barrier, 6 × 6 mesh, 5 in concrete sloped to the door.",110 [C("BACKFILL-GRAVEL", 0.02), C("POLY-6MIL", 1, { w: 0.1 }), C("WIRE-MESH-6X6", 1, { w: 0.1 }), C("CONC-READYMIX-30MPA", 0.0118, { w: 0.05 }), H("cimentier", 0.025), H("manoeuvre", 0.02), E(0.1, "pompe")]),111 A("FND-DAMPPROOF-MEMBRANE", "07", "foundation", "Imperméabilisation et membrane de drainage", "Dampproofing and drainage membrane", "pi2", 40, "structure",112 "Enduit bitumineux + membrane alvéolée sur la face extérieure sous le niveau du sol.",113 "Bituminous coating + dimpled membrane on the exterior face below grade.",114 [C("DAMPPROOF", 1), C("DRAIN-MEMBRANE", 1, { w: 0.05 }), H("manoeuvre", 0.02)]),115 A("FND-PIER", "03", "foundation", "Pieu de béton (tube 10 po)", "Concrete pier (10 in tube)", "unit", 50, "structure",116 "Tube de coffrage 10 po × 4 pi, béton en sacs, boulon d'ancrage (chalets, galeries).",117 "10 in × 4 ft form tube, bagged concrete, anchor bolt (cottages, decks).",118 [C("CONCRETE-PIER-TUBE", 1), C("CONC-BAG-30KG", 4), C("ANCHOR-BOLT", 1), H("manoeuvre", 1.0), H("charpentier", 0.3)]),119120 /* ========================================================== STRUCTURE */121 A("STR-FLOOR-IJOIST", "06", "structure", "Plancher en poutrelles ajourées 11 7/8 po", "I-joist floor 11 7/8 in", "pi2", 75, "structure",122 "Poutrelles 16 po c/c (0,8 pi lin/pi² avec solives de rive), poutre LVL (allocation), sous-plancher OSB 5/8 L&R collé-vissé.",123 "I-joists 16 in o.c. (0.8 lin ft/sq ft incl. rim), LVL beam allowance, 5/8 T&G OSB subfloor glued and screwed.",124 [C("IJOIST-11.875", 0.8, { w: 0.03 }), C("LVL-1.75X11.875", 0.05), C("OSB-5/8-TG-4X8", 1, { w: 0.06 }), C("SUBFLOOR-ADHESIVE", 0.012), C("NAILS-FRAMING", 0.02), C("HANGERS-JOIST", 0.03), H("charpentier", 0.055)]),125 A("STR-FLOOR-2X10", "06", "structure", "Plancher en solives 2 × 10", "2 × 10 joist floor", "pi2", 75, "structure",126 "Solives 2 × 10 à 16 po c/c avec entretoises, sous-plancher OSB 5/8 collé-vissé (construction courante avant 2000).",127 "2 × 10 joists 16 in o.c. with blocking, 5/8 OSB subfloor glued and screwed (typical pre-2000 construction).",128 [C("LUM-2X10-12", 0.07, { w: 0.07 }), C("OSB-5/8-TG-4X8", 1, { w: 0.06 }), C("SUBFLOOR-ADHESIVE", 0.012), C("NAILS-FRAMING", 0.025), H("charpentier", 0.06)]),129 A("STR-WALL-2X6-EXT", "06", "structure", "Mur extérieur ossature 2 × 6 (charpente + revêtement intermédiaire)", "Exterior 2 × 6 framed wall (framing + sheathing)", "pi2", 75, "structure",130 "Montants 2 × 6 à 16 po c/c (0,10/pi² incl. coins, poteaux nains), lisses et sablières doubles, linteaux, OSB 7/16, pare-air. Hors isolation et finitions.",131 "2 × 6 studs 16 in o.c. (0.10/sq ft incl. corners, cripples), double plates, headers, 7/16 OSB, house wrap. Excludes insulation and finishes.",132 [C("LUM-2X6-92", 0.1, { w: 0.05 }), C("LUM-2X6-8", 0.06, { w: 0.07, n: "lisses, sablières, linteaux" }), C("OSB-7/16-4X8", 1, { w: 0.08 }), C("HOUSEWRAP", 1, { w: 0.1 }), C("NAILS-FRAMING", 0.03), H("charpentier", 0.075)]),133 A("STR-WALL-2X4-INT", "06", "structure", "Cloison intérieure ossature 2 × 4", "Interior 2 × 4 partition", "pi2", 75, "structure",134 "Montants 2 × 4 à 16 po c/c, lisse et sablière double. Hors gypse.",135 "2 × 4 studs 16 in o.c., plate and double top plate. Excludes drywall.",136 [C("LUM-2X4-92", 0.1, { w: 0.05 }), C("LUM-2X4-8", 0.05, { w: 0.07 }), C("NAILS-FRAMING", 0.02), H("charpentier", 0.05)]),137 A("STR-BEAM-LVL", "06", "structure", "Poutre LVL 2 plis 1 3/4 × 11 7/8 po", "2-ply LVL beam 1 3/4 × 11 7/8 in", "pi_lin", 75, "structure",138 "Poutre porteuse composée de deux plis LVL clouée, appuis métalliques.",139 "Load-bearing beam of two nailed LVL plies, metal bearings.",140 [C("LVL-1.75X11.875", 2, { w: 0.03 }), C("HANGERS-JOIST", 0.1), H("charpentier", 0.15)]),141 A("STR-COLUMN-STEEL", "05", "structure", "Colonne d'acier ajustable", "Adjustable steel column", "unit", 75, "structure",142 "Colonne réglable sous poutre principale, sur semelle.", "Adjustable column under main beam, on footing.",143 [C("STEEL-COLUMN-ADJ", 1), H("charpentier", 0.5)]),144 A("STR-ROOF-TRUSS-OSB", "06", "structure", "Toit en fermes préfabriquées + OSB", "Prefabricated truss roof + OSB", "pi2", 75, "structure",145 "Fermes 24 po c/c livrées et grutées, contreventement, OSB 7/16 avec agrafes H, attaches anti-soulèvement (par pi² de surface de toit).",146 "Trusses 24 in o.c. delivered and craned, bracing, 7/16 OSB with H-clips, hurricane ties (per sq ft roof area).",147 [C("TRUSS-ROOF", 1), C("OSB-7/16-4X8", 1, { w: 0.08 }), C("NAILS-FRAMING", 0.025), C("HANGERS-JOIST", 0.03, { n: "attaches anti-soulèvement" }), H("charpentier", 0.05), E(0.35, "grue de levage")]),148 A("STR-ROOF-RAFTER-2X8", "06", "structure", "Toit en chevrons 2 × 8 + OSB", "2 × 8 rafter roof + OSB", "pi2", 75, "structure",149 "Chevrons 2 × 8 à 16 po c/c, faîtière, entraits, OSB 7/16 (construction traditionnelle, par pi² de toit).",150 "2 × 8 rafters 16 in o.c., ridge, collar ties, 7/16 OSB (traditional construction, per sq ft roof).",151 [C("LUM-2X8-12", 0.09, { w: 0.07 }), C("OSB-7/16-4X8", 1, { w: 0.08 }), C("NAILS-FRAMING", 0.025), H("charpentier", 0.08)]),152 A("STR-STAIRS-INTERIOR", "06", "interior", "Escalier intérieur fini (13 contremarches)", "Finished interior staircase (13 risers)", "unit", 50, "interior",153 "Limons 2 × 12, marches de chêne, contremarches contreplaqué, main courante et balustrade 12 pi.",154 "2 × 12 stringers, oak treads, plywood risers, 12 ft handrail and balustrade.",155 [C("LUM-2X12-12", 3, { w: 0.05 }), C("STAIR-TREADS-OAK", 13), C("PLY-3/4-TG-4X8", 32, { w: 0.06 }), C("STAIR-RAILING", 12), H("charpentier", 16)]),156157 /* ================================================ ENVELOPPE / ISOLATION */158 A("ENV-INSUL-WALL-R24", "07", "insulation", "Isolation de mur R24 + pare-vapeur", "Wall insulation R24 + vapour barrier", "pi2", 60, "structure",159 "Natte de laine minérale R24 dans cavité 2 × 6, polyéthylène 6 mil scellé.",160 "R24 mineral-wool batt in 2 × 6 cavity, sealed 6 mil polyethylene.",161 [C("INS-BATT-R24-2X6", 1, { w: 0.05 }), C("POLY-6MIL", 1, { w: 0.1 }), C("CAULK-TUBE", 0.005), H("charpentier", 0.012)]),162 A("ENV-INSUL-WALL-R20", "07", "insulation", "Isolation de mur R20 + pare-vapeur", "Wall insulation R20 + vapour barrier", "pi2", 60, "structure",163 "Natte de fibre de verre R20 dans cavité 2 × 6, polyéthylène 6 mil.", "R20 fibreglass batt in 2 × 6 cavity, 6 mil polyethylene.",164 [C("INS-BATT-R20-2X6", 1, { w: 0.05 }), C("POLY-6MIL", 1, { w: 0.1 }), C("CAULK-TUBE", 0.005), H("charpentier", 0.012)]),165 A("ENV-INSUL-WALL-R12", "07", "insulation", "Isolation de mur R12 (2 × 4) + pare-vapeur", "Wall insulation R12 (2 × 4) + vapour barrier", "pi2", 60, "structure",166 "Natte R12 dans cavité 2 × 4 (bâtiments d'avant 1985), polyéthylène.", "R12 batt in 2 × 4 cavity (pre-1985 buildings), polyethylene.",167 [C("INS-BATT-R12-2X4", 1, { w: 0.05 }), C("POLY-6MIL", 1, { w: 0.1 }), H("charpentier", 0.011)]),168 A("ENV-INSUL-ATTIC-R50", "07", "insulation", "Isolation de comble R50 (cellulose soufflée)", "Attic insulation R50 (blown cellulose)", "pi2", 40, "structure",169 "Pare-vapeur au plafond, cellulose soufflée R50, évents de toit (1 par 500 pi²).",170 "Ceiling vapour barrier, R50 blown cellulose, roof vents (1 per 500 sq ft).",171 [C("INS-BLOWN-CELLULOSE-R50", 1, { w: 0.03 }), C("POLY-6MIL", 1, { w: 0.1 }), C("ROOF-VENT", 0.002), H("charpentier", 0.01), E(0.08, "souffleuse")]),172 A("ENV-INSUL-BASEMENT-R20", "07", "basement", "Isolation de mur de sous-sol R20 (XPS + 2 × 4 + R12)", "Basement wall insulation R20 (XPS + 2 × 4 + R12)", "pi2", 50, "interior",173 "XPS 2 po contre le béton, cloison 2 × 4, natte R12, pare-vapeur. Hors gypse.",174 "2 in XPS against concrete, 2 × 4 frame, R12 batt, vapour barrier. Excludes drywall.",175 [C("INS-XPS-2IN", 1, { w: 0.05 }), C("LUM-2X4-92", 0.1, { w: 0.05 }), C("LUM-2X4-8", 0.05, { w: 0.07 }), C("INS-BATT-R12-2X4", 1, { w: 0.05 }), C("POLY-6MIL", 1, { w: 0.1 }), H("charpentier", 0.06)]),176 A("ENV-SIDING-VINYL", "07", "envelope", "Revêtement de vinyle sur fourrures", "Vinyl siding on furring", "pi2", 35, "exterior",177 "Fourrures 1 × 3 à 16 po c/c, déclin de vinyle, moulures J et coins.", "1 × 3 furring 16 in o.c., vinyl siding, J-channel and corners.",178 [C("SIDING-VINYL", 1, { w: 0.1 }), C("SIDING-VINYL-ACCESS", 0.25), C("LUM-1X3-8", 0.1, { w: 0.08 }), C("NAILS-FRAMING", 0.01), H("charpentier", 0.045)]),179 A("ENV-SIDING-BRICK", "04", "envelope", "Placage de brique", "Brick veneer", "pi2", 75, "exterior",180 "Brique modulaire (7/pi²), mortier type N, attaches, solins, échafaudage.", "Modular brick (7/sq ft), type N mortar, ties, flashing, scaffolding.",181 [C("BRICK-CLAY", 7, { w: 0.05 }), C("MORTAR-TYPE-N-30KG", 0.1), C("BRICK-TIES", 0.5), C("FLASHING-ALU", 0.05), H("briqueteur", 0.16), H("manoeuvre", 0.08), E(0.4, "échafaudage")]),182 A("ENV-SIDING-FIBERCEMENT", "07", "envelope", "Revêtement de fibrociment", "Fiber-cement siding", "pi2", 45, "exterior",183 "Planches de fibrociment sur fourrures, solins, scellant.", "Fiber-cement planks on furring, flashing, sealant.",184 [C("SIDING-FIBERCEMENT", 1, { w: 0.1 }), C("LUM-1X3-8", 0.1, { w: 0.08 }), C("FLASHING-ALU", 0.05), C("NAILS-FRAMING", 0.012), C("CAULK-TUBE", 0.01), H("charpentier", 0.065)]),185 A("ENV-SIDING-WOOD", "07", "envelope", "Déclin de bois (cèdre) peint", "Painted wood (cedar) siding", "pi2", 30, "exterior",186 "Déclin de cèdre sur fourrures, 2 couches de peinture extérieure.", "Cedar siding on furring, 2 coats of exterior paint.",187 [C("SIDING-WOOD-CEDAR", 1, { w: 0.1 }), C("LUM-1X3-8", 0.1, { w: 0.08 }), C("PAINT-EXT-GAL", 0.006), C("NAILS-FRAMING", 0.012), H("charpentier", 0.06), H("peintre", 0.015)]),188 A("ENV-SIDING-STONE", "04", "envelope", "Placage de pierre décorative", "Manufactured stone veneer", "pi2", 60, "exterior",189 "Pierre reconstituée posée au mortier sur lattis.", "Manufactured stone set in mortar on lath.",190 [C("STONE-VENEER", 1, { w: 0.08 }), C("MORTAR-TYPE-N-30KG", 0.08), H("briqueteur", 0.2), H("manoeuvre", 0.08), E(0.3, "échafaudage")]),191 A("ENV-SIDING-STEEL", "07", "envelope", "Revêtement d'acier prépeint", "Pre-painted steel siding", "pi2", 45, "exterior",192 "Panneaux d'acier sur fourrures, vis de couleur.", "Steel panels on furring, colour-matched screws.",193 [C("SIDING-STEEL", 1, { w: 0.07 }), C("LUM-1X3-8", 0.1, { w: 0.08 }), C("SCREWS-DECK", 0.01), H("charpentier", 0.05)]),194 A("ENV-SOFFIT-FASCIA", "07", "envelope", "Soffite et bordure de toit aluminium", "Aluminum soffit and fascia", "pi_lin", 35, "exterior",195 "Soffite ventilé 18 po et fascia 6 po par pi lin de débord.", "18 in vented soffit and 6 in fascia per lin ft of eave.",196 [C("SOFFIT-ALU", 1.5, { w: 0.05 }), C("FASCIA-ALU", 1, { w: 0.05 }), H("charpentier", 0.08)]),197 A("EXT-GUTTERS", "07", "exterior", "Gouttières d'aluminium", "Aluminum gutters", "pi_lin", 25, "exterior",198 "Gouttière 5 po avec supports et descentes (allocation).", "5 in gutter with hangers and downspouts (allowance).",199 [C("GUTTER-ALU", 1.15, { w: 0.05, n: "+15 % descentes" }), H("charpentier", 0.05)]),200201 /* ============================================================ TOITURE */202 A("ROOF-ASPHALT-ARCH", "07", "roofing", "Couverture bardeau d'asphalte architectural", "Architectural asphalt shingle roofing", "pi2", 22, "roof",203 "Sous-couche synthétique, membrane glace/eau aux débords et noues (15 %), larmiers, bardeau architectural, évents.",204 "Synthetic underlayment, ice & water at eaves/valleys (15 %), drip edge, architectural shingles, vents.",205 [C("SHINGLE-ARCH", 1, { w: 0.1 }), C("ROOF-UNDERLAY-SYNTH", 1, { w: 0.08 }), C("ICE-WATER-SHIELD", 0.15, { w: 0.08 }), C("DRIP-EDGE", 0.05), C("NAILS-FRAMING", 0.012, { n: "clous à toiture" }), C("ROOF-VENT", 0.0015), H("couvreur", 0.022), H("manoeuvre", 0.008), E(0.05, "monte-charge, compresseur")]),206 A("ROOF-METAL-STANDING", "07", "roofing", "Couverture de tôle d'acier", "Steel roofing", "pi2", 45, "roof",207 "Sous-couche, membrane glace/eau, panneaux d'acier prépeint vissés, solins.", "Underlayment, ice & water, screwed pre-painted steel panels, flashing.",208 [C("ROOF-METAL-PANEL", 1, { w: 0.07 }), C("ROOF-UNDERLAY-SYNTH", 1, { w: 0.08 }), C("ICE-WATER-SHIELD", 0.15, { w: 0.08 }), C("SCREWS-DECK", 0.01, { n: "vis de toiture" }), C("FLASHING-ALU", 0.03), H("couvreur", 0.045), H("ferblantier", 0.01), E(0.08, "monte-charge")]),209 A("ROOF-MEMBRANE-ELASTO", "07", "roofing", "Toit plat — membrane élastomère 2 couches", "Flat roof — two-ply elastomeric membrane", "pi2", 22, "roof",210 "Membrane de base et de finition soudées au chalumeau sur panneau existant.", "Torch-applied base and cap sheets on existing deck.",211 [C("ROOF-MEMBRANE-ELASTO", 1, { w: 0.08 }), H("couvreur", 0.06), E(0.15, "chalumeau, monte-charge")]),212 A("ROOF-EPDM", "07", "roofing", "Toit plat — membrane EPDM collée", "Flat roof — adhered EPDM membrane", "pi2", 20, "roof",213 "Membrane EPDM collée, joints et solins.", "Fully adhered EPDM, seams and flashing.",214 [C("EPDM-MEMBRANE-SYSTEM", 1, { w: 0.08 }), H("couvreur", 0.03)]),215216 /* ========================================================== OUVERTURES */217 A("OPN-WINDOW-PVC-STD", "08", "openings", "Fenêtre PVC à battant (≈ 10 pi²)", "PVC casement window (≈ 10 sq ft)", "unit", 30, "windows",218 "Fenêtre à battant PVC double vitrage Low-E, isolation à la mousse, scellant, solin, cadrage intérieur.",219 "Low-E double-glazed PVC casement, foam insulation, sealant, flashing, interior casing.",220 [C("WIN-PVC-CASEMENT-STD", 1), C("SPRAYFOAM-CAN", 0.5), C("CAULK-TUBE", 0.5), C("FLASHING-ALU", 3), C("TRIM-CASING-MDF", 14, { w: 0.1 }), H("charpentier", 2.2)]),221 A("OPN-WINDOW-HYBRID-STD", "08", "openings", "Fenêtre hybride PVC/aluminium (≈ 10 pi²)", "Hybrid PVC/aluminum window (≈ 10 sq ft)", "unit", 35, "windows",222 "Fenêtre hybride sur mesure, mousse, scellant, solin, cadrage.", "Custom hybrid window, foam, sealant, flashing, casing.",223 [C("WIN-HYBRID-STD", 1), C("SPRAYFOAM-CAN", 0.5), C("CAULK-TUBE", 0.5), C("FLASHING-ALU", 3), C("TRIM-CASING-MDF", 14, { w: 0.1 }), H("charpentier", 2.4)]),224 A("OPN-WINDOW-ALU-STD", "08", "openings", "Fenêtre aluminium (≈ 10 pi²)", "Aluminum window (≈ 10 sq ft)", "unit", 30, "windows",225 "Fenêtre à cadre d'aluminium, mousse, scellant, solin, cadrage.", "Aluminum-frame window, foam, sealant, flashing, casing.",226 [C("WIN-ALU-STD", 1), C("SPRAYFOAM-CAN", 0.5), C("CAULK-TUBE", 0.5), C("FLASHING-ALU", 3), C("TRIM-CASING-MDF", 14, { w: 0.1 }), H("charpentier", 2.2)]),227 A("OPN-WINDOW-WOOD-STD", "08", "openings", "Fenêtre bois/aluminium (≈ 10 pi²)", "Wood/aluminum window (≈ 10 sq ft)", "unit", 35, "windows",228 "Fenêtre bois intérieur / aluminium extérieur, mousse, scellant, solin, cadrage.", "Wood interior / aluminum exterior window, foam, sealant, flashing, casing.",229 [C("WIN-WOOD-STD", 1), C("SPRAYFOAM-CAN", 0.5), C("CAULK-TUBE", 0.5), C("FLASHING-ALU", 3), C("TRIM-CASING-MDF", 14, { w: 0.1 }), H("charpentier", 2.5)]),230 A("OPN-WINDOW-BASEMENT", "08", "openings", "Fenêtre de sous-sol coulissante", "Basement slider window", "unit", 30, "windows",231 "Fenêtre coulissante PVC 32 × 18 po dans ouverture de béton.", "32 × 18 in PVC slider in concrete opening.",232 [C("WIN-BASEMENT-SLIDER", 1), C("SPRAYFOAM-CAN", 0.3), C("CAULK-TUBE", 0.3), H("charpentier", 1.2)]),233 A("OPN-DOOR-EXT-STEEL", "08", "openings", "Porte d'entrée en acier", "Steel entry door", "unit", 30, "windows",234 "Porte prémontée acier isolée 36 po, quincaillerie d'entrée, mousse, scellant, cadrage.", "36 in insulated prehung steel door, handleset, foam, sealant, casing.",235 [C("DOOR-EXT-STEEL-36", 1), C("DOOR-HARDWARE-EXT", 1), C("SPRAYFOAM-CAN", 0.5), C("CAULK-TUBE", 0.5), C("TRIM-CASING-MDF", 17, { w: 0.1 }), H("charpentier", 3)]),236 A("OPN-DOOR-EXT-FIBERGLASS", "08", "openings", "Porte d'entrée en fibre de verre", "Fiberglass entry door", "unit", 35, "windows",237 "Porte prémontée fibre de verre 36 po, quincaillerie, mousse, scellant, cadrage.", "36 in prehung fiberglass door, handleset, foam, sealant, casing.",238 [C("DOOR-EXT-FIBERGLASS", 1), C("DOOR-HARDWARE-EXT", 1), C("SPRAYFOAM-CAN", 0.5), C("CAULK-TUBE", 0.5), C("TRIM-CASING-MDF", 17, { w: 0.1 }), H("charpentier", 3)]),239 A("OPN-DOOR-PATIO-6FT", "08", "openings", "Porte-patio 6 pi", "Patio door 6 ft", "unit", 30, "windows",240 "Porte-patio coulissante PVC 6 pi, mousse, scellant, cadrage.", "6 ft PVC sliding patio door, foam, sealant, casing.",241 [C("DOOR-PATIO-6FT", 1), C("SPRAYFOAM-CAN", 0.7), C("CAULK-TUBE", 0.7), C("TRIM-CASING-MDF", 20, { w: 0.1 }), H("charpentier", 4)]),242 A("OPN-DOOR-GARAGE-9X7", "08", "garage", "Porte de garage 9 × 7 pi avec ouvre-porte", "Garage door 9 × 7 ft with opener", "unit", 25, "windows",243 "Porte isolée à sections 9 × 7, rails, ressorts, ouvre-porte.", "Insulated sectional door 9 × 7, tracks, springs, opener.",244 [C("DOOR-GARAGE-9X7", 1), C("GARAGE-OPENER", 1), H("charpentier", 4.5), H("electricien", 0.5)]),245 A("OPN-DOOR-GARAGE-16X7", "08", "garage", "Porte de garage double 16 × 7 pi avec ouvre-porte", "Double garage door 16 × 7 ft with opener", "unit", 25, "windows",246 "Porte isolée à sections 16 × 7, rails, ressorts, ouvre-porte.", "Insulated sectional door 16 × 7, tracks, springs, opener.",247 [C("DOOR-GARAGE-16X7", 1), C("GARAGE-OPENER", 1), H("charpentier", 6), H("electricien", 0.5)]),248 A("OPN-DOOR-INT-HOLLOW", "08", "openings", "Porte intérieure alvéolée", "Hollow-core interior door", "unit", 40, "interior",249 "Porte prémontée alvéolée 30 po, poignée, cadrage deux faces.", "30 in prehung hollow-core door, handle, casing both sides.",250 [C("DOOR-INT-HOLLOW-PREHUNG", 1), C("DOOR-HARDWARE-INT", 1), C("TRIM-CASING-MDF", 34, { w: 0.1 }), H("charpentier", 1.6)]),251 A("OPN-DOOR-INT-SOLID", "08", "openings", "Porte intérieure pleine", "Solid-core interior door", "unit", 40, "interior",252 "Porte prémontée âme pleine 30 po, poignée, cadrage deux faces.", "30 in prehung solid-core door, handle, casing both sides.",253 [C("DOOR-INT-SOLID-PREHUNG", 1), C("DOOR-HARDWARE-INT", 1), C("TRIM-CASING-MDF", 34, { w: 0.1 }), H("charpentier", 1.8)]),254 A("OPN-DOOR-CLOSET-BIFOLD", "08", "openings", "Porte de garde-robe pliante", "Bifold closet door", "unit", 30, "interior",255 "Porte pliante 48 po, quincaillerie, cadrage.", "48 in bifold door, hardware, casing.",256 [C("DOOR-CLOSET-BIFOLD", 1), C("TRIM-CASING-MDF", 17, { w: 0.1 }), H("charpentier", 1.2)]),257 A("OPN-SKYLIGHT", "08", "openings", "Puits de lumière", "Skylight", "unit", 25, "windows",258 "Puits de lumière fixe 2 × 4 pi, solins, membrane, finition du puits.", "Fixed 2 × 4 ft skylight, flashing, membrane, shaft finish.",259 [C("SKYLIGHT", 1), C("ICE-WATER-SHIELD", 20), C("FLASHING-ALU", 12), H("charpentier", 5), H("couvreur", 1.5)]),260261 /* ============================================================ INTÉRIEUR */262 A("INT-DRYWALL-1/2-FINISHED", "09", "interior", "Gypse 1/2 po posé et tiré (3 couches)", "1/2 in drywall hung and taped (3 coats)", "pi2", 50, "interior",263 "Panneau 1/2 po vissé, ruban, renforts de coin, composé à joints 3 couches, sablage. Prêt à peindre.",264 "1/2 in board screwed, tape, corner bead, 3 coats of compound, sanding. Paint-ready.",265 [C("GYP-1/2-4X8", 1, { w: 0.1 }), C("SCREWS-DRYWALL", 0.008), C("DRYWALL-TAPE-250FT", 0.0035), C("JOINT-COMPOUND-20KG", 0.005), C("CORNER-BEAD-8FT", 0.01), H("poseur_systemes", 0.016), H("platrier", 0.02), E(0.02, "échafaud roulant, ponceuse")]),266 A("INT-DRYWALL-5/8-CEILING", "09", "interior", "Gypse de plafond 5/8 po posé et tiré", "5/8 in ceiling drywall hung and taped", "pi2", 50, "interior",267 "Panneau 5/8 po au plafond, ruban, composé 3 couches.", "5/8 in ceiling board, tape, 3 coats of compound.",268 [C("GYP-5/8-4X8", 1, { w: 0.1 }), C("SCREWS-DRYWALL", 0.009), C("DRYWALL-TAPE-250FT", 0.0035), C("JOINT-COMPOUND-20KG", 0.005), H("poseur_systemes", 0.02), H("platrier", 0.02), E(0.03, "lève-panneaux")]),269 A("INT-PAINT-2-COATS", "09", "interior", "Peinture intérieure (apprêt + 2 couches)", "Interior paint (primer + 2 coats)", "pi2", 8, "interior",270 "Apprêt (375 pi²/gal) et 2 couches de latex (400 pi²/gal/couche) sur gypse neuf.", "Primer (375 sq ft/gal) and 2 coats of latex (400 sq ft/gal/coat) on new drywall.",271 [C("PRIMER-GAL", 0.0027), C("PAINT-INT-GAL", 0.005), H("peintre", 0.012)]),272 A("INT-FLOOR-HARDWOOD", "09", "interior", "Plancher de bois franc préverni", "Prefinished hardwood flooring", "pi2", 40, "interior",273 "Chêne 3 1/4 po cloué sur papier, cloueuse pneumatique.", "3 1/4 in oak nailed over paper, pneumatic nailer.",274 [C("FLOOR-HARDWOOD-OAK", 1, { w: 0.08 }), C("UNDERLAY-FOAM", 1, { w: 0.05 }), C("NAILS-FRAMING", 0.01, { n: "agrafes" }), H("charpentier", 0.035), E(0.1, "cloueuse")]),275 A("INT-FLOOR-ENGINEERED", "09", "interior", "Plancher d'ingénierie flottant", "Floating engineered flooring", "pi2", 30, "interior",276 "Lames d'ingénierie sur sous-couche.", "Engineered planks over underlayment.",277 [C("FLOOR-ENGINEERED", 1, { w: 0.08 }), C("UNDERLAY-FOAM", 1, { w: 0.05 }), H("charpentier", 0.028)]),278 A("INT-FLOOR-VINYL-PLANK", "09", "interior", "Plancher de vinyle SPC", "SPC vinyl plank flooring", "pi2", 20, "interior",279 "Planches SPC à sous-couche intégrée, pose flottante.", "SPC planks with attached pad, floating install.",280 [C("FLOOR-VINYL-PLANK", 1, { w: 0.08 }), H("poseur_revetements", 0.02)]),281 A("INT-FLOOR-LAMINATE", "09", "interior", "Plancher flottant stratifié", "Laminate flooring", "pi2", 18, "interior",282 "Stratifié 12 mm sur sous-couche mousse.", "12 mm laminate over foam underlayment.",283 [C("FLOOR-LAMINATE", 1, { w: 0.08 }), C("UNDERLAY-FOAM", 1, { w: 0.05 }), H("poseur_revetements", 0.02)]),284 A("INT-FLOOR-CERAMIC", "09", "interior", "Plancher de céramique", "Ceramic tile flooring", "pi2", 40, "interior",285 "Panneau d'appui 1/4 po, mortier-colle, carreaux 12 × 24, coulis.", "1/4 in backer board, thinset, 12 × 24 tiles, grout.",286 [C("TILE-CERAMIC-12X24", 1, { w: 0.1 }), C("TILE-BACKER-1/4", 1, { w: 0.08 }), C("THINSET-22KG", 0.02), C("GROUT-4.5KG", 0.017), H("carreleur", 0.075), E(0.05, "scie à eau")]),287 A("INT-FLOOR-CARPET", "09", "interior", "Tapis et sous-tapis", "Carpet and underpad", "pi2", 10, "interior",288 "Tapis résidentiel tendu sur sous-tapis.", "Stretched residential carpet over underpad.",289 [C("FLOOR-CARPET", 1, { w: 0.1 }), C("UNDERLAY-FOAM", 1, { w: 0.05 }), H("poseur_revetements", 0.012)]),290 A("INT-TRIM-BASEBOARD", "09", "interior", "Plinthes MDF peintes", "Painted MDF baseboards", "pi_lin", 25, "interior",291 "Plinthe 4 po clouée, calfeutrée, 2 couches de peinture.", "4 in baseboard nailed, caulked, 2 coats of paint.",292 [C("TRIM-BASEBOARD-MDF", 1, { w: 0.1 }), C("CAULK-TUBE", 0.01), C("PAINT-INT-GAL", 0.001), H("charpentier", 0.04), H("peintre", 0.01)]),293 A("INT-CLOSET-SHELVING", "09", "interior", "Tablettes et tringles de garde-robe", "Closet shelving and rods", "pi_lin", 25, "interior",294 "Tablette mélamine 12 po avec tringle.", "12 in melamine shelf with rod.",295 [C("CLOSET-SHELVING", 1, { w: 0.05 }), H("charpentier", 0.15)]),296 A("BSM-SUBFLOOR-PANELS", "06", "basement", "Sous-plancher isolé de sous-sol", "Insulated basement subfloor", "pi2", 25, "interior",297 "Panneaux 2 × 2 à surface OSB sur dalle.", "2 × 2 OSB-faced panels over slab.",298 [C("SUBFLOOR-PANEL", 1, { w: 0.05 }), H("charpentier", 0.02)]),299300 /* ============================================================== CUISINE */301 A("KIT-ECONOMY", "12", "kitchen", "Cuisine économique", "Economy kitchen", "pi_lin", 15, "kitchen",302 "Armoires de mélamine, comptoir stratifié postformé, évier inox, robinet, hotte. Par pi lin d'armoires (base + haut).",303 "Melamine cabinets, post-formed laminate counter, stainless sink, faucet, hood. Per lin ft of cabinets (base + upper).",304 [C("CAB-ECON", 1), C("COUNTER-LAMINATE", 0.65, { w: 0.1 }), C("SINK-KITCHEN-SS", 0.045), C("FAUCET-KITCHEN", 0.045), C("RANGE-HOOD", 0.045), H("charpentier", 0.9), H("plombier", 0.15), H("electricien", 0.08)], { quality: "economy" }),305 A("KIT-STANDARD", "12", "kitchen", "Cuisine standard", "Standard kitchen", "pi_lin", 20, "kitchen",306 "Armoires thermoplastique/polyester, comptoir de quartz d'entrée de gamme, dosseret céramique, évier inox, robinet, hotte.",307 "Thermofoil/polyester cabinets, entry-level quartz counter, ceramic backsplash, stainless sink, faucet, hood.",308 [C("CAB-STD", 1), C("COUNTER-QUARTZ", 1.6), C("TILE-WALL-SUBWAY", 1.2, { w: 0.1 }), C("THINSET-22KG", 0.02), C("GROUT-4.5KG", 0.02), C("SINK-KITCHEN-SS", 0.04), C("FAUCET-KITCHEN", 0.04), C("RANGE-HOOD", 0.04), H("charpentier", 1.0), H("carreleur", 0.1), H("plombier", 0.15), H("electricien", 0.1)], { quality: "standard" }),309 A("KIT-SUPERIOR", "12", "kitchen", "Cuisine supérieure", "Superior kitchen", "pi_lin", 25, "kitchen",310 "Armoires MDF peint/bois à fermeture douce, quartz avec îlot, dosseret, éclairage encastré, évier sous plan, robinet, hotte.",311 "Painted MDF/wood soft-close cabinets, quartz with island, backsplash, recessed lighting, undermount sink, faucet, hood.",312 [C("CAB-SUP", 1), C("COUNTER-QUARTZ", 1.9), C("TILE-WALL-SUBWAY", 1.3, { w: 0.1 }), C("THINSET-22KG", 0.022), C("GROUT-4.5KG", 0.022), C("LIGHT-FIXTURE-STD", 0.15), C("SINK-KITCHEN-SS", 0.032), C("FAUCET-KITCHEN", 0.032), C("RANGE-HOOD", 0.032), H("charpentier", 1.15), H("carreleur", 0.12), H("plombier", 0.15), H("electricien", 0.15)], { quality: "superior" }),313 A("KIT-PRESTIGE", "12", "kitchen", "Cuisine prestige", "Prestige kitchen", "pi_lin", 30, "kitchen",314 "Armoires bois massif/laque, granit ou quartz épais avec grand îlot, dosseret pleine hauteur, éclairage encastré et sous-armoires.",315 "Solid wood/lacquer cabinets, thick granite or quartz with large island, full-height backsplash, recessed and under-cabinet lighting.",316 [C("CAB-PRESTIGE", 1), C("COUNTER-GRANITE", 2.0), C("TILE-WALL-SUBWAY", 1.8, { w: 0.1 }), C("THINSET-22KG", 0.03), C("GROUT-4.5KG", 0.03), C("LIGHT-FIXTURE-STD", 0.2), C("SINK-KITCHEN-SS", 0.025), C("FAUCET-KITCHEN", 0.025), C("RANGE-HOOD", 0.025), H("charpentier", 1.3), H("carreleur", 0.15), H("plombier", 0.15), H("electricien", 0.2)], { quality: "prestige" }),317318 /* ======================================================= SALLES DE BAIN */319 A("BATH-ECONOMY", "22", "bathroom", "Salle de bain économique", "Economy bathroom", "unit", 20, "bathroom",320 "Toilette, meuble-lavabo 36 po, baignoire alcôve avec céramique murale (55 pi²), plancher céramique 40 pi², ventilateur, miroir, accessoires. Finition des appareils (la plomberie brute est comptée à part).",321 "Toilet, 36 in vanity, alcove tub with wall tile (55 sq ft), 40 sq ft ceramic floor, fan, mirror, accessories. Fixture finish (rough plumbing counted separately).",322 [C("TOILET", 1), C("VANITY-36", 1), C("FAUCET-LAV", 1), C("TUB-ALCOVE-60", 1), C("TUB-SHOWER-FAUCET", 1), C("TILE-WALL-SUBWAY", 55, { w: 0.1 }), C("TILE-CERAMIC-12X24", 40, { w: 0.1 }), C("TILE-BACKER-1/4", 95, { w: 0.08 }), C("THINSET-22KG", 2), C("GROUT-4.5KG", 2), C("EXHAUST-FAN", 1), C("MIRROR", 1), C("BATH-ACCESSORIES", 1), H("plombier", 14), H("carreleur", 9), H("charpentier", 4), H("electricien", 2), H("peintre", 2)], { quality: "economy" }),323 A("BATH-STANDARD", "22", "bathroom", "Salle de bain standard", "Standard bathroom", "unit", 22, "bathroom",324 "Toilette, meuble-lavabo 36 po, baignoire alcôve, céramique murale jusqu'au plafond (90 pi²), plancher porcelaine 45 pi², ventilateur, miroir, accessoires.",325 "Toilet, 36 in vanity, alcove tub, wall tile to ceiling (90 sq ft), 45 sq ft porcelain floor, fan, mirror, accessories.",326 [C("TOILET", 1), C("VANITY-36", 1), C("FAUCET-LAV", 1), C("TUB-ALCOVE-60", 1), C("TUB-SHOWER-FAUCET", 1), C("SHOWER-DOOR-GLASS", 1), C("TILE-WALL-SUBWAY", 90, { w: 0.1 }), C("TILE-PORCELAIN", 45, { w: 0.1 }), C("TILE-BACKER-1/4", 135, { w: 0.08 }), C("THINSET-22KG", 3), C("GROUT-4.5KG", 3), C("EXHAUST-FAN", 1), C("MIRROR", 1), C("BATH-ACCESSORIES", 1), H("plombier", 16), H("carreleur", 13), H("charpentier", 5), H("electricien", 2.5), H("peintre", 2)], { quality: "standard" }),327 A("BATH-SUPERIOR", "22", "bathroom", "Salle de bain supérieure", "Superior bathroom", "unit", 25, "bathroom",328 "Baignoire autoportante, douche en céramique avec porte de verre, meuble double 60 po quartz, toilette, porcelaine au sol (60 pi²) et aux murs (120 pi²), ventilateur, miroirs, accessoires.",329 "Freestanding tub, tiled shower with glass door, 60 in double quartz vanity, toilet, porcelain floor (60 sq ft) and walls (120 sq ft), fan, mirrors, accessories.",330 [C("TOILET", 1), C("VANITY-60-DOUBLE", 1), C("FAUCET-LAV", 2), C("TUB-FREESTANDING", 1), C("SHOWER-BASE-48", 1), C("SHOWER-DOOR-GLASS", 1), C("TUB-SHOWER-FAUCET", 2), C("TILE-WALL-SUBWAY", 120, { w: 0.1 }), C("TILE-PORCELAIN", 60, { w: 0.1 }), C("TILE-BACKER-1/4", 180, { w: 0.08 }), C("THINSET-22KG", 4), C("GROUT-4.5KG", 4), C("EXHAUST-FAN", 1), C("MIRROR", 2), C("BATH-ACCESSORIES", 1), H("plombier", 22), H("carreleur", 18), H("charpentier", 6), H("electricien", 3), H("peintre", 2.5)], { quality: "superior" }),331 A("BATH-POWDER", "22", "bathroom", "Salle d'eau", "Powder room", "unit", 25, "bathroom",332 "Toilette, meuble-lavabo, robinet, miroir, ventilateur, plancher céramique 20 pi².", "Toilet, vanity, faucet, mirror, fan, 20 sq ft ceramic floor.",333 [C("TOILET", 1), C("VANITY-36", 1), C("FAUCET-LAV", 1), C("MIRROR", 1), C("EXHAUST-FAN", 1), C("TILE-CERAMIC-12X24", 20, { w: 0.1 }), C("TILE-BACKER-1/4", 20, { w: 0.08 }), C("THINSET-22KG", 0.5), C("GROUT-4.5KG", 0.5), H("plombier", 6), H("carreleur", 3), H("charpentier", 1.5), H("electricien", 1)]),334335 /* ============================================================ PLOMBERIE */336 A("MEC-PLUMBING-ROUGH-IN", "22", "plumbing", "Plomberie brute (par appareil)", "Rough plumbing (per fixture)", "unit", 50, "mechanical",337 "Alimentation PEX 1/2 et 3/4, évacuation ABS 3 po et 1 1/2 po, raccords, évents, supports — par appareil sanitaire (toilette, lavabo, bain, douche, évier, laveuse, chauffe-eau…).",338 "PEX 1/2 and 3/4 supply, 3 in and 1 1/2 in ABS drains, fittings, vents, hangers — per plumbing fixture (toilet, sink, tub, shower, kitchen sink, washer, water heater…).",339 [C("PEX-1/2", 40, { w: 0.05 }), C("PEX-3/4", 10, { w: 0.05 }), C("PEX-FITTINGS", 6), C("ABS-3IN", 8, { w: 0.05 }), C("ABS-1.5IN", 12, { w: 0.05 }), C("ABS-FITTINGS", 6), C("PLUMB-ROUGH-MISC", 1), H("plombier", 6)]),340 A("MEC-WATER-HEATER-60", "22", "plumbing", "Chauffe-eau électrique 60 gal installé", "Electric water heater 60 gal installed", "unit", 12, "mechanical",341 "Réservoir 60 gal, raccords, soupape, alimentation électrique 240 V.", "60 gal tank, connections, relief valve, 240 V feed.",342 [C("WATER-HEATER-60GAL", 1), C("PEX-3/4", 10, { w: 0.05 }), C("PEX-FITTINGS", 4), C("WIRE-12/2", 25, { w: 0.05 }), H("plombier", 3), H("electricien", 1)]),343 A("MEC-DRAINAGE-BASE", "22", "plumbing", "Drainage de base (clapet, puisard, robinets extérieurs)", "Base drainage (backwater valve, sump, hose bibs)", "lump", 30, "mechanical",344 "Clapet antiretour, pompe et bassin de puisard, 2 robinets extérieurs antigel, drain de plancher et collecteur ABS 3 po (30 pi).",345 "Backwater valve, sump pump and pit, 2 frost-free hose bibs, floor drain and 3 in ABS collector (30 ft).",346 [C("BACKWATER-VALVE", 1), C("SUMP-PUMP", 1), C("HOSE-BIB", 2), C("ABS-3IN", 30, { w: 0.05 }), C("ABS-FITTINGS", 8), H("plombier", 8)]),347348 /* ================================================================= CVCA */349 A("MEC-HEATPUMP-CENTRAL", "23", "hvac", "Thermopompe centrale installée", "Central heat pump installed", "unit", 15, "mechanical",350 "Unité extérieure 3 tonnes, serpentin, conduites frigorifiques, thermostat central, mise en marche. Conduits comptés à part.",351 "3-ton outdoor unit, coil, refrigerant lines, central thermostat, start-up. Ductwork counted separately.",352 [C("HEATPUMP-CENTRAL-3T", 1), C("THERMOSTAT-CENTRAL", 1), H("frigoriste", 14), H("electricien", 3), E(150, "pompe à vide, manutention")]),353 A("MEC-HEATPUMP-WALL", "23", "hvac", "Thermopompe murale installée", "Wall-mounted heat pump installed", "unit", 15, "mechanical",354 "Bibloc mural 12 000 BTU, conduites, support, alimentation électrique.", "12,000 BTU wall split, lines, bracket, electrical feed.",355 [C("HEATPUMP-WALL-12K", 1), C("WIRE-12/2", 40, { w: 0.05 }), H("frigoriste", 6), H("electricien", 2), E(60, "pompe à vide")]),356 A("MEC-FURNACE-ELECTRIC", "23", "hvac", "Fournaise électrique installée", "Electric furnace installed", "unit", 20, "mechanical",357 "Fournaise 20 kW, plénum, thermostat central, alimentation.", "20 kW furnace, plenum, central thermostat, feed.",358 [C("FURNACE-ELECTRIC-20KW", 1), C("THERMOSTAT-CENTRAL", 1), H("frigoriste", 8), H("electricien", 4)]),359 A("MEC-FURNACE-GAS", "23", "hvac", "Fournaise au gaz installée", "Gas furnace installed", "unit", 20, "mechanical",360 "Fournaise à condensation 60 000 BTU, évacuation, tuyauterie de gaz, thermostat.", "60,000 BTU condensing furnace, venting, gas piping, thermostat.",361 [C("FURNACE-GAS-60K", 1), C("THERMOSTAT-CENTRAL", 1), H("frigoriste", 10), H("plombier", 4), H("electricien", 2)]),362 A("MEC-CENTRAL-AC", "23", "hvac", "Climatiseur central installé", "Central air conditioner installed", "unit", 15, "mechanical",363 "Condenseur 2,5 tonnes, serpentin, conduites, mise en marche.", "2.5-ton condenser, coil, lines, start-up.",364 [C("CENTRAL-AC-2.5T", 1), H("frigoriste", 10), H("electricien", 2), E(100, "pompe à vide")]),365 A("MEC-DUCTWORK", "23", "hvac", "Conduits de distribution d'air", "Air distribution ductwork", "pi2", 40, "mechanical",366 "Conduits de tôle, raccords, grilles et diffuseurs — par pi² de plancher desservi.", "Sheet-metal ducts, fittings, grilles and diffusers — per sq ft of floor served.",367 [C("DUCT-SHEETMETAL", 1), H("ferblantier", 0.02)]),368 A("MEC-HRV", "23", "hvac", "Échangeur d'air (VRC) installé", "HRV installed", "unit", 18, "mechanical",369 "VRC, conduits dédiés (allocation), bouches, commande murale.", "HRV, dedicated ducts (allowance), grilles, wall control.",370 [C("HRV", 1), C("DUCT-SHEETMETAL", 80, { n: "allocation de conduits dédiés" }), H("ferblantier", 8), H("electricien", 1)]),371 A("MEC-BASEBOARD-ELECTRIC", "23", "hvac", "Plinthe électrique 1 500 W avec thermostat", "1,500 W electric baseboard with thermostat", "unit", 25, "mechanical",372 "Plinthe 240 V, thermostat électronique, câble 12/2 (35 pi), demi-disjoncteur bipolaire. 1 plinthe par ≈ 150 pi².",373 "240 V baseboard, electronic thermostat, 12/2 cable (35 ft), half a 2-pole breaker. 1 baseboard per ≈ 150 sq ft.",374 [C("BASEBOARD-1500W", 1), C("THERMOSTAT", 1), C("WIRE-12/2", 35, { w: 0.05 }), C("BREAKER-15A", 1), H("electricien", 1.4)]),375376 /* ========================================================== ÉLECTRICITÉ */377 A("ELE-SERVICE-200A", "26", "electrical", "Entrée et panneau électrique 200 A", "200 A service entrance and panel", "unit", 40, "electrical",378 "Mât, câble d'entrée, embase de compteur, mise à la terre, panneau 40 circuits, 24 disjoncteurs.", "Mast, service cable, meter base, grounding, 40-circuit panel, 24 breakers.",379 [C("PANEL-200A-40", 1), C("SERVICE-MAST-200A", 1), C("METER-BASE", 1), C("BREAKER-15A", 24), H("electricien", 14)]),380 A("ELE-ROUGH-WIRING", "26", "electrical", "Câblage et dispositifs (par pi² de plancher)", "Wiring and devices (per sq ft floor)", "pi2", 40, "electrical",381 "Câble 14/2 (1,4 pi/pi²) et 12/2 (0,4 pi/pi²), boîtes, prises, interrupteurs, DDFT, détecteurs, plaques.",382 "14/2 cable (1.4 ft/sq ft) and 12/2 (0.4 ft/sq ft), boxes, receptacles, switches, GFCI, detectors, plates.",383 [C("WIRE-14/2", 1.4, { w: 0.05 }), C("WIRE-12/2", 0.4, { w: 0.05 }), C("BOX-DEVICE", 0.02), C("RECEPTACLE", 0.012), C("SWITCH", 0.006), C("GFCI", 0.0015), C("COVER-PLATE", 0.018), C("SMOKE-CO-DETECTOR", 0.0012), H("electricien", 0.045)]),384 A("ELE-LIGHTING-STD", "26", "electrical", "Luminaire encastré DEL", "LED recessed light fixture", "unit", 20, "electrical",385 "Encastré 4 po, boîte, 15 pi de câble 14/2.", "4 in recessed fixture, box, 15 ft of 14/2 cable.",386 [C("LIGHT-FIXTURE-STD", 1), C("BOX-DEVICE", 1), C("WIRE-14/2", 15, { w: 0.05 }), H("electricien", 0.7)]),387 A("ELE-LIGHTING-EXT", "26", "electrical", "Luminaire extérieur", "Exterior light fixture", "unit", 20, "electrical",388 "Luminaire mural extérieur, boîte, 20 pi de câble.", "Exterior wall fixture, box, 20 ft of cable.",389 [C("LIGHT-FIXTURE-EXT", 1), C("BOX-DEVICE", 1), C("WIRE-14/2", 20, { w: 0.05 }), H("electricien", 0.8)]),390 A("ELE-EV-CHARGER", "26", "electrical", "Circuit et borne de recharge VÉ", "EV charging circuit and charger", "unit", 15, "electrical",391 "Circuit 40 A dédié et borne niveau 2.", "Dedicated 40 A circuit and level 2 charger.",392 [C("EV-CHARGER-CIRCUIT", 1), H("electricien", 4)]),393394 /* ============================================================ EXTÉRIEUR */395 A("EXT-DECK-TREATED", "06", "exterior", "Terrasse en bois traité", "Treated-wood deck", "pi2", 20, "site",396 "Solives 2 × 8 traitées 16 po c/c, poteaux 6 × 6 sur pieux, planches 5/4 × 6, vis. Hors rampe.",397 "Treated 2 × 8 joists 16 in o.c., 6 × 6 posts on piers, 5/4 × 6 boards, screws. Excludes railing.",398 [C("TREATED-5/4X6-12", 0.2, { w: 0.1 }), C("TREATED-2X8-12", 0.09, { w: 0.07 }), C("TREATED-6X6-10", 0.012), C("CONCRETE-PIER-TUBE", 0.012), C("CONC-BAG-30KG", 0.05), C("SCREWS-DECK", 0.03), C("HANGERS-JOIST", 0.05), H("charpentier", 0.09)]),399 A("EXT-DECK-RAILING-WOOD", "06", "exterior", "Rampe de terrasse en bois traité", "Treated-wood deck railing", "pi_lin", 15, "site",400 "Poteaux 4 × 4, mains courantes 2 × 6, barreaux, vis.", "4 × 4 posts, 2 × 6 rails, balusters, screws.",401 [C("TREATED-2X6-12", 0.2, { w: 0.07 }), C("TREATED-4X4-8", 0.2), C("SCREWS-DECK", 0.05), H("charpentier", 0.35)]),402 A("EXT-DECK-RAILING-ALU", "05", "exterior", "Rampe d'aluminium", "Aluminum railing", "pi_lin", 30, "site",403 "Sections de rampe d'aluminium avec poteaux.", "Aluminum railing sections with posts.",404 [C("DECK-RAILING-ALU", 1), H("charpentier", 0.25)]),405 A("EXT-DRIVEWAY-ASPHALT", "32", "exterior", "Entrée asphaltée", "Asphalt driveway", "pi2", 18, "site",406 "Fondation granulaire 0-3/4 compactée et enrobé bitumineux 2 po, épandage mécanique et compaction.",407 "Compacted 0-3/4 granular base and 2 in asphalt, mechanical spreading and compaction.",408 [C("ASPHALT-DRIVEWAY", 1), H("manoeuvre", 0.02), H("operateur", 0.01), E(0.9, "finisseur, rouleau")]),409 A("EXT-DRIVEWAY-PAVERS", "32", "exterior", "Entrée en pavés de béton", "Concrete-paver driveway", "pi2", 30, "site",410 "Fondation 8 po de gravier, lit de sable, pavés, sable polymère, compaction.", "8 in gravel base, sand bed, pavers, polymeric sand, compaction.",411 [C("PAVER-STONE", 1, { w: 0.05 }), C("BACKFILL-GRAVEL", 0.02), C("SAND", 0.003), H("manoeuvre", 0.08), H("briqueteur", 0.05), E(0.15, "plaque vibrante")]),412 A("EXT-DRIVEWAY-GRAVEL", "32", "exterior", "Entrée de gravier", "Gravel driveway", "pi2", 15, "site",413 "Gravier 0-3/4 6 po nivelé et compacté.", "6 in of 0-3/4 gravel graded and compacted.",414 [C("BACKFILL-GRAVEL", 0.015), C("EXCAVATOR-HOUR", 0.002), H("operateur", 0.002)]),415 A("EXT-FENCE-WOOD", "32", "exterior", "Clôture de bois traité 6 pi", "Treated-wood fence 6 ft", "pi_lin", 18, "site",416 "Panneaux 6 × 8, poteaux 4 × 4 aux 8 pi bétonnés.", "6 × 8 panels, 4 × 4 posts every 8 ft set in concrete.",417 [C("FENCE-PANEL-WOOD", 1), C("TREATED-4X4-8", 0.125), C("CONC-BAG-30KG", 0.25), C("SCREWS-DECK", 0.02), H("charpentier", 0.2), H("manoeuvre", 0.1)]),418 A("EXT-LANDSCAPING-SOD", "32", "exterior", "Terre et gazon en plaques", "Topsoil and sod", "pi2", 25, "site",419 "Terre à jardin 4 po nivelée, gazon en plaques.", "4 in graded topsoil, sod.",420 [C("SOD", 1, { w: 0.05 }), C("TOPSOIL", 0.0095), H("manoeuvre", 0.008), E(0.02, "tracteur")]),421 A("EXT-STEPS-PRECAST", "03", "exterior", "Marches préfabriquées en béton", "Precast concrete steps", "unit", 40, "site",422 "Marches préfabriquées livrées et posées à la grue.", "Precast steps delivered and craned into place.",423 [C("STEPS-PRECAST", 1), H("manoeuvre", 2), E(150, "grue de livraison")]),424 A("EXT-POOL-ABOVEGROUND", "13", "exterior", "Piscine hors terre", "Above-ground pool", "lump", 15, "site",425 "Ensemble piscine 21 pi avec filtration, montage.", "21 ft pool kit with filtration, assembly.",426 [C("POOL-ABOVEGROUND", 1), H("manoeuvre", 16), H("electricien", 3)]),427 A("EXT-POOL-INGROUND", "13", "exterior", "Piscine creusée", "Inground pool", "lump", 25, "site",428 "Piscine creusée clé en main 16 × 32 (excavation, coque/béton, filtration, trottoir).", "Turnkey 16 × 32 inground pool (excavation, shell, filtration, deck).",429 [C("POOL-INGROUND", 1), H("electricien", 8)]),430];431432export const ASSEMBLY_BY_CODE = new Map(ASSEMBLY_SEEDS.map((a) => [a.code, a]));433