Initial commit

This commit is contained in:
dahoud
2025-10-01 01:39:07 +00:00
commit b430bf3b96
826 changed files with 255287 additions and 0 deletions

695
data/templates-afrique.ts Normal file
View File

@@ -0,0 +1,695 @@
/**
* 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;