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;
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user