/** * 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 = { 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; }); }