Avant la modification des classes

This commit is contained in:
Christophe 2025-09-20 21:27:03 +02:00
parent 69ef2f94f7
commit 793393b294
3 changed files with 83 additions and 166 deletions

View File

@ -1,28 +1,28 @@
{
"employees": [
{
"name": "Marie Dupont",
"name": "Aurélie Antoine",
"skills": ["INFIRMIER", "PRELEVEMENT"],
"unavailableDates": ["2024-12-25", "2024-12-26"],
"undesiredDates": ["2024-12-24", "2024-12-31"],
"desiredDates": ["2024-12-20", "2024-12-21"]
},
{
"name": "Pierre Martin",
"name": "Cathy Coucou",
"skills": ["MEDECIN", "SUPERVISION"],
"unavailableDates": ["2024-12-30"],
"undesiredDates": ["2024-12-29"],
"desiredDates": ["2024-12-22", "2024-12-23"]
},
{
"name": "Sophie Bernard",
"name": "Sophie Bernard-Dupont",
"skills": ["INFIRMIER", "ACCUEIL"],
"unavailableDates": [],
"undesiredDates": ["2024-12-25"],
"desiredDates": ["2024-12-24", "2024-12-28"]
},
{
"name": "Jean Leroy",
"name": "Jean Leroy lili",
"skills": ["PRELEVEMENT", "TRANSPORT"],
"unavailableDates": ["2024-12-24", "2024-12-25"],
"undesiredDates": [],

79
diagram.puml Normal file
View File

@ -0,0 +1,79 @@
@startuml EmployeeSchedulingModel
' Configuration pour un rendu plus lisible
skinparam classAttributeIconSize 0
skinparam defaultFontName Arial
left to right direction
' Définition des classes
class Collecte {
- id: String
- start: LocalDateTime
- end: LocalDateTime
- location: String
+ getShifts(): List<Shift>
}
class Shift {
- id: String
- start: LocalDateTime
- end: LocalDateTime
- location: String
- requiredSkill: String
- employee: Employee
+ isOverlappingWithDate(date: LocalDate): boolean
}
class Employee {
- name: String
- skills: Set<String>
- unavailableDates: Set<LocalDate>
- undesiredDates: Set<LocalDate>
- desiredDates: Set<LocalDate>
+ hasSkill(skill: String): boolean
}
class EmployeeSchedule {
- employees: List<Employee>
- collectes: List<Collecte>
- score: HardSoftBigDecimalScore
- solverStatus: SolverStatus
+ getUnassignedShifts(): List<Shift>
}
' Relations entre les classes
Collecte "1" *-- "0..*" Shift : contient >
Shift "1" --o "0..1" Employee : assigné à >
EmployeeSchedule "1" *-- "0..*" Employee : gère >
EmployeeSchedule "1" *-- "0..*" Collecte : organise >
' Légende pour les cardinalités
legend right
| **Cardinalités** |
|------------------|
| "1" = Un et un seul |
| "0..*" = Zéro ou plusieurs |
| "0..1" = Zéro ou un |
endlegend
' Notes pour expliquer les contraintes
note top of Shift
Un Shift représente un besoin
pour une compétence spécifique
dans une Collecte.
end note
note right of Employee
Un Employee peut être assigné
à plusieurs Shifts s'il a
les compétences requises
et est disponible.
end note
note bottom of Collecte
Une Collecte nécessite plusieurs Shifts,
chacun avec une compétence spécifique.
Exemple : 2 INFIRMIER, 1 MEDECIN, etc.
end note
@enduml

162
vi
View File

@ -1,162 +0,0 @@
{
"employees": [
{
"name": "Marie Dupont",
"skills": ["INFIRMIER", "PRELEVEMENT"],
"unavailableDates": ["2024-12-25", "2024-12-26"],
"undesiredDates": ["2024-12-24", "2024-12-31"],
"desiredDates": ["2024-12-20", "2024-12-21"]
},
{
"name": "Pierre Martin",
"skills": ["MEDECIN", "SUPERVISION"],
"unavailableDates": ["2024-12-30"],
"undesiredDates": ["2024-12-29"],
"desiredDates": ["2024-12-22", "2024-12-23"]
},
{
"name": "Sophie Bernard",
"skills": ["INFIRMIER", "ACCUEIL"],
"unavailableDates": [],
"undesiredDates": ["2024-12-25"],
"desiredDates": ["2024-12-24", "2024-12-28"]
},
{
"name": "Jean Leroy",
"skills": ["PRELEVEMENT", "TRANSPORT"],
"unavailableDates": ["2024-12-24", "2024-12-25"],
"undesiredDates": [],
"desiredDates": ["2024-12-27", "2024-12-30"]
},
{
"name": "Anne Moreau",
"skills": ["MEDECIN", "INFIRMIER"],
"unavailableDates": ["2024-12-26"],
"undesiredDates": ["2024-12-31"],
"desiredDates": ["2024-12-21", "2024-12-29"]
},
{
"name": "Luc Petit",
"skills": ["ACCUEIL", "TRANSPORT"],
"unavailableDates": [],
"undesiredDates": ["2024-12-20"],
"desiredDates": ["2024-12-25", "2024-12-26"]
}
],
"shifts": [
{
"id": "shift_001",
"start": "2024-12-20T08:00:00",
"end": "2024-12-20T16:00:00",
"location": "Centre de collecte - Toulouse",
"requiredSkill": "INFIRMIER",
"employee": null
},
{
"id": "shift_002",
"start": "2024-12-20T14:00:00",
"end": "2024-12-20T22:00:00",
"location": "Centre de collecte - Toulouse",
"requiredSkill": "PRELEVEMENT",
"employee": null
},
{
"id": "shift_003",
"start": "2024-12-21T06:00:00",
"end": "2024-12-21T14:00:00",
"location": "Hôpital Purpan",
"requiredSkill": "MEDECIN",
"employee": null
},
{
"id": "shift_004",
"start": "2024-12-21T08:00:00",
"end": "2024-12-21T12:00:00",
"location": "Centre de collecte - Colomiers",
"requiredSkill": "ACCUEIL",
"employee": null
},
{
"id": "shift_005",
"start": "2024-12-22T09:00:00",
"end": "2024-12-22T17:00:00",
"location": "Centre de collecte - Blagnac",
"requiredSkill": "INFIRMIER",
"employee": null
},
{
"id": "shift_006",
"start": "2024-12-22T13:00:00",
"end": "2024-12-22T18:00:00",
"location": "Transport mobile",
"requiredSkill": "TRANSPORT",
"employee": null
},
{
"id": "shift_007",
"start": "2024-12-23T07:00:00",
"end": "2024-12-23T15:00:00",
"location": "Hôpital Rangueil",
"requiredSkill": "MEDECIN",
"employee": null
},
{
"id": "shift_008",
"start": "2024-12-23T10:00:00",
"end": "2024-12-23T16:00:00",
"location": "Centre de collecte - Toulouse",
"requiredSkill": "PRELEVEMENT",
"employee": null
},
{
"id": "shift_009",
"start": "2024-12-24T08:00:00",
"end": "2024-12-24T14:00:00",
"location": "Centre de collecte - Colomiers",
"requiredSkill": "INFIRMIER",
"employee": null
},
{
"id": "shift_010",
"start": "2024-12-27T09:00:00",
"end": "2024-12-27T17:00:00",
"location": "Centre de collecte - Toulouse",
"requiredSkill": "SUPERVISION",
"employee": null
},
{
"id": "shift_011",
"start": "2024-12-28T08:00:00",
"end": "2024-12-28T16:00:00",
"location": "Centre de collecte - Blagnac",
"requiredSkill": "ACCUEIL",
"employee": null
},
{
"id": "shift_012",
"start": "2024-12-29T06:00:00",
"end": "2024-12-29T14:00:00",
"location": "Hôpital Purpan",
"requiredSkill": "MEDECIN",
"employee": null
},
{
"id": "shift_013",
"start": "2024-12-30T10:00:00",
"end": "2024-12-30T18:00:00",
"location": "Transport mobile",
"requiredSkill": "TRANSPORT",
"employee": null
},
{
"id": "shift_014",
"start": "2024-12-31T08:00:00",
"end": "2024-12-31T16:00:00",
"location": "Centre de collecte - Toulouse",
"requiredSkill": "INFIRMIER",
"employee": null
}
],
"score": null,
"solverStatus": null
}