Compare commits
2
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b1a8985b29 | ||
|
|
9073c52b5c |
+53
-56
@@ -1,83 +1,80 @@
|
||||
val wiremockVersion = "3.12.0"
|
||||
val postgresqlVersion = "42.7.11"
|
||||
val springAiVersion by extra("2.0.0")
|
||||
|
||||
plugins {
|
||||
java
|
||||
jacoco
|
||||
id("org.springframework.boot") version "4.1.0"
|
||||
id("io.spring.dependency-management") version "1.1.7"
|
||||
id("org.sonarqube") version "7.3.0.8198"
|
||||
java
|
||||
jacoco
|
||||
id("org.springframework.boot") version "4.1.0"
|
||||
id("io.spring.dependency-management") version "1.1.7"
|
||||
id("org.sonarqube") version "7.3.0.8198"
|
||||
}
|
||||
|
||||
group = "com.vaessl"
|
||||
version = "0.0.1-SNAPSHOT"
|
||||
|
||||
java {
|
||||
toolchain {
|
||||
languageVersion = JavaLanguageVersion.of(25)
|
||||
}
|
||||
toolchain {
|
||||
languageVersion = JavaLanguageVersion.of(25)
|
||||
}
|
||||
}
|
||||
|
||||
sonar {
|
||||
properties {
|
||||
property("sonar.projectKey", "Vaessl")
|
||||
property("sonar.projectName", "Vaessl")
|
||||
property("sonar.coverage.jacoco.xmlReportPaths",
|
||||
"${layout.buildDirectory.get()}/reports/jacoco/test/jacocoTestReport.xml")
|
||||
}
|
||||
properties {
|
||||
property("sonar.projectKey", "Vaessl")
|
||||
property("sonar.projectName", "Vaessl")
|
||||
property("sonar.coverage.jacoco.xmlReportPaths",
|
||||
"${layout.buildDirectory.get()}/reports/jacoco/test/jacocoTestReport.xml")
|
||||
}
|
||||
}
|
||||
|
||||
configurations {
|
||||
compileOnly {
|
||||
extendsFrom(configurations.annotationProcessor.get())
|
||||
}
|
||||
compileOnly {
|
||||
extendsFrom(configurations.annotationProcessor.get())
|
||||
}
|
||||
}
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
}
|
||||
|
||||
extra["springAiVersion"] = "2.0.0"
|
||||
|
||||
|
||||
dependencies {
|
||||
implementation("org.springframework.boot:spring-boot-starter-data-jpa")
|
||||
implementation("org.springframework.boot:spring-boot-starter-session-jdbc")
|
||||
// implementation("org.springframework.boot:spring-boot-starter-security")
|
||||
implementation("org.springframework.boot:spring-boot-starter-validation")
|
||||
implementation("org.springframework.boot:spring-boot-starter-webmvc")
|
||||
implementation("org.springframework.ai:spring-ai-starter-model-openai")
|
||||
implementation("org.postgresql:postgresql:$postgresqlVersion")
|
||||
implementation("org.springframework.ai:spring-ai-starter-vector-store-pgvector")
|
||||
|
||||
|
||||
|
||||
compileOnly("org.projectlombok:lombok")
|
||||
|
||||
developmentOnly("org.springframework.boot:spring-boot-devtools")
|
||||
|
||||
runtimeOnly("org.postgresql:postgresql")
|
||||
|
||||
annotationProcessor("org.projectlombok:lombok")
|
||||
|
||||
testImplementation("org.springframework.boot:spring-boot-starter-data-jpa-test")
|
||||
// testImplementation("org.springframework.boot:spring-boot-starter-security-test")
|
||||
testImplementation("org.springframework.boot:spring-boot-starter-validation-test")
|
||||
testImplementation("org.springframework.boot:spring-boot-starter-webmvc-test")
|
||||
testImplementation("org.wiremock:wiremock-standalone:$wiremockVersion")
|
||||
testImplementation("org.springframework.boot:spring-boot-starter-session-jdbc-test")
|
||||
|
||||
testRuntimeOnly("org.junit.platform:junit-platform-launcher")
|
||||
mavenCentral()
|
||||
}
|
||||
|
||||
dependencyManagement {
|
||||
imports {
|
||||
mavenBom("org.springframework.ai:spring-ai-bom:${property("springAiVersion")}")
|
||||
}
|
||||
imports {
|
||||
mavenBom("org.springframework.ai:spring-ai-bom:$springAiVersion")
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
// Spring Boot Starters
|
||||
implementation("org.springframework.boot:spring-boot-starter-data-jpa")
|
||||
implementation("org.springframework.boot:spring-boot-starter-session-jdbc")
|
||||
implementation("org.springframework.boot:spring-boot-starter-validation")
|
||||
implementation("org.springframework.boot:spring-boot-starter-webmvc")
|
||||
|
||||
// Spring AI Starters (versions managed by spring-ai-bom)
|
||||
implementation("org.springframework.ai:spring-ai-starter-model-openai")
|
||||
implementation("org.springframework.ai:spring-ai-starter-vector-store-pgvector")
|
||||
|
||||
// Database
|
||||
implementation("org.postgresql:postgresql:$postgresqlVersion")
|
||||
|
||||
// Tooling & Code Generation
|
||||
compileOnly("org.projectlombok:lombok")
|
||||
annotationProcessor("org.projectlombok:lombok")
|
||||
developmentOnly("org.springframework.boot:spring-boot-devtools")
|
||||
|
||||
// Testing
|
||||
testImplementation("org.springframework.boot:spring-boot-starter-data-jpa-test")
|
||||
testImplementation("org.springframework.boot:spring-boot-starter-validation-test")
|
||||
testImplementation("org.springframework.boot:spring-boot-starter-webmvc-test")
|
||||
testImplementation("org.springframework.boot:spring-boot-starter-session-jdbc-test")
|
||||
testImplementation("org.wiremock:wiremock-standalone:$wiremockVersion")
|
||||
|
||||
testRuntimeOnly("org.junit.platform:junit-platform-launcher")
|
||||
}
|
||||
|
||||
tasks.withType<JavaCompile> {
|
||||
options.compilerArgs.add("-parameters")
|
||||
options.compilerArgs.add("-parameters")
|
||||
}
|
||||
|
||||
tasks.withType<Test> {
|
||||
@@ -97,4 +94,4 @@ tasks.jacocoTestReport {
|
||||
reports {
|
||||
xml.required = true
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -11,6 +11,7 @@ import org.springframework.ai.vectorstore.filter.FilterExpressionBuilder;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.vaessl.app.shared.ServiceItem;
|
||||
import com.vaessl.app.shared.ServiceType;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
/**
|
||||
* Embeds {@link ServiceItem}s into the shared vector store and prunes entries that no longer exist
|
||||
@@ -18,14 +19,11 @@ import com.vaessl.app.shared.ServiceType;
|
||||
* singleton bean shared across concurrent sync runs; callers own the per-sync ID accumulator.
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class EmbeddingService {
|
||||
|
||||
private final VectorStore vectorStore;
|
||||
|
||||
public EmbeddingService(VectorStore vectorStore) {
|
||||
this.vectorStore = vectorStore;
|
||||
}
|
||||
|
||||
/**
|
||||
* Embeds and upserts {@code items} into the vector store, appending each item's ID to
|
||||
* {@code currentItemIds} so the caller can later prune stale entries via
|
||||
|
||||
Reference in New Issue
Block a user