From e0c80ac1936603ff8c15bf9442eb168edcef5a10 Mon Sep 17 00:00:00 2001 From: Marcel Date: Sat, 6 Jun 2026 15:37:24 +0200 Subject: [PATCH] feat(search): add Ollama and rate-limit config properties Co-Authored-By: Claude Sonnet 4.6 --- .../search/NlSearchRateLimitProperties.java | 12 ++++++++++++ .../familienarchiv/search/OllamaProperties.java | 15 +++++++++++++++ backend/src/main/resources/application-dev.yaml | 4 ++++ backend/src/main/resources/application.yaml | 10 ++++++++++ 4 files changed, 41 insertions(+) create mode 100644 backend/src/main/java/org/raddatz/familienarchiv/search/NlSearchRateLimitProperties.java create mode 100644 backend/src/main/java/org/raddatz/familienarchiv/search/OllamaProperties.java diff --git a/backend/src/main/java/org/raddatz/familienarchiv/search/NlSearchRateLimitProperties.java b/backend/src/main/java/org/raddatz/familienarchiv/search/NlSearchRateLimitProperties.java new file mode 100644 index 00000000..e71f8a36 --- /dev/null +++ b/backend/src/main/java/org/raddatz/familienarchiv/search/NlSearchRateLimitProperties.java @@ -0,0 +1,12 @@ +package org.raddatz.familienarchiv.search; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +@Component +@ConfigurationProperties("app.nl-search.rate-limit") +@Data +public class NlSearchRateLimitProperties { + private int maxRequestsPerMinute = 5; +} diff --git a/backend/src/main/java/org/raddatz/familienarchiv/search/OllamaProperties.java b/backend/src/main/java/org/raddatz/familienarchiv/search/OllamaProperties.java new file mode 100644 index 00000000..673006e7 --- /dev/null +++ b/backend/src/main/java/org/raddatz/familienarchiv/search/OllamaProperties.java @@ -0,0 +1,15 @@ +package org.raddatz.familienarchiv.search; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +@Component +@ConfigurationProperties("app.ollama") +@Data +public class OllamaProperties { + private String baseUrl; + private String model; + private int timeoutSeconds = 30; + private int healthCheckTimeoutSeconds = 2; +} diff --git a/backend/src/main/resources/application-dev.yaml b/backend/src/main/resources/application-dev.yaml index 54e4a972..954e430b 100644 --- a/backend/src/main/resources/application-dev.yaml +++ b/backend/src/main/resources/application-dev.yaml @@ -11,3 +11,7 @@ springdoc: swagger-ui: enabled: true path: /swagger-ui.html + +app: + ollama: + base-url: http://localhost:11434 diff --git a/backend/src/main/resources/application.yaml b/backend/src/main/resources/application.yaml index 1e4558e0..36d5298a 100644 --- a/backend/src/main/resources/application.yaml +++ b/backend/src/main/resources/application.yaml @@ -130,6 +130,16 @@ app: # The loader maps columns by header name — no positional indices (see ADR-025). dir: ${IMPORT_DIR:/import} + ollama: + base-url: http://ollama:11434 + model: qwen2.5:7b-instruct-q4_K_M + timeout-seconds: 30 + health-check-timeout-seconds: 2 + + nl-search: + rate-limit: + max-requests-per-minute: 5 + ocr: sender-model: activation-threshold: 100