@startuml

'éléments communs à tous les indicateurs, ces attributs sont dans toutes les classes filles
abstract class ind_Impact {
'La date du lot permet d’agréger les données provenant de différentes sources et d'en faire un suivi temporel
LocalDate dateLot
'Date et Heure du calcul, même valeur pour tous les indicateurs créés avec le même lot d'objets d'entrées
LocalDateTime dateCalcul
'Version de l'application ayant réalisé le calcul
String versionCalcul
'Statut de l'indicateur : calculé, en erreur
String statutIndicateur
'Version du référentiel
String versionReferentiel
'Trace du calcul, résultat
String trace
'Nom de l'étape ACV associée à l'indicateur
String etapeACV
'Nom du critère associé à l'indicateur
String critere
String source
String referentielsSources
'Unite du critère
String unite
'Nom de l'organisation - Metadata
String nomOrganisation
'Nom de l'entité pouvant agir sur l'indicateur - Metadata
String nomEntite
}

'Indicateurs d'empreinte environnemtale d'un équipement physique
class ind_ImpactEquipementPhysique {
' Nom de l'équipement physique présent dans les données d'entrée en_EqP
String nomEquipement
'le type présent dans les données d'entrée (en_EqP.type)
String typeEquipement
'Quantité de l'équipement associé à l'indicateur, uniquement pour les équipements physiques
Integer quantite
'Statut de l'équipement physique correspondant à en_EqP.statut. 
String statutEquipementPhysique
'Impact unitaire, le champ est null en cas d'erreur lors du calcul de l'indicateur
Double impactUnitaire
Double consoElecMoyenne
}

'Indicateurs d'empreinte environnemtale d'un équipement virtuel
class ind_ImpactEquipementVirtuel {
' Nom de la VM
String nomVM
' Nom de l'équipement physique ou de la VM présent dans les données d'entrée en_EqP et en_EqV
String nomEquipement
'Metadata - le cluster n'est pas obligatoire et permet de regrouper plusieurs VM
String cluster
'Impact unitaire, le champ est null en cas d'erreur lors du calcul de l'indicateur
Double impactUnitaire
Double consoElecMoyenne
}

'Indicateurs d'empreinte environnemtale d'un applicatif
class ind_ImpactApplicatif {
'correspond à une application présente dans donnée d'entrée en_App
String nomApplication
String typeEnvironnement
String domaine
String sousDomaine
Double impactUnitaire
Double consoElecMoyenne
}


'Indicateur Impact Réseau
class ind_ImpactReseau {
' Nom de l'équipement physique ou de la VM
*String reference
Double impactUnitaire
}

'Indicateur d'impact pour la messagerie
'Le champ etapeACV n'est pas utilisé pour cet indicateur
class ind_ImpactMessagerie {
Double impactMensuel
'date au format MMYY
Date MoisAnnee
'Volume total des mails dans les boites mails des collaborateurs
Double volumeTotalMailEmis
'nombre total des mails émis par les collaborateurs
Double nombreMailEmis
}

ind_Impact <|-- "hérite de" ind_ImpactReseau
ind_Impact <|-- "hérite de" ind_ImpactApplicatif
ind_Impact <|-- "hérite de" ind_ImpactEquipementPhysique
ind_Impact <|-- "hérite de" ind_ImpactEquipementVirtuel
ind_Impact <|-- "hérite de" ind_ImpactMessagerie


@enduml
