@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
'Nom du lot
String nomLot
'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 nomSourceDonnee
'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'une opération non IT
class ind_ImpactOperationNonIT {
' Nom de l'opération non IT présente dans les données d'entrée en_OperationNonIT
String nomItemNonIT
'le type présent dans les données d'entrée (en_OperationNonIT.type)
String typeItem
'Quantité de l'item non IT associé à l'indicateur
Integer quantite
'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 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
String modeUtilsation
Double tauxUtilisation
}

'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 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_ImpactOperationNonIT
ind_Impact <|-- "hérite de" ind_ImpactEquipementPhysique
ind_Impact <|-- "hérite de" ind_ImpactEquipementVirtuel
ind_Impact <|-- "hérite de" ind_ImpactMessagerie


@enduml
