feat(planning): implement constraint-first leave planner

This commit is contained in:
nessar committed 2026-08-28 22:44:14 +02:00
1 parent ba8dbe92d9
commit 7ceaf1a57a
32 files changed
+4842 -880

No files matched your search

+31 -1
View File
@@ -9,10 +9,22 @@
"calculate": "Berechnen",
"remainingDaysWarning": "{count} nicht platziert:",
"remainingDaysManualPlace": "Bitte manuell platzieren.",
"deleteEntry": "Eintrag löschen",
"chooseDate": "Datum auswählen",
"availableDate": "Verfügbar ab",
"daySuffix": "Tag",
"daysSuffix": "Tage",
"expires": "abl."
"expires": "abl.",
"remainingClassification": {
"unavoidableExpiry": "Unvermeidbarer Ablauf",
"atRisk": "Gefährdet",
"deferred": "Aufgeschoben"
},
"remainingReason": {
"unavoidableExpiry": "vor dem Planungshorizont abgelaufen",
"atRisk": "läuft im Planungshorizont ab",
"deferred": "nach dem Planungshorizont verfügbar"
}
},
"dayTypes": {
"weekend": "Wochenende",
@@ -37,6 +49,7 @@
"ifThenTemplate": "Wenn {type} dann {placement}",
"timeWindowTemplate": "Zeitfenster {startDate} bis {endDate}",
"editRule": "Regel bearbeiten",
"deleteRule": "Regel löschen",
"addRule": "Regel hinzufügen",
"place": "platzieren",
"ruleName": "Regelname",
@@ -45,6 +58,9 @@
"type": "Typ",
"position": "Position",
"getBonus": "Bonus erhalten",
"force": "Regelverbindlichkeit",
"obligation": "Verpflichtung",
"preference": "Präferenz",
"startDate": "Startdatum",
"endDate": "Enddatum",
"cancel": "Abbrechen",
@@ -71,6 +87,20 @@
"auto": "automatisch"
}
},
"planning": {
"invalidInput": "Die Planungsdaten sind ungültig.",
"conflict": "Die Verpflichtungen können nicht gemeinsam erfüllt werden.",
"incomplete": "Die Berechnung wurde vor Abschluss aller Qualitätsstufen beendet.",
"error": "Bei der Planung ist ein unerwarteter Fehler aufgetreten.",
"complete": "Plan berechnet."
},
"benchmark": {
"title": "Benchmark der Urlaubsplanung",
"instructions": "Führen Sie die fünf festen Szenarien aus und kopieren Sie den Bericht.",
"run": "Benchmark starten",
"running": "Läuft…",
"copy": "Bericht kopieren"
},
"loading": "Wird geladen...",
"weekdaysShort": ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"]
}