From 7b878b4f2ab3741391693cc0f4724b639ba1fd09 Mon Sep 17 00:00:00 2001 From: Sven Carstensen Date: Sun, 8 Feb 2026 18:38:26 +0100 Subject: [PATCH] Erweiterungen --- .../assecutor/votianlt/ai/config/LlmConfig.java | 2 +- .../votianlt/ai/service/LlmRestClient.java | 2 +- .../votianlt/pages/view/AddJobView.java | 17 ++++++++++++++--- src/main/resources/application.properties | 2 +- 4 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/main/java/de/assecutor/votianlt/ai/config/LlmConfig.java b/src/main/java/de/assecutor/votianlt/ai/config/LlmConfig.java index 232e8f4..43b423c 100644 --- a/src/main/java/de/assecutor/votianlt/ai/config/LlmConfig.java +++ b/src/main/java/de/assecutor/votianlt/ai/config/LlmConfig.java @@ -17,7 +17,7 @@ import java.net.URL; @Slf4j public class LlmConfig { - @Value("${spring.ai.openai.base-url:http://192.168.180.10:1234}") + @Value("${spring.ai.openai.base-url:http://192.168.180.3:1234}") private String baseUrl; @Value("${spring.ai.openai.chat.options.model:local-model}") diff --git a/src/main/java/de/assecutor/votianlt/ai/service/LlmRestClient.java b/src/main/java/de/assecutor/votianlt/ai/service/LlmRestClient.java index f7307ea..aea0803 100644 --- a/src/main/java/de/assecutor/votianlt/ai/service/LlmRestClient.java +++ b/src/main/java/de/assecutor/votianlt/ai/service/LlmRestClient.java @@ -24,7 +24,7 @@ public class LlmRestClient { private final ObjectMapper objectMapper; private final String model; - public LlmRestClient(@Value("${spring.ai.openai.base-url:http://192.168.180.10:1234}") String baseUrl, + public LlmRestClient(@Value("${spring.ai.openai.base-url:http://192.168.180.3:1234}") String baseUrl, @Value("${spring.ai.openai.chat.options.model:local-model}") String model, ObjectMapper objectMapper) { this.webClient = WebClient.builder().baseUrl(baseUrl + "/v1/chat/completions").build(); diff --git a/src/main/java/de/assecutor/votianlt/pages/view/AddJobView.java b/src/main/java/de/assecutor/votianlt/pages/view/AddJobView.java index 1545437..6e6b68c 100644 --- a/src/main/java/de/assecutor/votianlt/pages/view/AddJobView.java +++ b/src/main/java/de/assecutor/votianlt/pages/view/AddJobView.java @@ -53,6 +53,7 @@ import de.assecutor.votianlt.security.SecurityService; import jakarta.annotation.security.RolesAllowed; import lombok.extern.slf4j.Slf4j; import de.assecutor.votianlt.model.CargoItem; +import java.time.LocalDate; import java.util.*; import java.util.Objects; import java.util.Optional; @@ -371,6 +372,7 @@ public class AddJobView extends Main { // Date picker fields for appointments pickupDate = new DatePicker("Datum"); pickupDate.setRequiredIndicatorVisible(true); + pickupDate.setMin(LocalDate.now()); pickupDate.setLocale(java.util.Locale.GERMANY); // Monday as first day of week pickupDate.setI18n(new DatePicker.DatePickerI18n().setFirstDayOfWeek(1) // 1 = Monday .setMonthNames(java.util.Arrays.asList("Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", @@ -381,6 +383,7 @@ public class AddJobView extends Main { deliveryDate = new DatePicker("Datum"); deliveryDate.setRequiredIndicatorVisible(true); + deliveryDate.setMin(LocalDate.now()); deliveryDate.setLocale(java.util.Locale.GERMANY); // Monday as first day of week deliveryDate.setI18n(new DatePicker.DatePickerI18n().setFirstDayOfWeek(1) // 1 = Monday .setMonthNames(java.util.Arrays.asList("Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", @@ -843,9 +846,15 @@ public class AddJobView extends Main { .bind(Job::getPrice, Job::setPrice); // Bind date picker fields with validation - binder.forField(pickupDate).asRequired("").bind(Job::getPickupDate, Job::setPickupDate); + binder.forField(pickupDate).asRequired("") + .withValidator(date -> date == null || !date.isBefore(LocalDate.now()), + "Das Abholdatum darf nicht in der Vergangenheit liegen") + .bind(Job::getPickupDate, Job::setPickupDate); - binder.forField(deliveryDate).asRequired("").bind(Job::getDeliveryDate, Job::setDeliveryDate); + binder.forField(deliveryDate).asRequired("") + .withValidator(date -> date == null || !date.isBefore(LocalDate.now()), + "Das Lieferdatum darf nicht in der Vergangenheit liegen") + .bind(Job::getDeliveryDate, Job::setDeliveryDate); // Bind time picker fields (optional) binder.bind(pickupTime, Job::getPickupTime, Job::setPickupTime); @@ -1064,7 +1073,9 @@ public class AddJobView extends Main { } private boolean hasAppointmentValidationErrors() { - return pickupDate.getValue() == null || deliveryDate.getValue() == null; + LocalDate today = LocalDate.now(); + return pickupDate.getValue() == null || deliveryDate.getValue() == null + || pickupDate.getValue().isBefore(today) || deliveryDate.getValue().isBefore(today); } private boolean hasCargoValidationErrors() { diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 46c59e5..48449ea 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -108,7 +108,7 @@ app.google.maps.api-key=AIzaSyDnbitL06iLp3elmj-WtPudCykX9xvXcVE # =========================================== # LLM Configuration (LM Studio) # =========================================== -spring.ai.openai.base-url=http://192.168.180.10:1234 +spring.ai.openai.base-url=http://192.168.180.3:1234 spring.ai.openai.api-key=not-used spring.ai.openai.chat.options.model=local-model spring.ai.openai.chat.options.temperature=0.7