Add employee-to-order assignments with FR-EM-3 conflict validation
Docker-Images bauen und veröffentlichen / build (, omsorgCore/Dockerfile, omsorgcore) (push) Successful in 17s
Docker-Images bauen und veröffentlichen / build (, omsorgWeb/Dockerfile, omsorgweb) (push) Successful in 6s
Docker-Images bauen und veröffentlichen / build (, omsorgapp/Dockerfile, omsorgapp) (push) Successful in 17s

Adds the Assignment core object (Order x Employee, date range) with full
CRUD, soft-delete/trash integration, and generated API clients.

Layers FR-EM-3 conflict checks onto assignment creation: qualification,
absence/availability, working-hours approximation, cross-order overlap,
and active-contract coverage. Each check's severity (Warning vs. Error)
is configurable at runtime via a new AssignmentValidationSettings
singleton and admin settings panel, instead of being hardcoded - lets
the business tune strictness per check without a redeploy.

Adds a live GET /api/assignments/check endpoint so the create-assignment
dialog can preview conflicts as the user picks employee/dates, before
they hit save, rather than only finding out after submitting.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Felix Kemmler
2026-08-11 00:44:14 +02:00
co-authored by Claude Sonnet 5
parent fcbf27db3c
commit dfeb37cf33
104 changed files with 15846 additions and 7 deletions
@@ -6,6 +6,8 @@ composer.json
docs/Api/AbsencesApi.md
docs/Api/AdminEmailApi.md
docs/Api/AdminSessionsApi.md
docs/Api/AssignmentValidationSettingsApi.md
docs/Api/AssignmentsApi.md
docs/Api/AuditLogApi.md
docs/Api/AuthApi.md
docs/Api/ContractsApi.md
@@ -27,6 +29,10 @@ docs/Model/AbsenceDecisionRequest.md
docs/Model/AbsenceResponse.md
docs/Model/AbsenceResponsePagedResponse.md
docs/Model/AddUserPermissionOverrideRequest.md
docs/Model/AssignmentConflictResponse.md
docs/Model/AssignmentResponse.md
docs/Model/AssignmentResponsePagedResponse.md
docs/Model/AssignmentValidationSettingsResponse.md
docs/Model/AuditEventCategory.md
docs/Model/AuditLogEntryResponse.md
docs/Model/AuditLogEntryResponsePagedResponse.md
@@ -34,6 +40,7 @@ docs/Model/ChangePasswordRequest.md
docs/Model/ContractResponse.md
docs/Model/ContractResponsePagedResponse.md
docs/Model/CreateAbsenceRequest.md
docs/Model/CreateAssignmentRequest.md
docs/Model/CreateContractRequest.md
docs/Model/CreateEmployeeFacilityDistanceRequest.md
docs/Model/CreateEmployeeRequest.md
@@ -84,6 +91,7 @@ docs/Model/TimeEntryDecisionRequest.md
docs/Model/TimeEntryResponse.md
docs/Model/TimeEntryResponsePagedResponse.md
docs/Model/TrashAbsenceResponse.md
docs/Model/TrashAssignmentResponse.md
docs/Model/TrashContractResponse.md
docs/Model/TrashEmployeeFacilityDistanceResponse.md
docs/Model/TrashEmployeeResponse.md
@@ -93,6 +101,8 @@ docs/Model/TrashFacilityResponse.md
docs/Model/TrashOrderResponse.md
docs/Model/TrashTimeEntryResponse.md
docs/Model/UpdateAbsenceRequest.md
docs/Model/UpdateAssignmentRequest.md
docs/Model/UpdateAssignmentValidationSettingsRequest.md
docs/Model/UpdateContractRequest.md
docs/Model/UpdateDocumentRequest.md
docs/Model/UpdateEmployeeFacilityDistanceRequest.md
@@ -117,6 +127,8 @@ git_push.sh
lib/Api/AbsencesApi.php
lib/Api/AdminEmailApi.php
lib/Api/AdminSessionsApi.php
lib/Api/AssignmentValidationSettingsApi.php
lib/Api/AssignmentsApi.php
lib/Api/AuditLogApi.php
lib/Api/AuthApi.php
lib/Api/ContractsApi.php
@@ -142,6 +154,10 @@ lib/Model/AbsenceDecisionRequest.php
lib/Model/AbsenceResponse.php
lib/Model/AbsenceResponsePagedResponse.php
lib/Model/AddUserPermissionOverrideRequest.php
lib/Model/AssignmentConflictResponse.php
lib/Model/AssignmentResponse.php
lib/Model/AssignmentResponsePagedResponse.php
lib/Model/AssignmentValidationSettingsResponse.php
lib/Model/AuditEventCategory.php
lib/Model/AuditLogEntryResponse.php
lib/Model/AuditLogEntryResponsePagedResponse.php
@@ -149,6 +165,7 @@ lib/Model/ChangePasswordRequest.php
lib/Model/ContractResponse.php
lib/Model/ContractResponsePagedResponse.php
lib/Model/CreateAbsenceRequest.php
lib/Model/CreateAssignmentRequest.php
lib/Model/CreateContractRequest.php
lib/Model/CreateEmployeeFacilityDistanceRequest.php
lib/Model/CreateEmployeeRequest.php
@@ -200,6 +217,7 @@ lib/Model/TimeEntryDecisionRequest.php
lib/Model/TimeEntryResponse.php
lib/Model/TimeEntryResponsePagedResponse.php
lib/Model/TrashAbsenceResponse.php
lib/Model/TrashAssignmentResponse.php
lib/Model/TrashContractResponse.php
lib/Model/TrashEmployeeFacilityDistanceResponse.php
lib/Model/TrashEmployeeResponse.php
@@ -209,6 +227,8 @@ lib/Model/TrashFacilityResponse.php
lib/Model/TrashOrderResponse.php
lib/Model/TrashTimeEntryResponse.php
lib/Model/UpdateAbsenceRequest.php
lib/Model/UpdateAssignmentRequest.php
lib/Model/UpdateAssignmentValidationSettingsRequest.php
lib/Model/UpdateContractRequest.php
lib/Model/UpdateDocumentRequest.php
lib/Model/UpdateEmployeeFacilityDistanceRequest.php