Initial commit
This commit is contained in:
498
data/chantier-templates.ts
Normal file
498
data/chantier-templates.ts
Normal 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
920
data/materiaux-database.ts
Normal 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
695
data/templates-afrique.ts
Normal 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;
|
||||
Reference in New Issue
Block a user