Files
mdb/src/data/visitWorks.ts
Bastien COIGNOUX bd325fe456 init
2026-05-03 20:18:33 +02:00

96 lines
2.2 KiB
TypeScript

import type {
DossierVisitFindingRow,
VisitFindingDefinitionRow,
} from './types';
export const VISIT_FINDING_SEED: VisitFindingDefinitionRow[] = [
{
code: 'structural_crack',
label: 'Fissure structurelle / désordre porteur',
default_works_delta_eur: 15000,
severity: 5,
sort_order: 10,
},
{
code: 'roof_full_replace',
label: 'Toiture à refaire (complète)',
default_works_delta_eur: 35000,
severity: 5,
sort_order: 20,
},
{
code: 'roof_partial',
label: 'Toiture partielle / zinguerie lourde',
default_works_delta_eur: 8000,
severity: 3,
sort_order: 30,
},
{
code: 'humidity_basement',
label: 'Infiltrations cave / vide sanitaire',
default_works_delta_eur: 12000,
severity: 3,
sort_order: 40,
},
{
code: 'electrical_rewire',
label: 'Rénovation électrique complète',
default_works_delta_eur: 15000,
severity: 4,
sort_order: 50,
},
{
code: 'asbestos',
label: 'Présence amiante / désamiantage à prévoir',
default_works_delta_eur: 10000,
severity: 4,
sort_order: 60,
},
{
code: 'septic_non_conform',
label: 'Assainissement non conforme',
default_works_delta_eur: 12000,
severity: 3,
sort_order: 70,
},
{
code: 'facade_insulation',
label: 'ITE / ravalement lourd',
default_works_delta_eur: 25000,
severity: 3,
sort_order: 80,
},
{
code: 'heat_pump_full',
label: 'Chauffage à refaire (pompe à chaleur + réseau)',
default_works_delta_eur: 18000,
severity: 2,
sort_order: 90,
},
];
export function definitionMap(
defs: VisitFindingDefinitionRow[],
): Map<string, VisitFindingDefinitionRow> {
return new Map(defs.map((d) => [d.code, d]));
}
export function sumCheckedVisitWorksEUR(
findings: DossierVisitFindingRow[],
defs: VisitFindingDefinitionRow[],
): number {
const map = definitionMap(defs);
let sum = 0;
for (const f of findings) {
if (!f.checked) continue;
const def = map.get(f.finding_code);
if (!def) continue;
const delta =
f.works_delta_override_eur != null
? f.works_delta_override_eur
: def.default_works_delta_eur;
sum += delta;
}
return sum;
}