Files
btpxpress-frontend/types/chantier-templates.ts
2025-10-13 05:29:32 +02:00

303 lines
10 KiB
TypeScript

/**
* 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<TypeChantier, string> = {
// 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<TypeChantier, number> = {
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
};