Es wird ein Problem mit der festen Schichtplanung aus den angegebenen SolveShiftSchedulingRequest
gelöst, indem Mitarbeiter den Schichten zugewiesen werden, sodass die Planungseinstellungen der Mitarbeitenden maximiert und Verstöße gegen Planungseinschränkungen minimiert werden.
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 zur Steuerung einer einzelnen Lösung des Problems. |
employees[] |
Für alle verfügbaren Mitarbeiter müssen Termine geplant werden. |
shifts[] |
Alle Schichten bilden den Zeitplan. |
coverageRequirements[] |
Abdeckungsanforderungen für den gesamten Planungszeitraum. Diese geben die Anzahl der Mitarbeitenden an, die entweder während eines Zeitfensters oder einer Liste von Schicht-IDs die jeweilige Rolle ausüben oder eine bestimmte Fähigkeit besitzen müssen. Alle Abdeckungsanforderungen müssen entweder mit Zeitfenstern oder einer Liste mit Schicht-IDs angegeben werden (nicht mit beidem). Die Zeitfenster (falls angegeben) für die Abdeckungsanforderungen dürfen sich nicht für jeden Standort ü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, die ihm für eine Schicht zugewiesen werden kann. Eine Rolle bezieht sich auf einen bestimmten Arbeitsauftrag während einer Schicht (d. h. registrierte Pflegefachkraft, Chefkoch, Kellner usw.). Wenn ein Mitarbeiter einer Schicht zugewiesen wird, erhält er auch eine bestimmte Rolle. |
skillIds[] |
Liste aller möglichen Fähigkeiten in der Belegschaft. Eine Kompetenz bezieht sich auf alle zusätzlichen Qualifikationen, die ein Mitarbeiter möglicherweise hat, die nicht zu einer bestimmten zuweisbaren Stelle gehören (z. B. Zertifizierungen, gesprochene Sprachen usw.). Diese Liste kann leer sein. Wenn eine mitarbeitende Person einer Schicht zugewiesen wird, muss sie alle für diese Schicht erforderlichen Fähigkeiten erfüllen. |
locationIds[] |
Liste aller möglichen Standorte für die Schichten im Zeitplan. Diese Liste kann leer sein. Die Angabe verschiedener Standorte kann nützlich sein, wenn beispielsweise eine Pflegekraft für mehrere Pflegekräfte in einem Krankenhaus mehrere Pflegekräfte in einem Krankenhaus einplanen möchte oder wenn beispielsweise eine Hotelleitung Mitarbeitende in mehreren Hotels einplanen möchte. |
budgetRequirements[] |
Budgetspezifikation für das Planungsproblem. Die standardmäßige Prioritätsstufe für jede dieser Anforderungen ist |
assignmentsHint[] |
Schichten Sie Aufgaben auf, um sie als vorläufige Lösung (Lösungshinweis) für das Planungsproblem zu verwenden. Zuweisungshinweise werden ignoriert, wenn die Zuweisung einer nicht zuweisbaren Schicht oder einer Planungsanfrage widerspricht. |
Antworttext
Antwort für die Mitarbeiterplanungs-API. Für jede Antwort ist shiftAssignments
leer, wenn der zurückgegebene solutionStatus
NOT_SOLVED_DEADLINE_EXCEEDED
oder INFEASIBLE
ist. Wenn solutionStatus
OPTIMAL
oder FEASIBLE
ist, wird in shiftAssignments
eine gültige Schichtzuweisung zurückgegeben. Für eine gültige Schichtzuweisung gelten die folgenden Eigenschaften:
- Jede Mitarbeiter-ID ist in der Gruppe von Mitarbeitern enthalten, die in der Anfrage angegeben sind.
- Jede dem Mitarbeiter zugewiesene Rollen-ID ist in den Rollen-IDs des jeweiligen Mitarbeiters enthalten.
- Jede Schicht-ID ist in der Gruppe von Verschiebungen enthalten, die in der Anfrage angegeben sind.
- Jede Schicht-ID gehört nicht zu den nicht zuweisbaren Schicht-IDs des jeweiligen Mitarbeiters.
- Ein Mitarbeiter wird niemals zwei überlappenden Schichten zugewiesen.
- Für den angegebenen Zeitplan wird keine der Einschränkungen oder Anfragen mit der Prioritätsstufe
PRIORITY_MANDATORY
verletzt.
Wenn der Vorgang erfolgreich ist, enthält der Antworttext Daten mit folgender Struktur:
JSON-Darstellung |
---|
{ "requestId": string, "solutionStatus": enum ( |
Felder | |
---|---|
requestId |
Die ID der Anfrage, mit der diese Antwort verknüpft ist. |
solutionStatus |
Status der zurückgegebenen Lösung. Wenn die Lösung nicht FALSCH oder OPTIMAL ist, sind andere Felder in diesem Protokoll möglicherweise leer. 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 realisierbar, wenn nicht alle Einschränkungen der Prioritätsebene MANDATORY erfüllt werden können. |
shiftAssignments[] |
Liste aller Zuweisungen. Jede |
statusMessage |
Wenn |
SolveParameters
Parameter, die eine Lösung für das Schichtplanungsproblem einleiten.
JSON-Darstellung |
---|
{ "timeLimit": string } |
Felder | |
---|---|
timeLimit |
Die maximale Zeit, die der Matherechner für das Problem aufwenden sollte. Wenn nichts festgelegt ist, wird standardmäßig 1 Minute verwendet. Dieser Wert ist kein festes Limit und berücksichtigt nicht den Kommunikationsaufwand. Die erwartete Latenz zur Lösung des Problems kann diesen Wert leicht überschreiten. Eine Dauer in Sekunden mit bis zu neun Nachkommastellen, die auf „ |
Mitarbeiter
Eine mitarbeitende Person, die eingeplant werden soll.
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, erhält er auch nur eine Rolle aus dieser Liste. Dem Mitarbeiter können während des Planungszeitraums verschiedene Rollen zugewiesen werden. |
skillIds[] |
Skill-IDs, die dieser Mitarbeiter besitzt. Diese Liste kann leer sein. Wenn eine Mitarbeitende einer Schicht zugewiesen wird, verwendet sie eine Teilmenge der hier aufgeführten Fähigkeiten, um den Kompetenzbedarf während der zugewiesenen Schicht abzudecken. |
shiftPreferences[] |
Schichteinstellungen dieses Mitarbeiters. Die hier angegebenen Schichten stellen Schichten dar, denen die Mitarbeitenden vorzugsweise während des Planungszeitraums zugewiesen werden würden. Die in |
schedulingConstraints[] |
Liste mit Terminbeschränkungen für diesen Mitarbeiter. Die Standardprioritätsstufe für jede dieser Einschränkungen ist |
resourceConstraints[] |
Zusätzliche Planungseinschränkungen, die in |
shiftRequests[] |
Liste der Schichtanfragen für den Mitarbeitenden. Es kann sein, dass ein Mitarbeiter bestimmten Schichten zugewiesen wird oder nicht. Alle festen Planungszuweisungen für den Mitarbeiter können durch eine |
hourlyContract |
Vertrag, der regelmäßige Stundensätze und Überstunden für die Mitarbeitenden festlegt. |
ShiftPreference
Eine numerische Einstellung für eine bestimmte Schicht-ID.
JSON-Darstellung |
---|
{ "shiftId": string, "preference": integer } |
Felder | |
---|---|
shiftId |
Schicht-ID, für die die Präferenz angegeben ist. |
preference |
Höhere Präferenzwerte deuten auf eine bessere Verschiebung hin. |
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ätsebene für diese Planungseinschränkung. Die Standardpriorität für alle Planungseinschränkungen ist |
startDateTime |
Die Startzeit, ab der diese Planungseinschränkung gilt (einschließlich). |
endDateTime |
Die Endzeit, ab der diese Planungseinschränkung gilt (ausgenommen). |
Union-Feld type . Die Art 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 |
Die Mindestanzahl der Minuten, die der Mitarbeiter arbeiten kann. Wenn der Mitarbeitenden einer Schicht zugewiesen ist, die sich (vollständig oder teilweise) mit dem Zeitfenster überschneidet, wird die Anzahl der Minuten, in denen sich die Schicht mit dem Zeitfenster überschneidet, in diesen Zählwert einbezogen. |
maximumMinutes |
Maximale Anzahl der Minuten, die der Mitarbeiter in diesem Zeitfenster arbeiten kann. Wenn der Mitarbeitenden einer Schicht zugewiesen ist, die sich (vollständig oder teilweise) mit dem Zeitfenster überschneidet, wird die Anzahl der Minuten, in denen sich die Schicht mit dem Zeitfenster überschneidet, in diesen Zählwert einbezogen. |
minimumConsecutiveWorkDays |
Die Mindestanzahl an aufeinanderfolgenden Tagen, die 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, denen die Mitarbeitenden zugewiesen sind und die innerhalb des Zeitfensters beginnen, werden dabei 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, denen die Mitarbeitenden zugewiesen sind und die innerhalb des Zeitfensters beginnen, werden dabei berücksichtigt. |
minimumShiftCount |
Die Mindestanzahl der Schichten, die der Mitarbeiter bearbeiten kann. Alle Schichten, die der Mitarbeitenden zugewiesen sind und die sich vollständig mit dem Zeitfenster überlappen, werden dabei berücksichtigt. |
maximumShiftCount |
Maximale Anzahl von Schichten, die der Mitarbeiter bearbeiten kann. Alle Schichten, die der Mitarbeitenden zugewiesen sind und die sich vollständig mit dem Zeitfenster überlappen, werden dabei berücksichtigt. |
minimumRestMinutes |
Mindestanzahl der Minuten, die die Mitarbeitende nach dem Ende einer Schicht ausruhen müssen, bevor sie einer anderen Schicht zugewiesen wird. Diese Einschränkung gilt für jedes Schichtpaar, das vollständig in [ |
Priorität
Die Prioritätsstufe für jede Einschränkung im Zeitplan eines Mitarbeiters oder die Abdeckungsanforderungen. Dazu gehören SchedulingConstraint
, ResourceConstraint
, ShiftRequest
und CoverageRequirement
. Da widersprüchliche Einschränkungen bestehen können, ist es nicht immer möglich, alle Einschränkungen zu erfüllen. Daher hat jede Art von Einschränkung eine Priorität (vom Nutzer oder einem Standardwert vorgegeben), die den Solver ü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 sind die ersten, die gegen die Richtlinien verstoßen, wenn keine durchführbare Lösung gefunden werden kann. |
PRIORITY_MEDIUM |
Prioritätsebene „Medium“. 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 der Lockerung aller Einschränkungen mit der Priorität PRIORITY_LOW keine durchführbare Lösung gefunden wird, werden Einschränkungen mit der Priorität PRIORITY_MEDIUM als Nächstes auf den Verstoß geprüft. |
PRIORITY_HIGH |
Die höchste Prioritätsstufe. Einschränkungen mit dieser Prioritätsebene sind am wichtigsten. Sie sind die letzten, für die Verstöße in Betracht gezogen werden, wenn nach der Lockerung der Einschränkungen der niedrigeren Prioritätsstufen keine praktikable Lösung gefunden werden kann. |
PRIORITY_MANDATORY |
Prioritätsebene, die etwas darstellt, das vom Solver nicht verletzt werden kann. Wenn der Solver SolutionStatus.INFEASIBLE zurückgibt, kann dies an zu vielen PRIORITY_MANDATORY -Einschränkungen liegen. |
ResourceConstraint
Eine allgemeine Einschränkung, die die Menge einer bestimmten von einem Mitarbeiter verwendeten „Ressource“ begrenzt. Dies ist eine abstrakte Version des spezifischeren SchedulingConstraint
-Objekts, das für Nutzer flexibler ist. Viele Planungseinschränkungen, die nicht in der SchedulingConstraint.type
festgelegt werden können, können stattdessen mit dieser Nachricht angegeben werden.
JSON-Darstellung |
---|
{
"priority": enum ( |
Felder | |
---|---|
priority |
Prioritätsebene dieser Ressourceneinschränkung. Die Standardpriorität für alle Ressourceneinschränkungen ist |
resourceUsages |
Menge der von den Schichten genutzten Ressourcen. Wenn sich diese Einschränkung beispielsweise auf die minimalen und maximalen Arbeitsstunden eines Mitarbeiters in einer bestimmten Woche bezieht, dann enthält diese Karte die in dieser Woche stattfindenden Schichten sowie die Dauer jeder Schicht in Stunden. Ein Objekt, das eine Liste von |
minimumResourceUsage |
Minimale Ressourcennutzung, damit eine Ressourceneinschränkung erfüllt werden kann. |
maximumResourceUsage |
Maximale Ressourcennutzung für eine zu erfüllende Ressourceneinschränkung. |
ShiftRequest
Der Antrag eines Mitarbeiters, einer bestimmten Schicht zugewiesen zu werden oder nicht.
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 der Gruppe von Schichten zugewiesen wird oder nicht. |
WorkStatus
Ob ein Mitarbeiter arbeitet oder nicht.
Enums | |
---|---|
WORK_STATUS_UNSPECIFIED |
Unbekannter Arbeitsstatus. |
STATUS_WORK |
Status, der einen berufstätigen Mitarbeiter darstellt. |
STATUS_NOT_WORK |
Status, der einen nicht erwerbstätigen Mitarbeiter darstellt. |
HourlyContract
Gibt einen Basisstundensatz, Ratendifferenzen und Multiplikatoren für Überstunden an, um die Vergütung für einen Mitarbeiter zu bestimmen. Beachten Sie, dass Vorschriften an verschiedenen Orten eine andere Berechnung der Überstundenvergütung erfordern können. Der Solver schätzt die Überstundenvergütung, um einen Proxy der Gesamtkosten entweder zu minimieren oder ein Budget einzuhalten (siehe BudgetRequirement
). Er 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 in einer Nicht-Überstunden-Arbeitszeit. Wenn für den Mitarbeiter mehrere Gebühren gelten, werden Ratendifferenzen relativ zu diesem Basisstundensatz angewendet. Wenn es mehrere Preise gibt, sollte außerdem der Basisstundensatz dem Mindestwert dieser Preise entsprechen. |
hourlyRateShiftDifferentials |
Der Stundensatzunterschied, der zusätzlich zum Ein Objekt, das eine Liste von |
overtimePeriods[] |
Eine Liste aller Zeiträume, 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), in dem die Höhe der Überstunden vergütet wird. Für jeden Zeitraum gibt es einen Überzeitmultiplikator (z.B. 1.5) bezogen auf die baseHourlyRate
und eine Beschränkung der Anzahl von Stunden, die als normale Arbeit (keine Überstunden) gelten. Jede Verschiebung, die sich mit den Zeitfenstern startDateTime
(einschließlich) und endDateTime
(ausschließlich) überschneidet, wird auf die Gesamtzahl der in dem Zeitraum gearbeiteten Stunden angerechnet. Wenn es sich um eine unvollständige Überschneidung handelt, werden nur die sich überschneidenden Stunden gezählt.
JSON-Darstellung |
---|
{ "overtimeMultiplier": number, "startDateTime": { object ( |
Felder | |
---|---|
overtimeMultiplier |
Multiplikator zur Berechnung der Überstundenstundenrate (muss größer oder gleich 1,0 sein). Der Stundensatz für die Überstunden wird normalerweise mit |
startDateTime |
Beginn für die Verlängerung. Wenn sich eine Schicht diesen Zeitpunkt überschneidet, werden die Stunden einer solchen Schicht ab |
endDateTime |
Endzeit für die Verlängerung. Wenn sich eine Schicht diesen Zeitpunkt überschneidet, werden die Stunden einer solchen Schicht bis zu |
maximumRegularHours |
Maximale Anzahl der Arbeitsstunden, die regelmäßig (ohne Überstunden) bezahlt werden. Diese Menge muss positiv sein. |
Shift
Eine Schicht ist ein festes Zeitfenster, in dem Mitarbeitende arbeiten können.
JSON-Darstellung |
---|
{ "id": string, "locationId": string, "startDateTime": { object ( |
Felder | |
---|---|
id |
Eindeutige ID, die dieser Schicht zugewiesen ist. |
locationId |
ID des Standorts, an dem diese Schicht durchgeführt wird. Dieses Feld kann leer sein. |
startDateTime |
Der Beginn der Schicht (einschließlich). |
endDateTime |
Das Ende der Schicht (ausschließlich). Derzeit sind mit dem Solver nur Schichten möglich, die weniger als 24 Stunden dauern. |
breakRules[] |
Eine Liste der Unterbrechungsregeln, die während der Schicht auftreten. Mitarbeitern, die diese Schicht machen, wird nach |
BreakRule
Eine Regel, die festlegt, wann und wie lange eine Pause innerhalb einer Schicht beginnen kann. Die Liste aller möglichen Unterbrechungen, die berücksichtigt werden, wird in Schritten von ruleIncrementMinutes
ermittelt. Wenn eine Unterbrechungsregel beispielsweise eine 30-minütige Pause vorgibt, die zwischen 10:00 und 11:00 beginnen kann, und das Regelinkrement 20 Minuten beträgt, werden folgende Pausen berücksichtigt: [10:00, 10:30], [10:20, 10:50], [10:40, 11:1,1.1
JSON-Darstellung |
---|
{ "earliestStartTime": { object ( |
Felder | |
---|---|
earliestStartTime |
Der früheste Beginn der Unterbrechung (einschließlich). Es können nur |
latestStartTime |
Spätester Beginn der Pause (einschließlich). Es können nur |
durationMinutes |
Dauer der Unterbrechung in Minuten. |
ruleIncrementMinutes |
[Optional] Zeitabschnitt in Minuten für alle Pausen, die in dieser Regel berücksichtigt werden können. Enthält standardmäßig den Wert |
CoverageRequirement
Eine Abdeckungsanforderung gibt die Anzahl der Mitarbeitenden an, die in einem bestimmten Zeitraum und an einem bestimmten Standort für eine Reihe von Rollen und/oder Fähigkeiten benötigt werden. DateTime-Intervalle an einem bestimmten Standort dürfen sich nicht überschneiden. Alternativ kann eine Liste mit Schicht-IDs anstelle eines Zeitfensters und eines Ortes bereitgestellt werden. Nur Mitarbeitende, die der jeweiligen Rolle zugewiesen werden können oder über die entsprechende Fähigkeit verfügen, können diese Anforderung erfüllen.
Für eine bestimmte Rolle und/oder Kompetenz ist die Deckungsanforderung erfüllt, wenn mindestens targetEmployeeCount
Mitarbeiter zu jedem Zeitpunkt im Zeitfenster (oder für jede Schicht in shiftIds
) arbeiten. Im Gegensatz dazu wird die Deckungsanforderung zu irgendeinem Zeitpunkt im Zeitfenster (oder für eine der Schichten in shiftIds
) von weniger als targetEmployeeCount
Mitarbeitern in diesem Zeitfenster gearbeitet. Es wird zwar mehr Arbeitskräfte als die targetEmployeeCount
benötigt, um die Anforderung zu erfüllen, aber der Rechner reduziert den Personalbedarf.
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 |
Ort, an dem die Mitarbeitenden gebraucht werden. |
shiftIds[] |
Wenn festgelegt, werden die Rollen- und Qualifikationsanforderungen einzeln auf jede Schicht-ID in dieser Liste angewendet. Wenn die Shift-IDs 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 darf höchstens eine |
skillRequirements[] |
Erforderliche Anzahl von Mitarbeitenden mit den angegebenen Fähigkeiten, die während des Zeitfensters den Schichten zugewiesen sind. Für jede Kompetenz-ID darf höchstens eine |
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 Mitarbeitenden, die der Rolle während des Zeitfensters zugewiesen werden. |
priority |
Prioritätsebene 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 über die angegebene Fähigkeit verfügen.
JSON-Darstellung |
---|
{
"skillId": string,
"targetEmployeeCount": integer,
"priority": enum ( |
Felder | |
---|---|
skillId |
Skill-ID für die Anforderung. |
targetEmployeeCount |
Gewünschte Anzahl von Mitarbeitenden mit der angegebenen Fähigkeit, die während des Zeitfensters arbeiten. |
priority |
Prioritätsebene 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 angewendet wird. Wenn keine Startzeit angegeben ist, wird sie auf die früheste Startzeit aller gegebenen Schichten festgelegt. |
endDateTime |
Endzeit, in der dieses Budget angewendet wird. Wenn keine Endzeit angegeben ist, wird sie auf das letzte Ende aller gegebenen Schichten festgelegt. |
priority |
Priorität für die Erfüllung der Budgetanforderungen während des angegebenen Zeitfensters. Die Standardpriorität ist Hinweis: Wenn diese Priorität höher als andere Einschränkungsprioritäten ist und wenn |
ShiftAssignment
Ein Mitarbeiter, der eine Schichtzuweisung erhält.
JSON-Darstellung |
---|
{
"employeeId": string,
"shiftId": string,
"roleId": string,
"breaks": [
{
object ( |
Felder | |
---|---|
employeeId |
Die Mitarbeiter-ID, die zugewiesen wird. |
shiftId |
Schicht-ID, die dem Mitarbeiter zugewiesen ist. |
roleId |
Rollen-ID, der der Mitarbeiter für die Schicht zugewiesen ist. |
breaks[] |
Liste der Pausen für diese Schichtzuweisung. |
Pause
Ein Zeitraum, in dem ein Mitarbeiter seine Arbeit während einer Schicht unterbricht.
JSON-Darstellung |
---|
{
"startDateTime": {
object ( |
Felder | |
---|---|
startDateTime |
Der Beginn einer Pause. |
durationMinutes |
Dauer der Unterbrechung in Minuten. |
SolutionStatus
Lösungsstatus (d.h. ein Zeitplan), der in der Antwort eines Solver angegeben wird.
Enums | |
---|---|
SOLUTION_STATUS_UNSPECIFIED |
Nicht angegebener Status für die Antwort. |
FEASIBLE |
Der zurückgegebene Zeitplan ist möglich, aber möglicherweise nicht optimal. |
OPTIMAL |
Der zurückgegebene Zeitplan ist optimal. |
INFEASIBLE |
Für die gegebenen Einschränkungen ist kein durchführbarer Zeitplan vorhanden. Der Solver gibt diesen Wert möglicherweise zurück, 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. |