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

498
data/chantier-templates.ts Normal file
View File

@@ -0,0 +1,498 @@
/**
* Base de données des templates de chantiers avec phases pré-configurées
* Basé sur les standards BTP et pratiques métier
*/
import { ChantierTemplate, PhaseTemplate, TypeChantier, PHASES_COMMUNES } from '../types/chantier-templates';
// Template pour Maison Individuelle
const MAISON_INDIVIDUELLE_TEMPLATE: ChantierTemplate = {
typeChantier: 'MAISON_INDIVIDUELLE',
nom: 'Construction Maison Individuelle',
description: 'Construction neuve d\'une maison individuelle traditionnelle',
dureeMoyenneJours: 270,
phases: [
...PHASES_COMMUNES,
{
id: 'terrassement-fondations',
nom: 'Terrassement et fondations',
description: 'Préparation du terrain et réalisation des fondations',
ordreExecution: 4,
dureePrevueJours: 15,
critique: true,
prerequis: ['preparation-chantier'],
sousPhases: [
{
id: 'terrassement',
nom: 'Terrassement général',
description: 'Décaissement, nivellement, évacuation terres',
ordreExecution: 1,
dureePrevueJours: 5,
materielsTypes: ['Pelle mécanique', 'Compacteur', 'Camions'],
competencesRequises: ['Conducteur d\'engins', 'Chef d\'équipe terrassement']
},
{
id: 'reseaux-enterres',
nom: 'Réseaux enterrés',
description: 'Eau, électricité, drainage, assainissement',
ordreExecution: 2,
dureePrevueJours: 3,
materielsTypes: ['Canalisations', 'Regards', 'Câbles'],
competencesRequises: ['Plombier', 'Électricien', 'Canalisateur']
},
{
id: 'fondations',
nom: 'Coulage des fondations',
description: 'Semelles filantes, longrines, vide sanitaire',
ordreExecution: 3,
dureePrevueJours: 7,
materielsTypes: ['Béton', 'Ferraillage', 'Coffrage'],
competencesRequises: ['Maçon', 'Ferrailleur', 'Coffreur']
}
],
materielsTypes: ['Engins de terrassement', 'Matériaux fondations'],
competencesRequises: ['Maçon', 'Conducteur d\'engins'],
controleQualite: ['Contrôle géométrie', 'Résistance béton']
},
{
id: 'gros-oeuvre',
nom: 'Gros œuvre',
description: 'Structure porteuse, murs, planchers, toiture',
ordreExecution: 5,
dureePrevueJours: 45,
critique: true,
prerequis: ['terrassement-fondations'],
sousPhases: [
{
id: 'elevation-murs-porteurs',
nom: 'Élévation murs porteurs',
description: 'Murs en parpaings, poteaux, chaînages',
ordreExecution: 1,
dureePrevueJours: 20,
materielsTypes: ['Parpaings', 'Mortier', 'Ferraillage'],
competencesRequises: ['Maçon', 'Ferrailleur']
},
{
id: 'planchers-dalles',
nom: 'Planchers et dalles',
description: 'Hourdis, dalle béton, plancher bois',
ordreExecution: 2,
dureePrevueJours: 10,
materielsTypes: ['Hourdis', 'Béton', 'Poutrelles'],
competencesRequises: ['Maçon', 'Charpentier']
},
{
id: 'charpente-couverture',
nom: 'Charpente et couverture',
description: 'Charpente bois/métal, couverture, étanchéité',
ordreExecution: 3,
dureePrevueJours: 15,
materielsTypes: ['Bois charpente', 'Tuiles', 'Isolant'],
competencesRequises: ['Charpentier', 'Couvreur']
}
],
materielsTypes: ['Matériaux gros œuvre'],
competencesRequises: ['Maçon', 'Charpentier', 'Couvreur'],
controleQualite: ['Verticalité murs', 'Étanchéité toiture']
},
{
id: 'second-oeuvre',
nom: 'Second œuvre',
description: 'Menuiseries, cloisons, réseaux, finitions',
ordreExecution: 6,
dureePrevueJours: 60,
critique: false,
prerequis: ['gros-oeuvre'],
sousPhases: [
{
id: 'menuiseries-exterieures',
nom: 'Menuiseries extérieures',
description: 'Fenêtres, portes-fenêtres, porte d\'entrée',
ordreExecution: 1,
dureePrevueJours: 5,
materielsTypes: ['Menuiseries', 'Quincaillerie'],
competencesRequises: ['Menuisier', 'Poseur']
},
{
id: 'cloisons-isolation',
nom: 'Cloisons et isolation',
description: 'Cloisons placo, isolation thermique/acoustique',
ordreExecution: 2,
dureePrevueJours: 15,
materielsTypes: ['Placo', 'Isolant', 'Rails'],
competencesRequises: ['Plaquiste', 'Isolateur']
},
{
id: 'plomberie-electricite',
nom: 'Plomberie et électricité',
description: 'Réseaux eau, électricité, chauffage',
ordreExecution: 3,
dureePrevueJours: 20,
materielsTypes: ['Canalisations', 'Câbles', 'Équipements'],
competencesRequises: ['Plombier', 'Électricien', 'Chauffagiste']
},
{
id: 'revetements-finitions',
nom: 'Revêtements et finitions',
description: 'Carrelage, peinture, parquet, sanitaires',
ordreExecution: 4,
dureePrevueJours: 20,
materielsTypes: ['Carrelage', 'Peinture', 'Parquet'],
competencesRequises: ['Carreleur', 'Peintre', 'Parqueteur']
}
],
materielsTypes: ['Matériaux second œuvre'],
competencesRequises: ['Corps d\'état secondaires'],
controleQualite: ['Conformité installations', 'Finitions qualité']
},
{
id: 'amenagements-exterieurs',
nom: 'Aménagements extérieurs',
description: 'Voiries, espaces verts, clôtures',
ordreExecution: 7,
dureePrevueJours: 20,
critique: false,
prerequis: ['second-oeuvre'],
sousPhases: [
{
id: 'voiries-acces',
nom: 'Voiries et accès',
description: 'Allées, parking, accès véhicules',
ordreExecution: 1,
dureePrevueJours: 10,
materielsTypes: ['Béton', 'Enrobé', 'Pavés'],
competencesRequises: ['Maçon VRD', 'Conducteur d\'engins']
},
{
id: 'espaces-verts',
nom: 'Espaces verts',
description: 'Pelouse, plantations, arrosage',
ordreExecution: 2,
dureePrevueJours: 7,
materielsTypes: ['Terre végétale', 'Plants', 'Arrosage'],
competencesRequises: ['Paysagiste', 'Jardinier']
},
{
id: 'clotures-portails',
nom: 'Clôtures et portails',
description: 'Clôtures périmètre, portail, boîte aux lettres',
ordreExecution: 3,
dureePrevueJours: 3,
materielsTypes: ['Clôtures', 'Portail', 'Serrurerie'],
competencesRequises: ['Poseur clôtures', 'Serrurier']
}
],
materielsTypes: ['Matériaux VRD'],
competencesRequises: ['Équipe VRD', 'Paysagiste'],
controleQualite: ['Évacuation eaux pluviales', 'Finitions extérieures']
},
{
id: 'controles-reception',
nom: 'Contrôles et réception',
description: 'Vérifications, tests, réception des travaux',
ordreExecution: 8,
dureePrevueJours: 10,
critique: true,
prerequis: ['amenagements-exterieurs'],
sousPhases: [
{
id: 'controles-techniques',
nom: 'Contrôles techniques',
description: 'Consuel, DPE, contrôles réglementaires',
ordreExecution: 1,
dureePrevueJours: 5,
competencesRequises: ['Organisme contrôle', 'Diagnostiqueur']
},
{
id: 'levee-reserves',
nom: 'Levée des réserves',
description: 'Correction défauts, finitions',
ordreExecution: 2,
dureePrevueJours: 3,
competencesRequises: ['Tous corps d\'état']
},
{
id: 'reception-definitive',
nom: 'Réception définitive',
description: 'PV réception, remise clés, garanties',
ordreExecution: 3,
dureePrevueJours: 2,
competencesRequises: ['Maître d\'œuvre', 'Maître d\'ouvrage']
}
],
competencesRequises: ['Maître d\'œuvre', 'Organismes de contrôle'],
controleQualite: ['Conformité réglementaire', 'Satisfaction client']
}
],
specificites: [
'RT 2020 ou RE 2020',
'Accessibilité PMR si requis',
'Performance énergétique',
'Qualité environnementale'
],
reglementations: [
'Code de la construction',
'Réglementation thermique',
'Normes électriques NF C 15-100',
'DTU applicables'
]
};
// Template pour Immeuble Collectif
const IMMEUBLE_COLLECTIF_TEMPLATE: ChantierTemplate = {
typeChantier: 'IMMEUBLE_COLLECTIF',
nom: 'Construction Immeuble Collectif',
description: 'Construction d\'un immeuble d\'habitation collectif',
dureeMoyenneJours: 540,
phases: [
...PHASES_COMMUNES,
{
id: 'terrassement-fondations-collectif',
nom: 'Terrassement et fondations',
description: 'Préparation terrain et fondations pour immeuble',
ordreExecution: 4,
dureePrevueJours: 30,
critique: true,
prerequis: ['preparation-chantier'],
sousPhases: [
{
id: 'terrassement-general',
nom: 'Terrassement général',
description: 'Décaissement, parking sous-sol éventuel',
ordreExecution: 1,
dureePrevueJours: 10,
materielsTypes: ['Engins lourds', 'Évacuation terres'],
competencesRequises: ['Conducteur d\'engins', 'Chef terrassement']
},
{
id: 'reseaux-collectifs',
nom: 'Réseaux collectifs',
description: 'Réseaux eau, gaz, électricité, télécoms',
ordreExecution: 2,
dureePrevueJours: 8,
materielsTypes: ['Réseaux enterrés', 'Compteurs collectifs'],
competencesRequises: ['Spécialistes réseaux', 'Canalisateur']
},
{
id: 'fondations-profondes',
nom: 'Fondations profondes',
description: 'Pieux, semelles, voiles béton armé',
ordreExecution: 3,
dureePrevueJours: 12,
materielsTypes: ['Béton haute résistance', 'Ferraillage lourd'],
competencesRequises: ['Maçon béton armé', 'Ferrailleur']
}
],
materielsTypes: ['Engins lourds', 'Béton armé'],
competencesRequises: ['Maçon BA', 'Conducteur d\'engins'],
controleQualite: ['Bureau contrôle', 'Résistance béton']
},
{
id: 'gros-oeuvre-collectif',
nom: 'Gros œuvre structure',
description: 'Structure béton armé, refends, planchers',
ordreExecution: 5,
dureePrevueJours: 120,
critique: true,
prerequis: ['terrassement-fondations-collectif'],
sousPhases: [
{
id: 'structure-ba',
nom: 'Structure béton armé',
description: 'Poteaux, poutres, voiles porteurs',
ordreExecution: 1,
dureePrevueJours: 60,
materielsTypes: ['Béton armé', 'Coffrages'],
competencesRequises: ['Maçon BA', 'Coffreur', 'Ferrailleur']
},
{
id: 'planchers-etages',
nom: 'Planchers étages',
description: 'Dalles BA, prédalles pour chaque niveau',
ordreExecution: 2,
dureePrevueJours: 40,
materielsTypes: ['Prédalles', 'Béton', 'Treillis soudé'],
competencesRequises: ['Maçon', 'Grutier']
},
{
id: 'toiture-terrasse',
nom: 'Toiture terrasse',
description: 'Dalle haute, étanchéité, isolation',
ordreExecution: 3,
dureePrevueJours: 20,
materielsTypes: ['Étanchéité', 'Isolation', 'Protection'],
competencesRequises: ['Étancheur', 'Couvreur']
}
],
materielsTypes: ['Béton armé', 'Coffrages'],
competencesRequises: ['Maçon BA', 'Grutier'],
controleQualite: ['Bureau contrôle', 'Suivi béton']
},
// ... Autres phases spécifiques au collectif
{
id: 'second-oeuvre-collectif',
nom: 'Second œuvre collectif',
description: 'Aménagements intérieurs, équipements collectifs',
ordreExecution: 6,
dureePrevueJours: 150,
critique: false,
prerequis: ['gros-oeuvre-collectif'],
sousPhases: [
{
id: 'cloisons-distribution',
nom: 'Cloisons et distribution',
description: 'Refends, cloisons séparatives, gaines techniques',
ordreExecution: 1,
dureePrevueJours: 40,
materielsTypes: ['Cloisons BA13', 'Gaines techniques'],
competencesRequises: ['Plaquiste', 'Cloisionneur']
},
{
id: 'lots-techniques',
nom: 'Lots techniques',
description: 'Plomberie, électricité, chauffage collectif, VMC',
ordreExecution: 2,
dureePrevueJours: 60,
materielsTypes: ['Équipements techniques', 'Réseaux'],
competencesRequises: ['Plombier', 'Électricien', 'Chauffagiste', 'Ventiliste']
},
{
id: 'finitions-logements',
nom: 'Finitions logements',
description: 'Sols, peintures, équipements sanitaires',
ordreExecution: 3,
dureePrevueJours: 50,
materielsTypes: ['Revêtements', 'Sanitaires', 'Peintures'],
competencesRequises: ['Carreleur', 'Peintre', 'Plombier']
}
],
materielsTypes: ['Équipements second œuvre'],
competencesRequises: ['Corps d\'état techniques'],
controleQualite: ['Performance énergétique', 'Acoustique']
}
],
specificites: [
'Accessibilité PMR obligatoire',
'Parties communes',
'Équipements collectifs',
'Performance énergétique renforcée',
'Acoustique réglementaire'
],
reglementations: [
'Code de la construction (habitation)',
'Accessibilité PMR',
'Réglementation incendie ERP',
'Acoustique NRA',
'RT 2020'
]
};
// Template pour Bureau Commercial
const BUREAU_COMMERCIAL_TEMPLATE: ChantierTemplate = {
typeChantier: 'BUREAU_COMMERCIAL',
nom: 'Construction Bureau/Commerce',
description: 'Bâtiment tertiaire à usage de bureau ou commercial',
dureeMoyenneJours: 360,
phases: [
...PHASES_COMMUNES,
// Phases spécifiques tertiaire avec espaces modulaires,
// parking, accessibilité ERP, réseaux informatiques...
],
specificites: [
'Espaces modulaires',
'Accessibilité ERP',
'Parking dimensionné',
'Réseaux informatiques',
'Climatisation'
],
reglementations: [
'ERP (Établissement Recevant du Public)',
'Code du travail (locaux)',
'Accessibilité PMR',
'Réglementation incendie'
]
};
// Base de données des templates
export const CHANTIER_TEMPLATES: Record<TypeChantier, ChantierTemplate> = {
MAISON_INDIVIDUELLE: MAISON_INDIVIDUELLE_TEMPLATE,
IMMEUBLE_COLLECTIF: IMMEUBLE_COLLECTIF_TEMPLATE,
BUREAU_COMMERCIAL: BUREAU_COMMERCIAL_TEMPLATE,
// Autres types (versions simplifiées pour l'exemple)
RENOVATION_RESIDENTIELLE: {
typeChantier: 'RENOVATION_RESIDENTIELLE',
nom: 'Rénovation Résidentielle',
description: 'Rénovation complète ou partielle d\'habitat',
dureeMoyenneJours: 180,
phases: [...PHASES_COMMUNES.slice(0, 2), /* phases spécifiques rénovation */],
specificites: ['Diagnostics préalables', 'Désamiantage éventuel', 'Isolation renforcée'],
reglementations: ['Diagnostic amiante', 'Performance énergétique']
},
EXTENSION_RESIDENTIELLE: {
typeChantier: 'EXTENSION_RESIDENTIELLE',
nom: 'Extension Résidentielle',
description: 'Extension d\'une habitation existante',
dureeMoyenneJours: 120,
phases: [...PHASES_COMMUNES.slice(0, 2), /* phases spécifiques extension */],
specificites: ['Raccordement existant', 'Harmonie architecturale'],
reglementations: ['Permis de construire ou déclaration préalable']
},
// Templates simplifiés pour les autres types
CENTRE_COMMERCIAL: {
typeChantier: 'CENTRE_COMMERCIAL',
nom: 'Centre Commercial',
description: 'Construction d\'un centre commercial',
dureeMoyenneJours: 720,
phases: [...PHASES_COMMUNES],
specificites: ['Grande portée', 'Équipements spécialisés', 'Fluides complexes'],
reglementations: ['ERP 1ère catégorie', 'Commission de sécurité']
},
// ... (autres templates similaires pour tous les types)
ETABLISSEMENT_SCOLAIRE: { typeChantier: 'ETABLISSEMENT_SCOLAIRE', nom: 'Établissement Scolaire', description: '', dureeMoyenneJours: 600, phases: [...PHASES_COMMUNES], specificites: [], reglementations: [] },
ETABLISSEMENT_SANTE: { typeChantier: 'ETABLISSEMENT_SANTE', nom: 'Établissement de Santé', description: '', dureeMoyenneJours: 900, phases: [...PHASES_COMMUNES], specificites: [], reglementations: [] },
ETABLISSEMENT_SPORTIF: { typeChantier: 'ETABLISSEMENT_SPORTIF', nom: 'Établissement Sportif', description: '', dureeMoyenneJours: 480, phases: [...PHASES_COMMUNES], specificites: [], reglementations: [] },
ENTREPOT_LOGISTIQUE: { typeChantier: 'ENTREPOT_LOGISTIQUE', nom: 'Entrepôt Logistique', description: '', dureeMoyenneJours: 240, phases: [...PHASES_COMMUNES], specificites: [], reglementations: [] },
VOIRIE_URBAINE: { typeChantier: 'VOIRIE_URBAINE', nom: 'Voirie Urbaine', description: '', dureeMoyenneJours: 150, phases: [...PHASES_COMMUNES], specificites: [], reglementations: [] },
AUTOROUTE: { typeChantier: 'AUTOROUTE', nom: 'Autoroute', description: '', dureeMoyenneJours: 1080, phases: [...PHASES_COMMUNES], specificites: [], reglementations: [] },
PONT_VIADUC: { typeChantier: 'PONT_VIADUC', nom: 'Pont/Viaduc', description: '', dureeMoyenneJours: 900, phases: [...PHASES_COMMUNES], specificites: [], reglementations: [] },
TUNNEL: { typeChantier: 'TUNNEL', nom: 'Tunnel', description: '', dureeMoyenneJours: 1440, phases: [...PHASES_COMMUNES], specificites: [], reglementations: [] },
PARKING: { typeChantier: 'PARKING', nom: 'Parking', description: '', dureeMoyenneJours: 120, phases: [...PHASES_COMMUNES], specificites: [], reglementations: [] },
AIRE_AMENAGEE: { typeChantier: 'AIRE_AMENAGEE', nom: 'Aire Aménagée', description: '', dureeMoyenneJours: 90, phases: [...PHASES_COMMUNES], specificites: [], reglementations: [] },
USINE_INDUSTRIELLE: { typeChantier: 'USINE_INDUSTRIELLE', nom: 'Usine Industrielle', description: '', dureeMoyenneJours: 720, phases: [...PHASES_COMMUNES], specificites: [], reglementations: [] },
CENTRALE_ENERGIE: { typeChantier: 'CENTRALE_ENERGIE', nom: 'Centrale Énergétique', description: '', dureeMoyenneJours: 1800, phases: [...PHASES_COMMUNES], specificites: [], reglementations: [] },
STATION_EPURATION: { typeChantier: 'STATION_EPURATION', nom: 'Station d\'Épuration', description: '', dureeMoyenneJours: 540, phases: [...PHASES_COMMUNES], specificites: [], reglementations: [] },
INSTALLATION_CHIMIQUE: { typeChantier: 'INSTALLATION_CHIMIQUE', nom: 'Installation Chimique', description: '', dureeMoyenneJours: 960, phases: [...PHASES_COMMUNES], specificites: [], reglementations: [] },
PISCINE: { typeChantier: 'PISCINE', nom: 'Piscine', description: '', dureeMoyenneJours: 90, phases: [...PHASES_COMMUNES], specificites: [], reglementations: [] },
COURT_TENNIS: { typeChantier: 'COURT_TENNIS', nom: 'Court de Tennis', description: '', dureeMoyenneJours: 45, phases: [...PHASES_COMMUNES], specificites: [], reglementations: [] },
TERRAIN_SPORT: { typeChantier: 'TERRAIN_SPORT', nom: 'Terrain de Sport', description: '', dureeMoyenneJours: 60, phases: [...PHASES_COMMUNES], specificites: [], reglementations: [] },
MONUMENT_HISTORIQUE: { typeChantier: 'MONUMENT_HISTORIQUE', nom: 'Monument Historique', description: '', dureeMoyenneJours: 720, phases: [...PHASES_COMMUNES], specificites: [], reglementations: [] },
OUVRAGE_ART: { typeChantier: 'OUVRAGE_ART', nom: 'Ouvrage d\'Art', description: '', dureeMoyenneJours: 540, phases: [...PHASES_COMMUNES], specificites: [], reglementations: [] }
};
// Fonction utilitaire pour récupérer un template
export function getChantierTemplate(typeChantier: TypeChantier): ChantierTemplate {
return CHANTIER_TEMPLATES[typeChantier];
}
// Fonction pour générer les phases d'un chantier
export function generatePhasesFromTemplate(typeChantier: TypeChantier, dateDebut: Date): PhaseTemplate[] {
const template = getChantierTemplate(typeChantier);
let currentDate = new Date(dateDebut);
return template.phases.map(phase => {
const phaseWithDates = {
...phase,
dateDebutPrevue: new Date(currentDate),
dateFinPrevue: new Date(currentDate.getTime() + (phase.dureePrevueJours * 24 * 60 * 60 * 1000))
};
// Avancer la date pour la phase suivante
currentDate = new Date(phaseWithDates.dateFinPrevue);
return phaseWithDates;
});
}

920
data/materiaux-database.ts Normal file
View File

@@ -0,0 +1,920 @@
/**
* BASE DE DONNÉES ULTRA-DÉTAILLÉE DES MATÉRIAUX BTP
* Système le plus ambitieux d'Afrique - Tous les détails techniques
* Spécifications pour climat tropical, normes africaines, calculs précis
*/
// ================== TYPES DE BASE ==================
export interface DimensionsTechniques {
longueur: number; // mm
largeur: number; // mm
hauteur: number; // mm
epaisseur?: number; // mm
diametre?: number; // mm pour tubes, fers ronds
rayonCourbure?: number; // mm pour éléments courbes
tolerance: number; // mm - tolérance de fabrication
}
export interface ProprietesPhysiques {
densite: number; // kg/m³
resistanceCompression: number; // MPa
resistanceTraction: number; // MPa
resistanceFlexion: number; // MPa
moduleElasticite: number; // GPa
coefficientDilatation: number; // /°C
absorptionEau: number; // %
porosite: number; // %
conductiviteThermique: number; // W/m.K
resistanceGel: boolean;
resistanceIntemperies: 'EXCELLENT' | 'BON' | 'MOYEN' | 'FAIBLE';
}
export interface SpecificationsClimatiques {
temperatureMin: number; // °C
temperatureMax: number; // °C
humiditeMax: number; // %
resistanceUV: 'EXCELLENT' | 'BON' | 'MOYEN' | 'FAIBLE';
resistancePluie: 'EXCELLENT' | 'BON' | 'MOYEN' | 'FAIBLE';
resistanceVentFort: boolean;
adaptationSaison: {
saison: 'SECHE' | 'PLUIES' | 'HARMATTAN';
recommandations: string[];
}[];
}
export interface NormesAfricaines {
norme: string; // ex: "NF EN 197-1", "ASTM C150", "BS 12"
classification: string;
certificationRequise: boolean;
organismeControle: string[];
testsObligatoires: string[];
marquageCE: boolean;
conformiteEAC?: boolean; // East African Community
conformiteECOWAS?: boolean; // Economic Community of West African States
conformiteSADC?: boolean; // Southern African Development Community
}
export interface CalculsQuantification {
uniteBase: string; // m², m³, kg, pièce, ml
facteurPerte: number; // % de perte normale
facteurSurapprovisionnement: number; // % de marge sécurité
modeFourniture: 'VRAC' | 'PALETTE' | 'SACS' | 'PIECES';
conditionnement: {
quantiteParUnite: number;
poidsUnitaire: number; // kg
dimensionsEmballage: DimensionsTechniques;
};
calculAutomatique: {
formule: string; // formule de calcul automatique
parametres: string[]; // paramètres nécessaires
};
}
export interface MaterielBTP {
id: string;
nom: string;
categorie: 'GROS_OEUVRE' | 'SECOND_OEUVRE' | 'FINITIONS' | 'ISOLATION' | 'ETANCHEITE' | 'EQUIPEMENTS';
sousCategorie: string;
// Spécifications techniques détaillées
dimensions: DimensionsTechniques;
proprietes: ProprietesPhysiques;
climatique: SpecificationsClimatiques;
normes: NormesAfricaines;
quantification: CalculsQuantification;
// Informations commerciales
marques: {
nom: string;
origine: string;
certifie: boolean;
prix: {
devise: 'XOF' | 'XAF' | 'USD' | 'EUR';
montant: number;
unite: string;
}[];
}[];
fournisseurs: {
nom: string;
pays: string;
ville: string;
delaiLivraison: number; // jours
quantiteMinimale: number;
conditions: string[];
}[];
// Mise en œuvre
miseEnOeuvre: {
outillageNecessaire: string[];
competencesRequises: string[];
tempsUnitaire: number; // minutes par unité
conditionsMeteo: string[];
temperatureOptimale: { min: number; max: number };
precautions: string[];
};
// Qualité et contrôle
controleQualite: {
testReception: string[];
frequenceControle: string;
critereAcceptation: string[];
defautsFrequents: string[];
};
// Durabilité et maintenance
durabilite: {
dureeVieEstimee: number; // années
maintenanceRequise: boolean;
frequenceMaintenance?: string;
signesdUsure: string[];
remplacement: string[];
};
}
// ================== BASE DE DONNÉES MATÉRIAUX ==================
export const MATERIAUX_BTP_DATABASE: MaterielBTP[] = [
// =================== MAÇONNERIE ===================
{
id: 'brique-rouge-15x10x5',
nom: 'Brique Rouge Pleine 15x10x5cm',
categorie: 'GROS_OEUVRE',
sousCategorie: 'Maçonnerie - Briques',
dimensions: {
longueur: 150,
largeur: 100,
hauteur: 50,
tolerance: 2
},
proprietes: {
densite: 1800,
resistanceCompression: 15,
resistanceTraction: 2.5,
resistanceFlexion: 4.2,
moduleElasticite: 12000,
coefficientDilatation: 0.000006,
absorptionEau: 12,
porosite: 18,
conductiviteThermique: 0.85,
resistanceGel: true,
resistanceIntemperies: 'EXCELLENT'
},
climatique: {
temperatureMin: -10,
temperatureMax: 60,
humiditeMax: 95,
resistanceUV: 'EXCELLENT',
resistancePluie: 'EXCELLENT',
resistanceVentFort: true,
adaptationSaison: [
{
saison: 'PLUIES',
recommandations: [
'Protection contre l\'eau pendant stockage',
'Séchage avant pose si humide',
'Éviter pose sous pluie battante'
]
},
{
saison: 'SECHE',
recommandations: [
'Humidification avant pose',
'Protection solaire du mortier',
'Arrosage après pose'
]
}
]
},
normes: {
norme: 'NF EN 771-1',
classification: 'M10 - FB 15',
certificationRequise: true,
organismeControle: ['CSTB', 'CERIB'],
testsObligatoires: [
'Résistance compression',
'Absorption d\'eau',
'Dimensions et tolérances',
'Gel/dégel'
],
marquageCE: true,
conformiteECOWAS: true
},
quantification: {
uniteBase: 'pièce',
facteurPerte: 5,
facteurSurapprovisionnement: 10,
modeFourniture: 'PALETTE',
conditionnement: {
quantiteParUnite: 500,
poidsUnitaire: 1.35, // kg par brique
dimensionsEmballage: {
longueur: 1200,
largeur: 800,
hauteur: 1000,
tolerance: 0
}
},
calculAutomatique: {
formule: '(surface_mur * 1000000) / (longueur * hauteur) / epaisseur_mur_en_briques',
parametres: ['surface_mur_m2', 'epaisseur_mur_cm']
}
},
marques: [
{
nom: 'Briqueterie du Sahel',
origine: 'Burkina Faso',
certifie: true,
prix: [
{ devise: 'XOF', montant: 45, unite: 'pièce' },
{ devise: 'XOF', montant: 22500, unite: 'palette_500' }
]
},
{
nom: 'CIMAF Briques',
origine: 'Côte d\'Ivoire',
certifie: true,
prix: [
{ devise: 'XOF', montant: 50, unite: 'pièce' },
{ devise: 'XOF', montant: 24000, unite: 'palette_500' }
]
}
],
fournisseurs: [
{
nom: 'Matériaux Modernes Abidjan',
pays: 'Côte d\'Ivoire',
ville: 'Abidjan',
delaiLivraison: 3,
quantiteMinimale: 1000,
conditions: ['Paiement comptant -3%', 'Livraison gratuite >5000 pièces']
}
],
miseEnOeuvre: {
outillageNecessaire: [
'Truelle',
'Niveau à bulle',
'Cordeau',
'Seau mortier',
'Taloche',
'Martelet caoutchouc'
],
competencesRequises: ['Maçon qualifié', 'Lecture de plan'],
tempsUnitaire: 3, // 3min par brique posée
conditionsMeteo: ['Pas de pluie', 'Température > 5°C'],
temperatureOptimale: { min: 15, max: 35 },
precautions: [
'Humidifier les briques avant pose',
'Mortier dosé à 350kg/m³',
'Joints de 10-12mm',
'Appareillage en quinconce'
]
},
controleQualite: {
testReception: [
'Vérification dimensions',
'Test sonore (percussion)',
'Contrôle visuel fissures',
'Vérification planéité'
],
frequenceControle: '1% des briques par lot',
critereAcceptation: [
'Dimensions ±2mm',
'Pas de fissures > 1mm',
'Couleur homogène',
'Son clair à la percussion'
],
defautsFrequents: [
'Fissures de séchage',
'Variations dimensionnelles',
'Éclats d\'angles',
'Couleur hétérogène'
]
},
durabilite: {
dureeVieEstimee: 100,
maintenanceRequise: false,
signesdUsure: [
'Efflorescence',
'Fissuration',
'Érosion des joints'
],
remplacement: [
'Reprise de maçonnerie localisée',
'Rejointoiement si nécessaire'
]
}
},
// =================== BÉTON ARMÉ - FER À BÉTON ===================
{
id: 'fer-beton-ha-12mm',
nom: 'Fer à Béton HA 12mm - Haute Adhérence',
categorie: 'GROS_OEUVRE',
sousCategorie: 'Béton Armé - Armatures',
dimensions: {
longueur: 12000, // barre de 12m standard
largeur: 0,
hauteur: 0,
diametre: 12,
tolerance: 0.5
},
proprietes: {
densite: 7850, // kg/m³ acier
resistanceCompression: 500, // MPa (limite élastique)
resistanceTraction: 550, // MPa
resistanceFlexion: 550,
moduleElasticite: 200000, // GPa
coefficientDilatation: 0.000012,
absorptionEau: 0,
porosite: 0,
conductiviteThermique: 50,
resistanceGel: true,
resistanceIntemperies: 'MOYEN' // nécessite protection
},
climatique: {
temperatureMin: -40,
temperatureMax: 80,
humiditeMax: 100,
resistanceUV: 'BON',
resistancePluie: 'MOYEN', // corrosion possible
resistanceVentFort: true,
adaptationSaison: [
{
saison: 'PLUIES',
recommandations: [
'Stockage sur chevrons, hors sol',
'Bâchage étanche obligatoire',
'Contrôle rouille avant mise en œuvre',
'Nettoyage si corrosion superficielle'
]
},
{
saison: 'SECHE',
recommandations: [
'Protection UV des barres stockées',
'Éviter surchauffe >60°C',
'Humidification du béton de coulage'
]
}
]
},
normes: {
norme: 'NF A 35-080-1',
classification: 'FeE500 - HA',
certificationRequise: true,
organismeControle: ['AFNOR', 'CSTB'],
testsObligatoires: [
'Traction - limite élastique',
'Traction - résistance rupture',
'Allongement rupture',
'Pliage-dépliage',
'Géométrie des verrous'
],
marquageCE: true,
conformiteECOWAS: true,
conformiteSADC: true
},
quantification: {
uniteBase: 'kg',
facteurPerte: 8, // chutes + façonnage
facteurSurapprovisionnement: 15,
modeFourniture: 'VRAC',
conditionnement: {
quantiteParUnite: 2000, // kg par lot
poidsUnitaire: 0.888, // kg/ml pour Ø12
dimensionsEmballage: {
longueur: 12000,
largeur: 200,
hauteur: 200,
tolerance: 0
}
},
calculAutomatique: {
formule: 'surface_dalle * epaisseur_dalle * densite_armature_kg_m3',
parametres: ['surface_m2', 'epaisseur_cm', 'ratio_armature_kg_m3']
}
},
marques: [
{
nom: 'ACIERIES du Bénin',
origine: 'Bénin',
certifie: true,
prix: [
{ devise: 'XOF', montant: 850, unite: 'kg' },
{ devise: 'XOF', montant: 1700000, unite: 'tonne' }
]
},
{
nom: 'SIDEX Mali',
origine: 'Mali',
certifie: true,
prix: [
{ devise: 'XOF', montant: 820, unite: 'kg' },
{ devise: 'XOF', montant: 1640000, unite: 'tonne' }
]
}
],
fournisseurs: [
{
nom: 'Négoce Sidérurgie Ouest-Afrique',
pays: 'Sénégal',
ville: 'Dakar',
delaiLivraison: 7,
quantiteMinimale: 500,
conditions: ['Transport inclus >1T', 'Façonnage sur demande']
}
],
miseEnOeuvre: {
outillageNecessaire: [
'Coupe-boulons Ø12',
'Cintreuse manuelle',
'Ployeur d\'acier',
'Ligatures fil de fer',
'Mètre ruban',
'Équerre de maçon'
],
competencesRequises: ['Ferrailleur qualifié', 'Lecture plans ferraillage'],
tempsUnitaire: 120, // 2h par 100kg façonnage + pose
conditionsMeteo: ['Pas de pluie pendant bétonnage'],
temperatureOptimale: { min: 5, max: 35 },
precautions: [
'Enrobage minimum 2,5cm',
'Recouvrement 40Ø minimum',
'Calage armatures avec cales béton',
'Vérification espacement barres',
'Nettoyage rouille si nécessaire'
]
},
controleQualite: {
testReception: [
'Vérification marquage acier',
'Contrôle diamètre pied à coulisse',
'Essai pliage manuel',
'Contrôle rectitude',
'État de surface (rouille)'
],
frequenceControle: '10% des barres par livraison',
critereAcceptation: [
'Marquage conforme norme',
'Diamètre ±0,5mm',
'Pas de rouille adhérente',
'Rectitude <5mm/m',
'Nervures conformes'
],
defautsFrequents: [
'Corrosion superficielle',
'Défauts de nervurage',
'Variations de diamètre',
'Courbure excessive'
]
},
durabilite: {
dureeVieEstimee: 50,
maintenanceRequise: false,
signesdUsure: [
'Corrosion si enrobage insuffisant',
'Fissuration béton par gonflement rouille'
],
remplacement: [
'Reprise béton si corrosion avancée',
'Renforcement structure si nécessaire'
]
}
},
// =================== BÉTON - CIMENT ===================
{
id: 'ciment-portland-cem1-525',
nom: 'Ciment Portland CEM I 52.5 N',
categorie: 'GROS_OEUVRE',
sousCategorie: 'Béton - Liants',
dimensions: {
longueur: 0,
largeur: 0,
hauteur: 0,
tolerance: 0
},
proprietes: {
densite: 3150, // kg/m³ ciment pur
resistanceCompression: 52.5, // MPa à 28j
resistanceTraction: 0,
resistanceFlexion: 0,
moduleElasticite: 0,
coefficientDilatation: 0.00001,
absorptionEau: 0,
porosite: 0,
conductiviteThermique: 1.4,
resistanceGel: true,
resistanceIntemperies: 'EXCELLENT'
},
climatique: {
temperatureMin: 5,
temperatureMax: 50,
humiditeMax: 85,
resistanceUV: 'EXCELLENT',
resistancePluie: 'EXCELLENT',
resistanceVentFort: true,
adaptationSaison: [
{
saison: 'PLUIES',
recommandations: [
'Stockage impérativement au sec',
'Palettes surélevées obligatoires',
'Bâchage étanche renforcé',
'Rotation stock (premier entré = premier sorti)',
'Contrôle prise avant usage si humidité'
]
},
{
saison: 'SECHE',
recommandations: [
'Protection chaleur excessive >40°C',
'Humidification granulats et eau',
'Coulage tôt le matin ou tard le soir',
'Cure humide prolongée 7 jours minimum'
]
}
]
},
normes: {
norme: 'NF EN 197-1',
classification: 'CEM I 52.5 N',
certificationRequise: true,
organismeControle: ['AFNOR', 'CERIB'],
testsObligatoires: [
'Résistance compression 2j, 7j, 28j',
'Temps de prise début/fin',
'Expansion Le Chatelier',
'Finesse Blaine',
'Composition chimique'
],
marquageCE: true,
conformiteECOWAS: true
},
quantification: {
uniteBase: 'kg',
facteurPerte: 3,
facteurSurapprovisionnement: 10,
modeFourniture: 'SACS',
conditionnement: {
quantiteParUnite: 50, // sac de 50kg
poidsUnitaire: 50,
dimensionsEmballage: {
longueur: 600,
largeur: 400,
hauteur: 120,
tolerance: 0
}
},
calculAutomatique: {
formule: 'volume_beton_m3 * dosage_ciment_kg_m3',
parametres: ['volume_beton_m3', 'classe_resistance', 'type_ouvrage']
}
},
marques: [
{
nom: 'CIMTOGO',
origine: 'Togo',
certifie: true,
prix: [
{ devise: 'XOF', montant: 4200, unite: 'sac_50kg' },
{ devise: 'XOF', montant: 84, unite: 'kg' }
]
},
{
nom: 'CIMENTS du Sahel',
origine: 'Burkina Faso',
certifie: true,
prix: [
{ devise: 'XOF', montant: 4000, unite: 'sac_50kg' },
{ devise: 'XOF', montant: 80, unite: 'kg' }
]
}
],
fournisseurs: [
{
nom: 'Distribution BTP Sahel',
pays: 'Mali',
ville: 'Bamako',
delaiLivraison: 2,
quantiteMinimale: 1000,
conditions: ['Livraison camion souffleur', 'Stockage silo si >5T']
}
],
miseEnOeuvre: {
outillageNecessaire: [
'Bétonnière ou centrale béton',
'Pelle, seau doseur',
'Vibreur béton',
'Taloche, règle',
'Pulvérisateur cure',
'Bâches protection'
],
competencesRequises: ['Maçon béton armé', 'Dosage béton'],
tempsUnitaire: 30, // 30min par m³ fabrication + coulage
conditionsMeteo: ['Température 5-35°C', 'Pas de gel', 'Pas pluie battante'],
temperatureOptimale: { min: 15, max: 25 },
precautions: [
'Dosage précis selon classe résistance',
'Malaxage minimum 2 minutes',
'Coulage dans les 1h30',
'Vibration complète sans ségrégation',
'Cure humide 7j minimum climat tropical'
]
},
controleQualite: {
testReception: [
'Vérification date fabrication <3 mois',
'Contrôle emballage (pas de trous)',
'Test prise main (pas de grumeaux durs)',
'Couleur gris homogène',
'Marquage conforme sac'
],
frequenceControle: '1 sac par palette',
critereAcceptation: [
'Date <90j',
'Pas de prise en sac',
'Pas de contamination',
'Marquage CE visible',
'Finesse tactile correcte'
],
defautsFrequents: [
'Prise prématurée (humidité)',
'Grumeaux durs',
'Contamination plâtre',
'Sacs percés'
]
},
durabilite: {
dureeVieEstimee: 100,
maintenanceRequise: false,
signesdUsure: [
'Carbonatation surface',
'Microfissuration retrait',
'Décoloration'
],
remplacement: [
'Réparation béton si dégradation',
'Protection surface si nécessaire'
]
}
}
// [La base sera étendue avec TOUS les matériaux : sables, graviers, carrelages,
// peintures, isolants, menuiseries, plomberie, électricité, etc.]
];
// ================== CALCULS AUTOMATIQUES AVANCÉS ==================
export class CalculateurBTPAfrique {
/**
* Calcul ultra-précis quantité briques pour mur
*/
static calculerBriquesMur(params: {
longueur: number; // m
hauteur: number; // m
epaisseur: number; // cm (10, 15, 20)
ouvertures?: { largeur: number; hauteur: number }[]; // portes/fenêtres
typeAppareillage: 'DROIT' | 'QUINCONCE' | 'FLAMAND';
jointHorizontal: number; // mm (généralement 10-12)
jointVertical: number; // mm (généralement 10-12)
}) {
const { longueur, hauteur, epaisseur, ouvertures = [],
typeAppareillage, jointHorizontal, jointVertical } = params;
// Dimensions brique standard (peut être paramétrable)
const brique = MATERIAUX_BTP_DATABASE.find(m => m.id === 'brique-rouge-15x10x5')!;
const largeurBrique = brique.dimensions.longueur; // 150mm
const hauteurBrique = brique.dimensions.hauteur; // 50mm
// Surface nette mur
let surfaceMur = longueur * hauteur;
// Déduction ouvertures
for (const ouverture of ouvertures) {
surfaceMur -= ouverture.largeur * ouverture.hauteur;
}
// Nombre de briques par m²
const largeurAvecJoint = largeurBrique + jointVertical;
const hauteurAvecJoint = hauteurBrique + jointHorizontal;
const briquesParM2 = (1000 / largeurAvecJoint) * (1000 / hauteurAvecJoint);
// Nombre briques selon appareillage
let coefficientAppareillage = 1;
switch (typeAppareillage) {
case 'QUINCONCE':
coefficientAppareillage = 1.02; // légère surconsommation
break;
case 'FLAMAND':
coefficientAppareillage = 1.15; // appareillage décoratif
break;
}
// Épaisseur mur (nombre de briques en épaisseur)
const nombreCouchesEpaisseur = Math.ceil(epaisseur * 10 / brique.dimensions.largeur);
const nombreBriques = Math.ceil(
surfaceMur * briquesParM2 * coefficientAppareillage * nombreCouchesEpaisseur
);
// Calcul mortier
const volumeMortier = this.calculerMortierMaconnerie({
nombreBriques,
jointHorizontal,
jointVertical,
surfaceMur,
epaisseurMur: epaisseur
});
return {
nombreBriques,
briquesParM2: Math.round(briquesParM2),
surfaceNette: surfaceMur,
coefficientAppareillage,
mortier: volumeMortier,
details: {
largeurAvecJoint,
hauteurAvecJoint,
nombreCouchesEpaisseur
}
};
}
/**
* Calcul volume mortier pour maçonnerie
*/
static calculerMortierMaconnerie(params: {
nombreBriques: number;
jointHorizontal: number; // mm
jointVertical: number; // mm
surfaceMur: number; // m²
epaisseurMur: number; // cm
}) {
const { nombreBriques, jointHorizontal, jointVertical, surfaceMur, epaisseurMur } = params;
// Volume joints approximatif = 15% du volume briques
const volumeBriques = nombreBriques * 0.15 * 0.10 * 0.05; // m³
const volumeMortier = volumeBriques * 0.25; // 25% du volume briques
// Dosage mortier standard maçonnerie : 350kg ciment/m³
const cimentKg = volumeMortier * 350;
const sableM3 = volumeMortier * 0.8; // 800L sable par m³ mortier
const eauLitres = volumeMortier * 175; // 175L eau par m³
return {
volumeTotal: volumeMortier,
dosage: {
ciment: Math.ceil(cimentKg),
sable: Math.ceil(sableM3 * 1000), // en litres
eau: Math.ceil(eauLitres)
},
nombreSacsCiment50kg: Math.ceil(cimentKg / 50)
};
}
/**
* Calcul béton armé dalle - ULTRA DÉTAILLÉ
*/
static calculerBetonArme(params: {
longueur: number; // m
largeur: number; // m
epaisseur: number; // cm
typeOuvrage: 'DALLE' | 'POUTRE' | 'POTEAU' | 'VOILE';
classeBeton: 'C20/25' | 'C25/30' | 'C30/37' | 'C35/45';
classeExposition: 'XC1' | 'XC3' | 'XC4' | 'XS1' | 'XS3'; // selon EN 206
acierType: 'FeE400' | 'FeE500';
enrobageRequis?: number; // cm
}) {
const { longueur, largeur, epaisseur, typeOuvrage, classeBeton,
classeExposition, acierType, enrobageRequis } = params;
// Volume béton
const volumeBeton = longueur * largeur * (epaisseur / 100);
// Dosage béton selon classe
const dosagesBeton = {
'C20/25': { ciment: 300, eau: 165, graviers: 1100, sable: 650 },
'C25/30': { ciment: 350, eau: 175, graviers: 1050, sable: 600 },
'C30/37': { ciment: 385, eau: 180, graviers: 1000, sable: 580 },
'C35/45': { ciment: 420, eau: 185, graviers: 950, sable: 550 }
};
const dosage = dosagesBeton[classeBeton];
// Enrobage selon classe exposition (climat tropical africain)
const enrobages = {
'XC1': 2.0, // intérieur sec
'XC3': 2.5, // intérieur humide
'XC4': 3.0, // extérieur avec gel
'XS1': 3.5, // air marin
'XS3': 4.5 // marnage
};
const enrobage = enrobageRequis || enrobages[classeExposition];
// Calcul armatures selon type ouvrage
let ratioArmature = 80; // kg/m³ par défaut
switch (typeOuvrage) {
case 'DALLE':
ratioArmature = epaisseur < 15 ? 60 : 80;
break;
case 'POUTRE':
ratioArmature = 120;
break;
case 'POTEAU':
ratioArmature = 150;
break;
case 'VOILE':
ratioArmature = 100;
break;
}
const poidsAcierTotal = volumeBeton * ratioArmature;
// Répartition par diamètres (approximation standard)
const repartitionAcier = {
6: poidsAcierTotal * 0.1, // 10% en Ø6
8: poidsAcierTotal * 0.15, // 15% en Ø8
10: poidsAcierTotal * 0.25, // 25% en Ø10
12: poidsAcierTotal * 0.30, // 30% en Ø12
14: poidsAcierTotal * 0.15, // 15% en Ø14
16: poidsAcierTotal * 0.05 // 5% en Ø16
};
return {
volumeBeton,
materiaux: {
ciment: {
quantite: Math.ceil(volumeBeton * dosage.ciment),
sacs50kg: Math.ceil(volumeBeton * dosage.ciment / 50)
},
sable: {
quantite: Math.ceil(volumeBeton * dosage.sable), // kg
volumeM3: Math.ceil(volumeBeton * dosage.sable / 1600) // densité sable
},
graviers: {
quantite: Math.ceil(volumeBeton * dosage.graviers), // kg
volumeM3: Math.ceil(volumeBeton * dosage.graviers / 1500) // densité graviers
},
eau: Math.ceil(volumeBeton * dosage.eau), // litres
acier: {
total: Math.ceil(poidsAcierTotal),
repartition: repartitionAcier
}
},
specifications: {
classeBeton,
classeExposition,
enrobage,
ratioArmature
},
controles: {
slumpTest: '8-12cm',
resistanceRequise: classeBeton,
ageDecoffrage: epaisseur < 20 ? '7j' : '14j'
}
};
}
}
// [SUITE AVEC TOUS LES AUTRES MATÉRIAUX ET CALCULS...]

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;