timefold/gemini.puml
2025-09-21 10:22:59 +02:00

65 lines
1.1 KiB
Plaintext

@startuml
!define DARK_BLUE #264653
!define ORANGE #F4A261
!define YELLOW #E9C46A
!define LIGHT_BLUE #2A9D8F
skinparam class {
BackgroundColor DARK_BLUE
ArrowColor DARK_BLUE
BorderColor DARK_BLUE
FontColor WHITE
}
skinparam arrow {
Color DARK_BLUE
}
' Définition des classes
class Employee {
+ name : String
+ skills : Set<Skill>
}
class BloodDrive {
+ id : UUID
+ location : String
+ date : LocalDate
--
+ <<transient>> shifts : List<Shift>
}
class Shift {
+ id : UUID
+ start : LocalDateTime
+ end : LocalDateTime
+ requiredSkill : Skill
}
enum Skill {
+ NURSE
+ DOCTOR
+ DRIVER
+ RECEPTIONIST
}
' Définition des relations
BloodDrive "1" --> "1..*" Shift : <<compose>>
Shift "1" --> "1" Employee : <<assigned to>>
Shift "1" --> "1" Skill : <<requires>>
Employee "1" -- "0..*" Shift : <<is assigned to>>
Employee "1" -- "0..*" Skill : <<has>>
' Notes explicatives
note top of BloodDrive
Nouvelle entité pour regrouper
tous les shifts d'une même collecte.
end note
note top of Shift
Chaque rôle (infirmier, médecin)
est un shift distinct avec ses propres horaires.
end note
@enduml