/** * Types et templates pour la gestion automatique des phases de chantier BTP * Système de pré-configuration des phases selon le type de chantier */ // Types de chantiers BTP avec classification métier complète export type TypeChantier = // Bâtiment résidentiel | 'MAISON_INDIVIDUELLE' | 'IMMEUBLE_COLLECTIF' | 'RENOVATION_RESIDENTIELLE' | 'EXTENSION_RESIDENTIELLE' // Bâtiment tertiaire | 'BUREAU_COMMERCIAL' | 'CENTRE_COMMERCIAL' | 'ETABLISSEMENT_SCOLAIRE' | 'ETABLISSEMENT_SANTE' | 'ETABLISSEMENT_SPORTIF' | 'ENTREPOT_LOGISTIQUE' // Infrastructure | 'VOIRIE_URBAINE' | 'AUTOROUTE' | 'PONT_VIADUC' | 'TUNNEL' | 'PARKING' | 'AIRE_AMENAGEE' // Industriel | 'USINE_INDUSTRIELLE' | 'CENTRALE_ENERGIE' | 'STATION_EPURATION' | 'INSTALLATION_CHIMIQUE' // Spécialisé | 'PISCINE' | 'COURT_TENNIS' | 'TERRAIN_SPORT' | 'MONUMENT_HISTORIQUE' | 'OUVRAGE_ART'; // Interface pour une phase template export interface PhaseTemplate { id: string; nom: string; description: string; ordreExecution: number; dureePrevueJours: number; critique: boolean; prerequis?: string[]; sousPhases?: SousPhaseTemplate[]; materielsTypes?: string[]; competencesRequises?: string[]; controleQualite?: string[]; } // Interface pour une sous-phase template export interface SousPhaseTemplate { id: string; nom: string; description: string; ordreExecution: number; dureePrevueJours: number; materielsTypes?: string[]; competencesRequises?: string[]; } // Interface pour un template de chantier complet export interface ChantierTemplate { typeChantier: TypeChantier; nom: string; description: string; dureeMoyenneJours: number; phases: PhaseTemplate[]; specificites?: string[]; reglementations?: string[]; } // Libellés pour les types de chantiers export const TYPE_CHANTIER_LABELS: Record = { // Résidentiel MAISON_INDIVIDUELLE: 'Maison individuelle', IMMEUBLE_COLLECTIF: 'Immeuble collectif', RENOVATION_RESIDENTIELLE: 'Rénovation résidentielle', EXTENSION_RESIDENTIELLE: 'Extension résidentielle', // Tertiaire BUREAU_COMMERCIAL: 'Bureau / Commerce', CENTRE_COMMERCIAL: 'Centre commercial', ETABLISSEMENT_SCOLAIRE: 'Établissement scolaire', ETABLISSEMENT_SANTE: 'Établissement de santé', ETABLISSEMENT_SPORTIF: 'Établissement sportif', ENTREPOT_LOGISTIQUE: 'Entrepôt / Logistique', // Infrastructure VOIRIE_URBAINE: 'Voirie urbaine', AUTOROUTE: 'Autoroute', PONT_VIADUC: 'Pont / Viaduc', TUNNEL: 'Tunnel', PARKING: 'Parking', AIRE_AMENAGEE: 'Aire aménagée', // Industriel USINE_INDUSTRIELLE: 'Usine industrielle', CENTRALE_ENERGIE: 'Centrale énergétique', STATION_EPURATION: 'Station d\'épuration', INSTALLATION_CHIMIQUE: 'Installation chimique', // Spécialisé PISCINE: 'Piscine', COURT_TENNIS: 'Court de tennis', TERRAIN_SPORT: 'Terrain de sport', MONUMENT_HISTORIQUE: 'Monument historique', OUVRAGE_ART: 'Ouvrage d\'art' }; // Catégories de chantiers pour l'organisation export const CATEGORIES_CHANTIER = { RESIDENTIEL: { label: 'Résidentiel', types: ['MAISON_INDIVIDUELLE', 'IMMEUBLE_COLLECTIF', 'RENOVATION_RESIDENTIELLE', 'EXTENSION_RESIDENTIELLE'] as TypeChantier[] }, TERTIAIRE: { label: 'Tertiaire', types: ['BUREAU_COMMERCIAL', 'CENTRE_COMMERCIAL', 'ETABLISSEMENT_SCOLAIRE', 'ETABLISSEMENT_SANTE', 'ETABLISSEMENT_SPORTIF', 'ENTREPOT_LOGISTIQUE'] as TypeChantier[] }, INFRASTRUCTURE: { label: 'Infrastructure', types: ['VOIRIE_URBAINE', 'AUTOROUTE', 'PONT_VIADUC', 'TUNNEL', 'PARKING', 'AIRE_AMENAGEE'] as TypeChantier[] }, INDUSTRIEL: { label: 'Industriel', types: ['USINE_INDUSTRIELLE', 'CENTRALE_ENERGIE', 'STATION_EPURATION', 'INSTALLATION_CHIMIQUE'] as TypeChantier[] }, SPECIALISE: { label: 'Spécialisé', types: ['PISCINE', 'COURT_TENNIS', 'TERRAIN_SPORT', 'MONUMENT_HISTORIQUE', 'OUVRAGE_ART'] as TypeChantier[] } } as const; // Templates de phases communes à tous les types de chantiers export const PHASES_COMMUNES: PhaseTemplate[] = [ { id: 'etudes-preliminaires', nom: 'Études préliminaires et définition du projet', description: 'Analyse de faisabilité, études de sol, définition du programme', ordreExecution: 1, dureePrevueJours: 30, critique: true, sousPhases: [ { id: 'analyse-faisabilite', nom: 'Analyse de faisabilité', description: 'Étude technique, économique et réglementaire', ordreExecution: 1, dureePrevueJours: 10, competencesRequises: ['Bureau d\'études', 'Économiste'] }, { id: 'releves-topographiques', nom: 'Relevés topographiques', description: 'Levés de terrain et cartographie', ordreExecution: 2, dureePrevueJours: 5, materielsTypes: ['Matériel topographique'], competencesRequises: ['Géomètre'] }, { id: 'etudes-geotechniques', nom: 'Études géotechniques', description: 'Étude de sol et recommandations fondations', ordreExecution: 3, dureePrevueJours: 10, materielsTypes: ['Foreuse', 'Équipement laboratoire'], competencesRequises: ['Géotechnicien'] }, { id: 'analyse-environnementale', nom: 'Analyse environnementale', description: 'Impact environnemental et contraintes réglementaires', ordreExecution: 4, dureePrevueJours: 5, competencesRequises: ['Expert environnemental'] } ], competencesRequises: ['Maître d\'œuvre', 'Bureau d\'études'], controleQualite: ['Validation études géotechniques', 'Conformité réglementaire'] }, { id: 'conception-projet', nom: 'Conception du projet', description: 'Avant-projets, plans détaillés, demandes d\'autorisation', ordreExecution: 2, dureePrevueJours: 45, critique: true, prerequis: ['etudes-preliminaires'], sousPhases: [ { id: 'avant-projet-sommaire', nom: 'Avant-projet sommaire (APS)', description: 'Définition générale du projet', ordreExecution: 1, dureePrevueJours: 15, competencesRequises: ['Architecte', 'Bureau d\'études'] }, { id: 'avant-projet-definitif', nom: 'Avant-projet définitif (APD)', description: 'Finalisation conception et dimensionnement', ordreExecution: 2, dureePrevueJours: 20, competencesRequises: ['Architecte', 'Bureau d\'études', 'Économiste'] }, { id: 'plans-detailles', nom: 'Plans détaillés d\'exécution', description: 'Plans techniques et spécifications', ordreExecution: 3, dureePrevueJours: 10, competencesRequises: ['Dessinateur', 'Bureau d\'études'] } ], competencesRequises: ['Architecte', 'Bureau d\'études'], controleQualite: ['Validation architecturale', 'Conformité technique'] }, { id: 'preparation-chantier', nom: 'Préparation du chantier', description: 'Organisation du site, approvisionnements, coordination', ordreExecution: 3, dureePrevueJours: 20, critique: true, prerequis: ['conception-projet'], sousPhases: [ { id: 'organisation-site', nom: 'Organisation du site', description: 'Plan d\'installation de chantier (PIC)', ordreExecution: 1, dureePrevueJours: 5, competencesRequises: ['Conducteur de travaux'] }, { id: 'implantation-terrain', nom: 'Implantation sur le terrain', description: 'Piquetage et marquage', ordreExecution: 2, dureePrevueJours: 3, materielsTypes: ['Matériel topographique'], competencesRequises: ['Géomètre', 'Chef d\'équipe'] }, { id: 'installation-bases-vie', nom: 'Installation des bases vie', description: 'Espaces de travail, sanitaires, stockage', ordreExecution: 3, dureePrevueJours: 5, materielsTypes: ['Bungalows', 'Clôtures', 'Raccordements'], competencesRequises: ['Équipe installation'] }, { id: 'approvisionnement-logistique', nom: 'Approvisionnement et logistique', description: 'Commandes matériaux et planification livraisons', ordreExecution: 4, dureePrevueJours: 7, competencesRequises: ['Responsable logistique'] } ], competencesRequises: ['Conducteur de travaux', 'Chef de chantier'], controleQualite: ['Plan de sécurité validé', 'Autorisations administratives'] } ]; // Export des constantes utiles export const DUREE_MOYENNE_PAR_TYPE: Record = { MAISON_INDIVIDUELLE: 270, IMMEUBLE_COLLECTIF: 540, RENOVATION_RESIDENTIELLE: 180, EXTENSION_RESIDENTIELLE: 120, BUREAU_COMMERCIAL: 360, CENTRE_COMMERCIAL: 720, ETABLISSEMENT_SCOLAIRE: 600, ETABLISSEMENT_SANTE: 900, ETABLISSEMENT_SPORTIF: 480, ENTREPOT_LOGISTIQUE: 240, VOIRIE_URBAINE: 150, AUTOROUTE: 1080, PONT_VIADUC: 900, TUNNEL: 1440, PARKING: 120, AIRE_AMENAGEE: 90, USINE_INDUSTRIELLE: 720, CENTRALE_ENERGIE: 1800, STATION_EPURATION: 540, INSTALLATION_CHIMIQUE: 960, PISCINE: 90, COURT_TENNIS: 45, TERRAIN_SPORT: 60, MONUMENT_HISTORIQUE: 720, OUVRAGE_ART: 540 };