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