Avant la modification des classes
This commit is contained in:
parent
69ef2f94f7
commit
793393b294
@ -1,28 +1,28 @@
|
|||||||
{
|
{
|
||||||
"employees": [
|
"employees": [
|
||||||
{
|
{
|
||||||
"name": "Marie Dupont",
|
"name": "Aurélie Antoine",
|
||||||
"skills": ["INFIRMIER", "PRELEVEMENT"],
|
"skills": ["INFIRMIER", "PRELEVEMENT"],
|
||||||
"unavailableDates": ["2024-12-25", "2024-12-26"],
|
"unavailableDates": ["2024-12-25", "2024-12-26"],
|
||||||
"undesiredDates": ["2024-12-24", "2024-12-31"],
|
"undesiredDates": ["2024-12-24", "2024-12-31"],
|
||||||
"desiredDates": ["2024-12-20", "2024-12-21"]
|
"desiredDates": ["2024-12-20", "2024-12-21"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Pierre Martin",
|
"name": "Cathy Coucou",
|
||||||
"skills": ["MEDECIN", "SUPERVISION"],
|
"skills": ["MEDECIN", "SUPERVISION"],
|
||||||
"unavailableDates": ["2024-12-30"],
|
"unavailableDates": ["2024-12-30"],
|
||||||
"undesiredDates": ["2024-12-29"],
|
"undesiredDates": ["2024-12-29"],
|
||||||
"desiredDates": ["2024-12-22", "2024-12-23"]
|
"desiredDates": ["2024-12-22", "2024-12-23"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Sophie Bernard",
|
"name": "Sophie Bernard-Dupont",
|
||||||
"skills": ["INFIRMIER", "ACCUEIL"],
|
"skills": ["INFIRMIER", "ACCUEIL"],
|
||||||
"unavailableDates": [],
|
"unavailableDates": [],
|
||||||
"undesiredDates": ["2024-12-25"],
|
"undesiredDates": ["2024-12-25"],
|
||||||
"desiredDates": ["2024-12-24", "2024-12-28"]
|
"desiredDates": ["2024-12-24", "2024-12-28"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Jean Leroy",
|
"name": "Jean Leroy lili",
|
||||||
"skills": ["PRELEVEMENT", "TRANSPORT"],
|
"skills": ["PRELEVEMENT", "TRANSPORT"],
|
||||||
"unavailableDates": ["2024-12-24", "2024-12-25"],
|
"unavailableDates": ["2024-12-24", "2024-12-25"],
|
||||||
"undesiredDates": [],
|
"undesiredDates": [],
|
||||||
|
|||||||
79
diagram.puml
Normal file
79
diagram.puml
Normal 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
162
vi
@ -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
|
|
||||||
}
|
|
||||||
Loading…
x
Reference in New Issue
Block a user