Files
btpxpress-frontend/data/templates-afrique.ts
2025-10-01 01:39:07 +00:00

695 lines
23 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* TEMPLATES ULTRA-DÉTAILLÉS POUR ZONES CLIMATIQUES AFRICAINES
* Système le plus ambitieux d'Afrique - Adaptation climatique précise
*/
import { TypeChantierTemplate, PhaseTemplate } from '../components/phases/PhaseGenerationWizard';
import { MATERIAUX_BTP_DATABASE, CalculateurBTPAfrique } from './materiaux-database';
// ================== ZONES CLIMATIQUES AFRICAINES ==================
export interface ZoneClimatiqueAfrique {
id: string;
nom: string;
pays: string[];
caracteristiques: {
temperatureMoyenne: { min: number; max: number };
pluviometrieAnnuelle: number; // mm
humiditeRelative: { min: number; max: number }; // %
ventsMaximaux: number; // km/h
saisons: {
nom: string;
mois: number[];
contraintes: string[];
recommandations: string[];
}[];
};
contraintesConstruction: {
fondations: string[];
drainage: string[];
ventilation: string[];
materiaux: string[];
};
normesSpecifiques: {
sisimique?: string;
cyclonique?: string;
thermique: string;
pluviale: string;
};
}
export const ZONES_CLIMATIQUES: ZoneClimatiqueAfrique[] = [
{
id: 'sahel',
nom: 'Zone Sahélienne',
pays: ['Mali', 'Burkina Faso', 'Niger', 'Tchad', 'Sénégal Nord'],
caracteristiques: {
temperatureMoyenne: { min: 15, max: 45 },
pluviometrieAnnuelle: 200,
humiditeRelative: { min: 20, max: 60 },
ventsMaximaux: 80,
saisons: [
{
nom: 'Saison sèche froide',
mois: [12, 1, 2],
contraintes: ['Harmattan violent', 'Poussière intense', 'Écarts thermiques'],
recommandations: ['Protection anti-poussière', 'Cure béton renforcée']
},
{
nom: 'Saison sèche chaude',
mois: [3, 4, 5],
contraintes: ['Chaleur extrême 45°C+', 'Évaporation rapide', 'Dilatation'],
recommandations: ['Travail tôt/tard', 'Arrosage constant', 'Protection solaire']
},
{
nom: 'Saison des pluies',
mois: [6, 7, 8, 9],
contraintes: ['Pluies torrentielles', 'Inondations', 'Humidité'],
recommandations: ['Drainage prioritaire', 'Stockage étanche', 'Planning adapté']
}
]
},
contraintesConstruction: {
fondations: [
'Fondations profondes (sol gonflant)',
'Drainage périphérique obligatoire',
'Protection contre remontées capillaires'
],
drainage: [
'Évacuation eaux pluviales surdimensionnée',
'Pentes toitures minimum 40%',
'Caniveaux périmétriques'
],
ventilation: [
'Ventilation traversante obligatoire',
'Ouvertures hautes/basses',
'Protection solaire systématique'
],
materiaux: [
'Résistance UV renforcée',
'Dilatation thermique prévue',
'Protection anti-poussière'
]
},
normesSpecifiques: {
thermique: 'Isolation thermique obligatoire',
pluviale: 'Évacuation 150mm/h minimum'
}
},
{
id: 'guinee-forestiere',
nom: 'Zone Guinéenne Forestière',
pays: ['Côte d\'Ivoire Sud', 'Ghana Sud', 'Guinée', 'Liberia', 'Sierra Leone'],
caracteristiques: {
temperatureMoyenne: { min: 22, max: 32 },
pluviometrieAnnuelle: 2000,
humiditeRelative: { min: 70, max: 95 },
ventsMaximaux: 60,
saisons: [
{
nom: 'Grande saison sèche',
mois: [12, 1, 2, 3],
contraintes: ['Harmattan modéré', 'Humidité résiduelle'],
recommandations: ['Séchage matériaux prolongé', 'Ventilation renforcée']
},
{
nom: 'Grande saison des pluies',
mois: [4, 5, 6, 7, 8, 9, 10],
contraintes: ['Pluies quasi-permanentes', 'Humidité 95%', 'Moisissures'],
recommandations: ['Étanchéité absolue', 'Anti-moisissures', 'Drainage maximal']
}
]
},
contraintesConstruction: {
fondations: [
'Imperméabilisation obligatoire',
'Vide sanitaire ventilé minimum 60cm',
'Drainage français complet'
],
drainage: [
'Double évacuation eaux pluviales',
'Pentes toitures minimum 45%',
'Gouttières surdimensionnées'
],
ventilation: [
'VMC obligatoire zones humides',
'Ventilation haute continue',
'Déshumidification naturelle'
],
materiaux: [
'Traitement anti-moisissures systématique',
'Résistance humidité permanente',
'Matériaux imputrescibles privilégiés'
]
},
normesSpecifiques: {
thermique: 'Isolation humidité prioritaire',
pluviale: 'Évacuation 200mm/h minimum'
}
},
{
id: 'cotiere-atlantique',
nom: 'Zone Côtière Atlantique',
pays: ['Sénégal Côte', 'Gambie', 'Guinée Bissau', 'Mauritanie Sud'],
caracteristiques: {
temperatureMoyenne: { min: 18, max: 35 },
pluviometrieAnnuelle: 800,
humiditeRelative: { min: 60, max: 85 },
ventsMaximaux: 120,
saisons: [
{
nom: 'Saison fraîche',
mois: [12, 1, 2, 3],
contraintes: ['Alizés forts', 'Embruns salés', 'Corrosion'],
recommandations: ['Protection anticorrosion renforcée', 'Matériaux marins']
},
{
nom: 'Saison chaude',
mois: [4, 5, 6],
contraintes: ['Chaleur humide', 'Évaporation marine'],
recommandations: ['Ventilation marine', 'Protection UV marine']
},
{
nom: 'Hivernage',
mois: [7, 8, 9, 10],
contraintes: ['Pluies + vents', 'Tempêtes', 'Infiltrations'],
recommandations: ['Étanchéité renforcée', 'Résistance cyclonique']
}
]
},
contraintesConstruction: {
fondations: [
'Fondations anti-corrosion marines',
'Drainage anti-sel',
'Imperméabilisation renforcée'
],
drainage: [
'Évacuation résistante embruns',
'Pentes adaptées vents',
'Matériaux inoxydables'
],
ventilation: [
'Résistance vents 120 km/h',
'Protection embruns salés',
'Ventilation anti-corrosion'
],
materiaux: [
'Aciers galvanisés ou inox obligatoires',
'Béton haute résistance chlorures',
'Peintures marines exclusivement'
]
},
normesSpecifiques: {
thermique: 'Isolation marine spécialisée',
pluviale: 'Évacuation 180mm/h + résistance vents',
cyclonique: 'Résistance vents 150 km/h'
}
}
];
// ================== TEMPLATES ULTRA-DÉTAILLÉS PAR ZONE ==================
export const TEMPLATES_AFRIQUE_DETAILLES: TypeChantierTemplate[] = [
// ========== VILLA MODERNE ZONE SAHÉLIENNE ==========
{
id: 'villa-moderne-sahel',
nom: 'Villa Moderne - Zone Sahélienne',
description: 'Villa bioclimatique adaptée climat sahélien - Résistance chaleur/harmattan',
categorie: 'RESIDENTIEL',
complexiteMetier: 'COMPLEXE',
dureeGlobaleEstimee: 240, // jours
budgetGlobalEstime: 450000, // USD
nombreTotalPhases: 18,
tags: ['Sahel', 'Bioclimatique', 'Anti-harmattan', 'Isolation thermique'],
phases: [
{
id: 'vs-01',
nom: 'Études Géotechniques Sahéliennes',
description: 'Analyse sols gonflants, nappe phréatique, contraintes climatiques',
ordre: 1,
dureeEstimee: 15,
budgetEstime: 25000,
competencesRequises: ['Géotechnicien sols africains', 'Hydrogéologue'],
prerequis: ['Permis construire', 'Bornage terrain'],
categorieMetier: 'GROS_OEUVRE',
obligatoire: true,
personnalisable: false,
sousPhases: [
{
id: 'vs-01-01',
nom: 'Sondages géotechniques',
description: 'Minimum 3 sondages jusqu\'à 8m - identification argiles gonflantes',
ordre: 1,
dureeEstimee: 5,
budgetEstime: 12000,
competencesRequises: ['Sondeur géotechnique'],
obligatoire: true
},
{
id: 'vs-01-02',
nom: 'Essais laboratoire sols',
description: 'Limites Atterberg, CBR, gonflement, perméabilité',
ordre: 2,
dureeEstimee: 7,
budgetEstime: 8000,
competencesRequises: ['Laboratoire géotechnique'],
obligatoire: true
},
{
id: 'vs-01-03',
nom: 'Recommandations fondations',
description: 'Dimensionnement fondations adaptées sol gonflant',
ordre: 3,
dureeEstimee: 3,
budgetEstime: 5000,
competencesRequises: ['Ingénieur géotechnicien'],
obligatoire: true
}
]
},
{
id: 'vs-02',
nom: 'Terrassement et Fondations Anti-Gonflantes',
description: 'Terrassement adapté, fondations sur sol gonflant, drainage',
ordre: 2,
dureeEstimee: 20,
budgetEstime: 45000,
competencesRequises: ['Terrassier spécialisé', 'Maçon béton armé', 'Draineur'],
prerequis: ['Études géotechniques validées'],
categorieMetier: 'GROS_OEUVRE',
obligatoire: true,
personnalisable: true,
sousPhases: [
{
id: 'vs-02-01',
nom: 'Décapage sélectif',
description: 'Décapage 50cm + substitution matériaux inertes',
ordre: 1,
dureeEstimee: 5,
budgetEstime: 15000,
competencesRequises: ['Terrassier', 'Contrôleur matériaux'],
obligatoire: true
},
{
id: 'vs-02-02',
nom: 'Fondations profondes',
description: 'Semelles filantes BA avec longrines - 1,2m profondeur minimum',
ordre: 2,
dureeEstimee: 10,
budgetEstime: 25000,
competencesRequises: ['Ferrailleur', 'Coffreur', 'Bétonnier'],
obligatoire: true
},
{
id: 'vs-02-03',
nom: 'Drainage périphérique',
description: 'Drain français + regard + évacuation - protection gonflement',
ordre: 3,
dureeEstimee: 5,
budgetEstime: 5000,
competencesRequises: ['Draineur', 'Canalisateur'],
obligatoire: true
}
]
},
{
id: 'vs-03',
nom: 'Vide Sanitaire Ventilé Anti-Termites',
description: 'VS hauteur 60cm minimum, ventilé, traité anti-termites',
ordre: 3,
dureeEstimee: 12,
budgetEstime: 28000,
competencesRequises: ['Maçon', 'Traitement bois', 'Ventilation'],
prerequis: ['Fondations terminées'],
categorieMetier: 'GROS_OEUVRE',
obligatoire: true,
personnalisable: false,
sousPhases: [
{
id: 'vs-03-01',
nom: 'Murs vide sanitaire',
description: 'Murs agglos 15cm avec ventilations - 4 ventilations mini par face',
ordre: 1,
dureeEstimee: 6,
budgetEstime: 15000,
competencesRequises: ['Maçon'],
obligatoire: true
},
{
id: 'vs-03-02',
nom: 'Traitement anti-termites',
description: 'Traitement chimique sol + barrière physique Termimesh',
ordre: 2,
dureeEstimee: 3,
budgetEstime: 8000,
competencesRequises: ['Applicateur agréé termites'],
obligatoire: true
},
{
id: 'vs-03-03',
nom: 'Hourdi ventilé',
description: 'Plancher poutrelles/hourdis avec isolation réfléchissante',
ordre: 3,
dureeEstimee: 3,
budgetEstime: 5000,
competencesRequises: ['Poseur plancher'],
obligatoire: true
}
]
},
{
id: 'vs-04',
nom: 'Élévation Murs - Système Bioclimatique',
description: 'Murs double cloison isolante - orientation optimisée climat sahélien',
ordre: 4,
dureeEstimee: 25,
budgetEstime: 55000,
competencesRequises: ['Maçon qualifié', 'Isolateur thermique'],
prerequis: ['Vide sanitaire achevé'],
categorieMetier: 'GROS_OEUVRE',
obligatoire: true,
personnalisable: true,
sousPhases: [
{
id: 'vs-04-01',
nom: 'Mur extérieur porteur',
description: 'Agglos 15cm - Résistance thermique climat sahélien',
ordre: 1,
dureeEstimee: 12,
budgetEstime: 25000,
competencesRequises: ['Maçon'],
obligatoire: true
},
{
id: 'vs-04-02',
nom: 'Isolation thermique',
description: 'Isolation réfléchissante + laine roche 10cm - R≥3',
ordre: 2,
dureeEstimee: 8,
budgetEstime: 18000,
competencesRequises: ['Isolateur thermique'],
obligatoire: true
},
{
id: 'vs-04-03',
nom: 'Mur intérieur + lame air',
description: 'Cloison placoplatre + lame air ventilée 5cm',
ordre: 3,
dureeEstimee: 5,
budgetEstime: 12000,
competencesRequises: ['Plaquiste'],
obligatoire: true
}
]
},
{
id: 'vs-05',
nom: 'Charpente Anti-Harmattan Renforcée',
description: 'Charpente métallique galvanisée - résistance vents violents 100km/h',
ordre: 5,
dureeEstimee: 15,
budgetEstime: 35000,
competencesRequises: ['Charpentier métallique', 'Soudeur qualifié'],
prerequis: ['Murs terminés'],
categorieMetier: 'GROS_OEUVRE',
obligatoire: true,
personnalisable: true,
sousPhases: [
{
id: 'vs-05-01',
nom: 'Structure primaire',
description: 'Fermes métalliques galvanisées - espacement 3m max',
ordre: 1,
dureeEstimee: 8,
budgetEstime: 20000,
competencesRequises: ['Charpentier métallique'],
obligatoire: true
},
{
id: 'vs-05-02',
nom: 'Pannes et contre-ventements',
description: 'Pannes acier + contreventements anti-soulèvement',
ordre: 2,
dureeEstimee: 4,
budgetEstime: 8000,
competencesRequises: ['Charpentier'],
obligatoire: true
},
{
id: 'vs-05-03',
nom: 'Fixations renforcées',
description: 'Ancrages chimiques + boulons HA - résistance arrachement',
ordre: 3,
dureeEstimee: 3,
budgetEstime: 7000,
competencesRequises: ['Fixateur qualifié'],
obligatoire: true
}
]
}
// [CONTINUE AVEC LES 13 AUTRES PHASES ULTRA-DÉTAILLÉES...]
]
},
// ========== IMMEUBLE R+4 ZONE CÔTIÈRE ==========
{
id: 'immeuble-r4-cotier',
nom: 'Immeuble R+4 - Zone Côtière Atlantique',
description: 'Immeuble résistant embruns salés, vents forts, corrosion marine',
categorie: 'RESIDENTIEL',
complexiteMetier: 'EXPERT',
dureeGlobaleEstimee: 360,
budgetGlobalEstime: 850000,
nombreTotalPhases: 22,
tags: ['Côtier', 'Anti-corrosion', 'Embruns', 'Vents forts', 'R+4'],
phases: [
{
id: 'ic-01',
nom: 'Études Spécialisées Environnement Marin',
description: 'Études corrosion, vents, fondations marines, impact environnemental',
ordre: 1,
dureeEstimee: 30,
budgetEstime: 45000,
competencesRequises: ['Ingénieur maritime', 'Géotechnicien côtier', 'Climatologue'],
prerequis: ['Permis construire', 'Étude impact'],
categorieMetier: 'GROS_OEUVRE',
obligatoire: true,
personnalisable: false,
sousPhases: [
{
id: 'ic-01-01',
nom: 'Étude corrosion marine',
description: 'Analyse agressivité chlorures, pH, résistivité sols',
ordre: 1,
dureeEstimee: 10,
budgetEstime: 15000,
competencesRequises: ['Spécialiste corrosion marine'],
obligatoire: true
},
{
id: 'ic-01-02',
nom: 'Étude vents et cyclones',
description: 'Rose des vents, pressions dynamiques, calculs structure',
ordre: 2,
dureeEstimee: 12,
budgetEstime: 18000,
competencesRequises: ['Ingénieur calcul vent'],
obligatoire: true
},
{
id: 'ic-01-03',
nom: 'Géotechnique marine',
description: 'Sondages marins, battage, liquéfaction, tassements',
ordre: 3,
dureeEstimee: 8,
budgetEstime: 12000,
competencesRequises: ['Géotechnicien maritime'],
obligatoire: true
}
]
}
// [AUTRES PHASES ULTRA-DÉTAILLÉES POUR ZONE CÔTIÈRE...]
]
}
// [CONTINUER AVEC TOUS LES AUTRES TEMPLATES...]
];
// ================== CALCULATEUR SPÉCIALISÉ AFRIQUE ==================
export class CalculateurAfriqueDetaille extends CalculateurBTPAfrique {
/**
* Calcul spécialisé pour fondations sols gonflants (Sahel)
*/
static calculerFondationsSolsGonflants(params: {
surface: number; // m²
chargesBatiment: number; // tonnes
gonflementPrevu: number; // % (généralement 2-8%)
profondeurHorsGel: number; // m
zoneClimatique: string;
}) {
const { surface, chargesBatiment, gonflementPrevu, profondeurHorsGel, zoneClimatique } = params;
// Profondeur fondations selon gonflement
let profondeurRequise = Math.max(profondeurHorsGel, 1.2);
if (gonflementPrevu > 4) profondeurRequise += 0.3;
if (gonflementPrevu > 6) profondeurRequise += 0.5;
// Surface semelles (approximation 10% surface bâtiment)
const surfaceSemelles = surface * 0.10;
// Volume béton semelles + longrines
const volumeBetonSemelles = surfaceSemelles * 0.4; // 40cm hauteur moyenne
const volumeBetonLongrines = surface * 0.15 * 0.3 * 0.4; // périmètre × section
const volumeBetonTotal = volumeBetonSemelles + volumeBetonLongrines;
// Béton haute résistance pour sols agressifs
const betonC30 = this.calculerBetonArme({
longueur: Math.sqrt(surface),
largeur: Math.sqrt(surface),
epaisseur: profondeurRequise * 100,
typeOuvrage: 'DALLE',
classeBeton: 'C30/37', // Résistance chimique
classeExposition: 'XC4', // Agression chimique modérée
acierType: 'FeE500'
});
// Drainage spécialisé
const longueurDrainagePE = surface * 0.5; // 0.5ml/m²
const volumeGravierDrainage = longueurDrainagePE * 0.3 * 0.3; // m³
// Matériaux anti-gonflement
const volumeSubstitution = surface * 0.5; // 50cm substitution
const gravierConcasse = volumeSubstitution * 1.7; // tonnes (densité 1.7)
return {
fondations: {
profondeur: profondeurRequise,
volumeBeton: volumeBetonTotal,
materiaux: betonC30.materiaux,
acierRequis: Math.ceil(volumeBetonTotal * 120) // 120kg/m³ pour fondations
},
drainage: {
longueurTubes: longueurDrainagePE,
gravierDrainant: Math.ceil(volumeGravierDrainage),
regardsVisite: Math.ceil(longueurDrainagePE / 20) // 1 regard/20ml
},
substitution: {
volumeDecapage: volumeSubstitution,
gravierSubstitution: Math.ceil(gravierConcasse),
geotextile: Math.ceil(surface * 1.1) // +10% recouvrements
},
specifications: {
classeBeton: 'C30/37 XC4',
enrobage: '4cm minimum',
acierType: 'FeE500 galvanisé recommandé',
drainage: 'PE 100mm perforé + géotextile'
}
};
}
/**
* Calcul toiture anti-cyclonique (zone côtière)
*/
static calculerToitureAntiCyclonique(params: {
surface: number; // m²
hauteurBatiment: number; // m
ventMaxPrevus: number; // km/h
formeToiture: 'TERRASSE' | 'PENTE_FAIBLE' | 'PENTE_FORTE';
expositionVent: 'PROTEGE' | 'NORMAL' | 'EXPOSE';
}) {
const { surface, hauteurBatiment, ventMaxPrevus, formeToiture, expositionVent } = params;
// Pression dynamique vent (formule Eurocode)
const vitesseVent = ventMaxPrevus / 3.6; // m/s
const pressionVent = 0.613 * Math.pow(vitesseVent, 2); // Pa
// Coefficients selon exposition
const coeffExposition = {
'PROTEGE': 0.8,
'NORMAL': 1.0,
'EXPOSE': 1.3
};
const pressionCalcul = pressionVent * coeffExposition[expositionVent];
// Force arrachement totale
const forceArrachement = surface * pressionCalcul; // N
// Nombre fixations nécessaires (sécurité 2.5)
const resistanceFixation = 2000; // N par fixation (ancrage chimique)
const nombreFixations = Math.ceil(forceArrachement * 2.5 / resistanceFixation);
// Espacement fixations
const espacementFixations = Math.min(
Math.sqrt(surface / nombreFixations),
0.6 // maximum 60cm
);
// Matériaux structure
let epaisseurDalle = 15; // cm minimum
if (ventMaxPrevus > 150) epaisseurDalle = 20;
if (ventMaxPrevus > 200) epaisseurDalle = 25;
const betonToiture = this.calculerBetonArme({
longueur: Math.sqrt(surface),
largeur: Math.sqrt(surface),
epaisseur: epaisseurDalle,
typeOuvrage: 'DALLE',
classeBeton: 'C35/45', // Haute résistance
classeExposition: 'XS3', // Embruns marins
acierType: 'FeE500'
});
// Étanchéité renforcée
const surfaceEtancheite = surface * 1.15; // +15% relevés
const epaisseurEtancheite = ventMaxPrevus > 180 ? 2 : 1.5; // mm
return {
calculs: {
pressionVent: Math.round(pressionCalcul),
forceArrachement: Math.round(forceArrachement / 1000), // kN
nombreFixations,
espacementFixations: Math.round(espacementFixations * 100) // cm
},
structure: {
epaisseurDalle: epaisseurDalle,
materiaux: betonToiture.materiaux,
armatureSpeciale: 'Treillis soudé + cadres anti-poinçonnement'
},
fixations: {
type: 'Ancrages chimiques M12 longueur 150mm',
nombre: nombreFixations,
espacement: `${Math.round(espacementFixations * 100)}cm`,
couple: 'Couple serrage 85 Nm'
},
etancheite: {
surface: Math.ceil(surfaceEtancheite),
type: `Membrane EPDM ${epaisseurEtancheite}mm`,
fixationSpeciale: 'Fixation mécanique + collage',
lestage: ventMaxPrevus > 200 ? 'Lestage graviers 50kg/m²' : 'Non requis'
},
evacuation: {
nombreEP: Math.ceil(surface / 50), // 1 EP par 50m²
diametreEP: ventMaxPrevus > 150 ? 125 : 100, // mm
tropPlein: 'Obligatoire si surface >200m²'
}
};
}
}
export default TEMPLATES_AFRIQUE_DETAILLES;