Löst ein festes Problem bei der Schichtplanung aus dem gegebenen SolveShiftSchedulingRequest
, indem die Mitarbeitenden Schichten so zugewiesen werden, dass die Planungseinstellungen maximiert und Verstöße gegen Planungseinschränkungen werden minimiert.
HTTP-Anfrage
POST https://optimization.googleapis.com/v1/scheduling:solveShiftScheduling
Die URL verwendet die Syntax der gRPC-Transcodierung.
Anfragetext
Der Anfragetext enthält Daten mit folgender Struktur:
JSON-Darstellung |
---|
{ "requestId": string, "solveParameters": { object ( |
Felder | |
---|---|
requestId |
Problem- oder Anfrage-ID. |
solveParameters |
Parameter, mit denen eine einzelne Lösung des Problems gesteuert wird. |
employees[] |
Alle verfügbaren Mitarbeiter müssen eingeplant werden. |
shifts[] |
Alle Schichten, um den Zeitplan zu bilden. |
coverageRequirements[] |
Abdeckungsanforderungen für den gesamten Planungshorizont Diese geben die Anzahl der Mitarbeitenden an, die entweder während eines bestimmten Zeitfensters oder einer Liste von Schicht-IDs jede Rolle ausüben oder über eine Fähigkeit verfügen müssen. Alle Abdeckungsanforderungen müssen entweder mit Zeitfenstern oder mit einer Liste von Schicht-IDs angegeben werden (aber nicht mit beidem). Zeitfenster für die Abdeckungsanforderungen (falls angegeben) dürfen sich für jeden Standort nicht überschneiden. Die standardmäßige Prioritätsstufe für jede dieser Einschränkungen ist |
roleIds[] |
Liste aller möglichen Rollen in der Belegschaft. Jedem Mitarbeiter muss mindestens eine Rolle zugewiesen werden, der er für eine Schicht zugewiesen werden kann. Eine Rolle bezieht sich auf einen bestimmten Arbeitsauftrag während einer Schicht (z. B. registrierte Krankenschwester, Chefkoch, Kellner usw.). Wenn ein Mitarbeiter einer Schicht zugewiesen wird, wird ihm auch eine bestimmte Rolle zugewiesen. |
skillIds[] |
Liste aller möglichen Fähigkeiten in der gesamten Belegschaft. Eine Kompetenz bezieht sich auf alle zusätzlichen Qualifikationen, die Mitarbeitende möglicherweise haben und die nicht mit einer bestimmten zuweisbaren Tätigkeit in Zusammenhang stehen (z. B. Zertifizierungen, gesprochene Sprachen usw.). Diese Liste kann leer sein. Wenn ein Mitarbeiter einer Schicht zugewiesen wird, muss er alle für diese Schicht erforderlichen Fähigkeiten erfüllen. |
locationIds[] |
Liste aller möglichen Orte für die Schichten im Fahrplan. Diese Liste kann leer sein. Die Angabe verschiedener Standorte kann nützlich sein, wenn beispielsweise ein Pflegepersonal mehrere Krankenschwestern mit verschiedenen Einheiten eines Krankenhauses einplanen möchte oder ein Hotelmanager, der Mitarbeiter für mehrere Hotels einplanen möchte. |
budgetRequirements[] |
Budgetspezifikation für das Planungsproblem. Die standardmäßige Prioritätsstufe für jede dieser Anforderungen ist |
assignmentsHint[] |
Schichtzuweisungen, die als vorläufige Lösung (auch als Lösungshinweis bezeichnet) für das Planungsproblem verwendet werden sollen. Zuweisungshinweise werden ignoriert, wenn die Zuweisung einer nicht zuweisbaren Schicht- oder Planungsanfrage widersprechen. |
Antworttext
Antwort für die Mitarbeiterplanungs-API Bei jeder Antwort ist shiftAssignments
leer, wenn die zurückgegebene solutionStatus
NOT_SOLVED_DEADLINE_EXCEEDED
oder INFEASIBLE
ist. Wenn die zurückgegebene solutionStatus
OPTIMAL
oder FEASIBLE
ist, wird in shiftAssignments
eine gültige Schichtzuweisung zurückgegeben. Für eine gültige Schichtzuweisung gelten die folgenden Properties:
- Jede Mitarbeiter-ID ist in der Gruppe von Mitarbeitern enthalten, die in der Anfrage angegeben wurde.
- Jede dem Mitarbeiter zugewiesene Rollen-ID ist in den Rollen-IDs für den jeweiligen Mitarbeiter enthalten.
- Jede Schicht-ID ist in dem in der Anfrage angegebenen Schichtsatz enthalten.
- Jede Schicht-ID gehört nicht zu den nicht zuweisbaren Schicht-IDs für den jeweiligen Mitarbeiter.
- Einem Mitarbeiter wird nie zwei Schichten zugewiesen, die sich überschneiden.
- Beim angegebenen Zeitplan wird keine der Einschränkungen oder Anfragen mit der Prioritätsstufe
PRIORITY_MANDATORY
verletzt.
Bei Erfolg enthält der Antworttext Daten mit der folgenden Struktur:
JSON-Darstellung |
---|
{ "requestId": string, "solutionStatus": enum ( |
Felder | |
---|---|
requestId |
Die ID der Anfrage, der diese Antwort zugeordnet ist. |
solutionStatus |
Status der zurückgegebenen Lösung. Wenn die Lösung nicht FEASIBLE oder OPTIMAL ist, können andere Felder in diesem Proto leer sein. Wenn der Status NOT_SOLVED_DEADLINE_EXCEEDED lautet, wurde das Zeitlimit erreicht, ohne dass eine praktikable Lösung gefunden oder festgestellt werden konnte, ob eine praktikable Lösung existiert. Anfragen sind möglicherweise nicht durchführbar, wenn die Einschränkungen der Prioritätsebene MANDATORY nicht alle erfüllt werden können. |
shiftAssignments[] |
Liste aller Zuweisungen. Jede |
statusMessage |
Wenn |
SolveParameters
Parameter, die eine einzelne Lösung des Schichtplanungsproblems steuern.
JSON-Darstellung |
---|
{ "timeLimit": string } |
Felder | |
---|---|
timeLimit |
Maximale Zeit, die der Rechner mit der Aufgabe verbringen sollte. Wenn nichts festgelegt ist, wird der Standardwert 1 Minute verwendet. Dieser Wert ist kein fester Grenzwert und berücksichtigt nicht den Kommunikationsaufwand. Die erwartete Latenz zur Behebung des Problems kann diesen Wert geringfügig überschreiten. Die Dauer in Sekunden mit bis zu neun Nachkommastellen und am Ende mit " |
Mitarbeiter
Ein Mitarbeiter aus der Belegschaft, für den ein Termin vereinbart wird.
JSON-Darstellung |
---|
{ "id": string, "roleIds": [ string ], "skillIds": [ string ], "shiftPreferences": [ { object ( |
Felder | |
---|---|
id |
Eindeutige ID, die diesem Mitarbeiter zugewiesen ist. |
roleIds[] |
Rollen-IDs, die dieser Mitarbeiter ausführen kann. Es muss mindestens eine Rolle angegeben sein. Wenn ein Mitarbeiter einer Schicht zugewiesen wird, wird ihm auch eine einzelne Rolle aus dieser Liste zugewiesen. Der Mitarbeiter kann während des Planungszeitraums verschiedenen Rollen zugewiesen werden. |
skillIds[] |
Fähigkeits-IDs, die dieser Mitarbeiter besitzt. Diese Liste kann leer sein. Wenn Mitarbeitende einer Schicht zugewiesen werden, verwendet sie eine beliebige Teilmenge der hier aufgeführten Fähigkeiten, um die Kompetenzanforderungen während der gesamten Schicht abzudecken. |
shiftPreferences[] |
Die Einstellungen dieses Mitarbeiters ändern. Die hier angegebenen Schichten stellen die Schichten dar, denen die Mitarbeitenden während des Planungszeitfensters zugewiesen werden würden. Die in |
schedulingConstraints[] |
Liste der Zeitplanbeschränkungen für diesen Mitarbeiter. Die Standardprioritätsstufe für jede dieser Einschränkungen ist |
resourceConstraints[] |
Zusätzliche Planungseinschränkungen, die nicht in |
shiftRequests[] |
Liste der Schichtanfragen des Mitarbeiters. Es kann sein, dass ein Mitarbeiter bestimmten Schichten zugewiesen wird oder nicht. Alle feste Terminzuweisungen für den Mitarbeiter können mit einem |
hourlyContract |
Vertrag, der regelmäßige Stundensätze und Stundensätze für Überstunden für den Mitarbeiter vorgibt. |
ShiftPreference
Eine numerische Präferenz für eine bestimmte Schicht-ID.
JSON-Darstellung |
---|
{ "shiftId": string, "preference": integer } |
Felder | |
---|---|
shiftId |
Shift-ID, für die die Einstellung angegeben wird. |
preference |
Höhere Präferenzwerte kennzeichnen eine erwünschte Abweichung. |
SchedulingConstraint
Spezifische Terminbeschränkung für einen bestimmten Mitarbeiter. Die angegebene Einschränkung wird nur während des angegebenen Intervalls [startDateTime,
endDateTime)
angewendet.
JSON-Darstellung |
---|
{ "priority": enum ( |
Felder | |
---|---|
priority |
Prioritätsstufe für diese Planungseinschränkung. Die Standardpriorität für alle Planungseinschränkungen ist |
startDateTime |
Die Startzeit, ab der diese Planungsbeschränkung gilt (einschließlich). |
endDateTime |
Die Endzeit für die Anwendung dieser Planungsbeschränkung (ausgenommen). |
Union-Feld type . Der Typ der angegebenen Einschränkung. Jede Einschränkung wird nur innerhalb des oben angegebenen Zeitfensters angewendet. Für type ist nur einer der folgenden Werte zulässig: |
|
minimumMinutes |
Mindestanzahl der Minuten, die der Mitarbeiter arbeiten kann. Wenn der Mitarbeiter einer Schicht zugewiesen ist, die das Zeitfenster (vollständig oder teilweise) überschneidet, wird die Anzahl der Minuten, in denen sich die Schicht mit dem Zeitfenster überschneidet, in dieser Anzahl berücksichtigt. |
maximumMinutes |
Maximale Anzahl der Minuten, die der Mitarbeiter im Zeitfenster arbeiten kann. Wenn der Mitarbeiter einer Schicht zugewiesen ist, die das Zeitfenster (vollständig oder teilweise) überschneidet, wird die Anzahl der Minuten, in denen sich die Schicht mit dem Zeitfenster überschneidet, in dieser Anzahl berücksichtigt. |
minimumConsecutiveWorkDays |
Mindestanzahl an aufeinanderfolgenden Tagen, an denen der Mitarbeiter arbeiten kann. Eine mitarbeitende Person arbeitet an einem bestimmten Tag, wenn sie einer Schicht zugewiesen ist, die an diesem Tag beginnt. Alle Schichten, die dem Mitarbeiter zugewiesen wurden und die im Zeitfenster beginnen, werden hier berücksichtigt. |
maximumConsecutiveWorkDays |
Maximale Anzahl aufeinanderfolgender Tage, an denen der Mitarbeiter arbeiten kann. Eine mitarbeitende Person arbeitet an einem bestimmten Tag, wenn sie einer Schicht zugewiesen ist, die an diesem Tag beginnt. Alle Schichten, die dem Mitarbeiter zugewiesen wurden und die im Zeitfenster beginnen, werden hier berücksichtigt. |
minimumShiftCount |
Mindestanzahl der Schichten, die der Mitarbeiter ausüben kann. In dieser Anzahl ist jede Schicht berücksichtigt, die der Mitarbeitenden zugewiesen wurde und die sich vollständig mit dem Zeitfenster überschneidet. |
maximumShiftCount |
Maximale Anzahl der Schichten, die der Mitarbeiter ausführen kann. In dieser Anzahl ist jede Schicht berücksichtigt, die der Mitarbeitenden zugewiesen wurde und die sich vollständig mit dem Zeitfenster überschneidet. |
minimumRestMinutes |
Mindestanzahl der Minuten, die die Mitarbeitenden nach Ende einer Schicht ausruhen müssen, bevor sie einer anderen Schicht zugewiesen werden können. Diese Einschränkung gilt für jedes Schichtpaar, das vollständig in [ |
Priorität
Die Prioritätsstufe für eine Einschränkung des Zeitplans eines Mitarbeiters oder die Abdeckungsanforderungen. Dazu gehören SchedulingConstraint
, ResourceConstraint
, ShiftRequest
und CoverageRequirement
. Da es Konflikte zwischen Einschränkungen geben könnte, ist es nicht immer möglich, jede Einschränkung zu erfüllen. Daher hat jede Art von Einschränkung eine Priorität (vom Nutzer vergeben oder eine Standardeinstellung), die den Matherechner über die relative Bedeutung aller Einschränkungen informiert, die einem vollständigen Zeitplan zugewiesen sind.
Enums | |
---|---|
PRIORITY_UNSPECIFIED |
Unbekannte Prioritätsstufe. |
PRIORITY_LOW |
Die niedrigste Prioritätsstufe. Einschränkungen mit dieser Priorität sind weniger wichtig als die anderen Einschränkungen. Sie werden als Erste in Betracht gezogen, wenn keine praktikable Lösung gefunden wird. |
PRIORITY_MEDIUM |
Prioritätsebene mittel. Einschränkungen mit dieser Priorität sind wichtiger als Einschränkungen mit der Priorität PRIORITY_LOW , aber weniger wichtig als Einschränkungen mit der Priorität PRIORITY_HIGH . Wenn nach dem Lockern aller Einschränkungen mit der Priorität PRIORITY_LOW keine praktikable Lösung gefunden werden kann, werden als Nächstes Einschränkungen mit der Priorität PRIORITY_MEDIUM aufgrund eines Verstoßes in Betracht gezogen. |
PRIORITY_HIGH |
Die höchste Prioritätsstufe. Einschränkungen mit dieser Prioritätsstufe sind am wichtigsten. Sie sind die letzten, die für einen Verstoß in Betracht gezogen werden, wenn nach dem Lockern der Einschränkungen der niedrigeren Prioritätsstufen keine praktikable Lösung gefunden werden kann. |
PRIORITY_MANDATORY |
Prioritätsstufe, die etwas darstellt, das vom Solver nicht verletzt werden darf. Wenn der Matherechner SolutionStatus.INFEASIBLE zurückgibt, kann das an zu vielen PRIORITY_MANDATORY -Einschränkungen liegen. |
ResourceConstraint
Eine allgemeine Einschränkung, die die Menge einer bestimmten „Ressource“ begrenzt von einem Mitarbeiter verwendet wird. Dies ist eine abstrakte Version der spezifischeren SchedulingConstraint
, die für den Nutzer flexibler ist. Viele Planungseinschränkungen, die nicht in SchedulingConstraint.type
angegeben werden können, können stattdessen mit dieser Nachricht angegeben werden.
JSON-Darstellung |
---|
{
"priority": enum ( |
Felder | |
---|---|
priority |
Prioritätsstufe dieser Ressourceneinschränkung. Die Standardpriorität für alle Ressourceneinschränkungen ist |
resourceUsages |
Menge der von den Schichten genutzten Ressourcen. Wenn diese Einschränkung beispielsweise für die minimale und maximale Arbeitsstunden eines Mitarbeiters in einer bestimmten Woche gilt, enthält diese Karte die Schichten in dieser Woche und die Länge jeder Schicht in Stunden. Ein Objekt, das eine Liste von |
minimumResourceUsage |
Minimale Ressourcennutzung, die durch eine Ressourceneinschränkung erreicht wird. |
maximumResourceUsage |
Maximale Ressourcennutzung, die durch eine Ressourceneinschränkung erreicht werden soll. |
ShiftRequest
Die Anfrage eines Mitarbeiters, bestimmten Schichten zugewiesen oder nicht zugewiesen zu werden.
JSON-Darstellung |
---|
{ "priority": enum ( |
Felder | |
---|---|
priority |
Prioritätsstufe dieser Planungsanfrage. Die Standardpriorität für alle Planungsanfragen ist |
shiftIds[] |
Die Schicht-IDs der Planungsanfrage. |
type |
Anfragetyp, z.B. ob die Anfrage dem Schichtsatz zugewiesen ist oder nicht. |
WorkStatus
Ob ein Mitarbeiter arbeitsfähig ist oder nicht.
Enums | |
---|---|
WORK_STATUS_UNSPECIFIED |
Unbekannter Arbeitsstatus. |
STATUS_WORK |
Status, der einen arbeitenden Mitarbeiter repräsentiert. |
STATUS_NOT_WORK |
Status, der einen nicht erwerbstätigen Mitarbeiter repräsentiert. |
HourlyContract
Gibt einen Basisstundensatz, Preisdifferenzen und Überstundenmultiplikatoren an, um die Vergütung für einen Mitarbeiter zu bestimmen. Beachte, dass an verschiedenen Orten gesetzliche Vorschriften eine andere Berechnung der Überstundenvergütung erfordern. Der Solver schätzt die Überstundenvergütung, um entweder einen Teil der Gesamtkosten zu minimieren oder ein Budget einzuhalten (siehe BudgetRequirement
). Es ist nicht als Tool zur Berechnung der Gehaltsabrechnung gedacht.
JSON-Darstellung |
---|
{
"baseHourlyRate": number,
"hourlyRateShiftDifferentials": {
string: number,
...
},
"overtimePeriods": [
{
object ( |
Felder | |
---|---|
baseHourlyRate |
Die Vergütung für die Arbeit ohne Überstunden. Wenn für einen Mitarbeiter mehrere Tarife gelten, werden Differenzen relativ zum Basisstundensatz angewendet. Wenn es mehrere Preise gibt, sollte der Basisstundensatz das Minimum dieser Preise sein. |
hourlyRateShiftDifferentials |
Der Stundensatz, der zusätzlich zu Ein Objekt, das eine Liste von |
overtimePeriods[] |
Eine Liste aller Perioden, für die Überstunden berechnet werden müssen. Diese Zeiträume dürfen sich nicht überschneiden. |
OvertimePeriod
Ein fester und regelmäßig wiederkehrender Zeitraum (in der Regel 168 Stunden oder sieben aufeinanderfolgende 24-Stunden-Zeiträume), der zur Bestimmung der Höhe der Überstundenvergütung verwendet wird. Jede Periode hat einen Multiplikator für die Verlängerung (z.B. 1,5) relativ zum baseHourlyRate
und einer Beschränkung für die Anzahl der Stunden, die als normale Arbeit (keine Überstunden) gelten. Jede Schicht, die sich mit den Zeitfenstern startDateTime
(einschließlich) und endDateTime
(exklusiv) überschneidet, wird auf die Gesamtzahl der Stunden angerechnet, die im Zeitraum gearbeitet wurden. Wenn es sich um eine teilweise Überschneidung handelt, werden nur die sich überschneidenden Stunden gezählt.
JSON-Darstellung |
---|
{ "overtimeMultiplier": number, "startDateTime": { object ( |
Felder | |
---|---|
overtimeMultiplier |
Multiplikator für die Berechnung des Überstundensatzes (muss größer oder gleich 1,0 sein). Der Stundensatz für Überstunden wird in der Regel mit |
startDateTime |
Startzeit für die Verlängerung. Wenn sich eine Schicht in diesem Zeitraum überschneidet, werden die Stunden einer solchen Schicht ab |
endDateTime |
Endzeit für die Verlängerung. Wenn sich eine Schicht in diesem Zeitraum überschneidet, werden die Stunden einer solchen Schicht bis zum |
maximumRegularHours |
Maximale Anzahl an Arbeitsstunden, die zum regulären Stundensatz (ohne Überstunden) bezahlt werden. Diese Menge muss positiv sein. |
Umschalttaste
Eine Schicht gibt ein festes Zeitfenster an, in dem Mitarbeitende arbeiten können.
JSON-Darstellung |
---|
{ "id": string, "locationId": string, "startDateTime": { object ( |
Felder | |
---|---|
id |
Eindeutige ID, die dieser Schicht zugewiesen ist. |
locationId |
Standort-ID, an der diese Schicht stattfindet. Dieses Feld kann leer sein. |
startDateTime |
Der Beginn der Schicht (einschließlich). |
endDateTime |
Die Endzeit der Schicht (ausschließlich). Derzeit unterstützt der Solver nur Schichten, die weniger als 24 Stunden dauern. |
breakRules[] |
Eine Liste der Regeln für den Umbruch, die während der Schicht gelten. Mitarbeitern, die in dieser Schicht arbeiten, wird pro |
BreakRule
Eine Regel, die festlegt, wann eine Pause innerhalb einer Schicht beginnen kann und wie lange sie dauert. Die Liste aller möglichen Pausen, die berücksichtigt werden sollen, wird in Schritten von ruleIncrementMinutes
festgelegt. Beispiel: Eine Pauseregel modelliert eine 30-minütige Pause, die zwischen 10:00 und 11:00 Uhr beginnen kann, und das Regelinkrement beträgt 20 Minuten. Die Liste der berücksichtigten Pausen lautet: [10:00, 10:30], [10:20, 10:50], [10:40, 11:1,1,1,1,1,1,1,1,1,1,1.
JSON-Darstellung |
---|
{ "earliestStartTime": { object ( |
Felder | |
---|---|
earliestStartTime |
Die früheste Startzeit der Pause (einschließlich). Es können nur |
latestStartTime |
Die späteste Startzeit der Pause (einschließlich). Es können nur |
durationMinutes |
Dauer der Pause in Minuten. |
ruleIncrementMinutes |
[Optional] Zeitabschnitt in Minuten für alle Unterbrechungen, die in dieser Regel für die Werbeunterbrechung berücksichtigt werden können. Enthält standardmäßig den Wert |
CoverageRequirement
Eine Deckungsanforderung gibt die Anzahl der Mitarbeitenden an, die für eine Reihe von Rollen und/oder Fähigkeiten während eines bestimmten Zeitfensters und an einem bestimmten Standort benötigt werden. DateTime-Intervalle an einem bestimmten Ort dürfen sich nicht überschneiden. Alternativ kann eine Liste mit Schicht-IDs anstelle eines Zeitfensters und eines Standorts bereitgestellt werden. Nur Mitarbeitende, die einer bestimmten Rolle zugewiesen werden können (oder die die spezifische Fähigkeit besitzen), können diese Anforderung erfüllen.
Für die jeweilige Rolle und/oder Fähigkeit ist die Deckungsanforderung erfüllt, wenn zu jedem Zeitpunkt des Zeitfensters (oder für jede Schicht in shiftIds
) mindestens targetEmployeeCount
Mitarbeiter arbeiten. Im Gegensatz dazu wird die Deckungsanforderung nicht erfüllt, wenn im Zeitfenster (oder in einer der Schichten in shiftIds
) während des Zeitfensters weniger als targetEmployeeCount
Mitarbeiter arbeiten. Mehr aktive Mitarbeiter als der targetEmployeeCount
erfüllen die Anforderung zwar weiterhin, aber übermäßige Personalbelegung wurde durch den Matherechner minimiert.
JSON-Darstellung |
---|
{ "startDateTime": { object ( |
Felder | |
---|---|
startDateTime |
Die Startzeit für die Abdeckungsanforderung (einschließlich). Wenn festgelegt, muss |
endDateTime |
Das Ende für die Abdeckungsanforderung (ausschließlich). Wenn festgelegt, muss |
locationId |
Standort, an dem die Mitarbeiter gebraucht werden. |
shiftIds[] |
Wenn festgelegt, werden die Rollen- und Qualifikationsanforderungen einzeln auf jede Schicht-ID in dieser Liste angewendet. Wenn ShiftIds nicht leer sind, müssen |
roleRequirements[] |
Erforderliche Anzahl von Mitarbeitern, die den angegebenen Rollen während des Zeitfensters zugewiesen werden müssen. Für jede Rollen-ID muss höchstens ein |
skillRequirements[] |
Erforderliche Anzahl der Mitarbeitenden mit den angegebenen Fähigkeiten, die während des Zeitfensters Schichten zugewiesen sind. Für jede Skill-ID muss höchstens ein |
RoleRequirement
Erforderliche Anzahl von Mitarbeitern, die der angegebenen Rolle während des Zeitfensters zugewiesen werden müssen.
JSON-Darstellung |
---|
{
"roleId": string,
"targetEmployeeCount": integer,
"priority": enum ( |
Felder | |
---|---|
roleId |
Rollen-ID für die Anforderung. |
targetEmployeeCount |
Gewünschte Anzahl von Mitarbeitern, die der Rolle während des Zeitfensters zugewiesen wurden. |
priority |
Prioritätsstufe für diese Anforderungseinschränkung. Die Standardpriorität für alle Ressourceneinschränkungen ist |
SkillRequirement
Erforderliche Anzahl von Mitarbeitenden, die während des Zeitfensters arbeiten und die angegebenen Fähigkeiten besitzen.
JSON-Darstellung |
---|
{
"skillId": string,
"targetEmployeeCount": integer,
"priority": enum ( |
Felder | |
---|---|
skillId |
Skill-ID für die Anforderung. |
targetEmployeeCount |
Gewünschte Anzahl von Mitarbeitenden mit der jeweiligen Fähigkeit, die während des Zeitfensters arbeiten. |
priority |
Prioritätsstufe für diese Anforderungseinschränkung. Die Standardpriorität für alle Ressourceneinschränkungen ist |
BudgetRequirement
Budgetanforderungen für ein bestimmtes Intervall.
JSON-Darstellung |
---|
{ "totalBudget": number, "startDateTime": { object ( |
Felder | |
---|---|
totalBudget |
Gesamtbudget für das angegebene Intervall. Bei einer Priorität von Wenn |
startDateTime |
Beginn, ab dem dieses Budget gilt. Wenn keine Startzeit angegeben ist, wird sie auf die früheste Startzeit aller Schichten festgelegt. |
endDateTime |
Endzeit für die Anwendung dieses Budgets. Wenn keine Endzeit angegeben ist, wird sie auf die letzte Endzeit aller Schichten festgelegt. |
priority |
Prioritätsstufe für die Erfüllung der Budgetanforderung im angegebenen Zeitraum. Die Standardpriorität ist Wenn diese Priorität höher als andere Einschränkungsprioritäten ist und |
ShiftAssignment
Ein Mitarbeiter, der eine andere Rolle zuweisen soll.
JSON-Darstellung |
---|
{
"employeeId": string,
"shiftId": string,
"roleId": string,
"breaks": [
{
object ( |
Felder | |
---|---|
employeeId |
Die zugewiesene Mitarbeiter-ID. |
shiftId |
Schicht-ID, die dem Mitarbeiter zugewiesen ist. |
roleId |
Die Rollen-ID, die dem Mitarbeiter für die Schicht zugewiesen ist. |
breaks[] |
Liste der Pausen für diese Schichtzuweisung. |
Pause
Ein Zeitraum, in dem Mitarbeitende ihre Arbeit während einer Schicht unterbrechen.
JSON-Darstellung |
---|
{
"startDateTime": {
object ( |
Felder | |
---|---|
startDateTime |
Der Beginn einer Pause. |
durationMinutes |
Dauer der Pause in Minuten. |
SolutionStatus
Lösungsstatus (d.h. ein Zeitplan), der in der Antwort eines Matherechners angegeben wird.
Enums | |
---|---|
SOLUTION_STATUS_UNSPECIFIED |
Unbekannter Status für die Antwort. |
FEASIBLE |
Der zurückgegebene Zeitplan ist machbar, aber möglicherweise nicht optimal. |
OPTIMAL |
Der zurückgegebene Zeitplan ist optimal. |
INFEASIBLE |
Für die angegebenen Einschränkungen ist kein praktikabler Zeitplan vorhanden. Der Solver kann diesen Wert zurückgeben, wenn eine Teilmenge der Einschränkungen mit der Prioritätsstufe PRIORITY_MANDATORY nicht erfüllt werden kann. |
NOT_SOLVED |
Es wurde kein Zeitplan gefunden. |
NOT_SOLVED_DEADLINE_EXCEEDED |
Es wurde kein Zeitplan innerhalb des angegebenen Zeitlimits gefunden. |