Skip to content

Commit 7b2be7f

Browse files
authored
Add llm vector store (#106)
* Initial setup of vector store for classification, with fallback to the LLM. * Rework the LLM system a bit, to use structured outputs and more advanced prompts. * Add coverage to the PR. * Fix issues with the PSQL boot scripts camunda. * Add support for storing the vectors in PSQL for classifications. * Create proper hook for the vector store to catch newly created transactions.
1 parent dbc08b1 commit 7b2be7f

File tree

58 files changed

+1441
-161
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

58 files changed

+1441
-161
lines changed

bpmn-process/src/main/java/com/jongsoft/finance/bpmn/listeners/StartProcessListener.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package com.jongsoft.finance.bpmn.listeners;
22

3-
import com.jongsoft.finance.bpmn.InternalAuthenticationEvent;
43
import com.jongsoft.finance.core.JavaBean;
54
import com.jongsoft.finance.domain.user.UserIdentifier;
5+
import com.jongsoft.finance.messaging.InternalAuthenticationEvent;
66
import com.jongsoft.finance.security.AuthenticationFacade;
77
import io.micronaut.context.event.ApplicationEventPublisher;
88
import jakarta.inject.Singleton;

bpmn-process/src/main/java/com/jongsoft/finance/bpmn/InternalAuthenticationEvent.java renamed to domain/src/main/java/com/jongsoft/finance/messaging/InternalAuthenticationEvent.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.jongsoft.finance.bpmn;
1+
package com.jongsoft.finance.messaging;
22

33
import io.micronaut.context.event.ApplicationEvent;
44

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.jongsoft.finance.messaging.notifications;
2+
3+
import com.jongsoft.finance.messaging.ApplicationEvent;
4+
5+
public record TransactionCreated(long transactionId) implements ApplicationEvent {
6+
7+
public static void transactionCreated(long transactionId) {
8+
new TransactionCreated(transactionId)
9+
.publish();
10+
}
11+
}

domain/src/main/java/com/jongsoft/finance/providers/UserProvider.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88

99
public interface UserProvider extends DataProvider<UserAccount> {
1010

11+
Sequence<UserAccount> lookup();
12+
1113
boolean available(UserIdentifier username);
1214

1315
Optional<UserAccount> lookup(UserIdentifier username);

fintrack-api/src/main/java/com/jongsoft/finance/filter/AuthenticationFilter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.jongsoft.finance.filter;
22

3-
import com.jongsoft.finance.bpmn.InternalAuthenticationEvent;
3+
import com.jongsoft.finance.messaging.InternalAuthenticationEvent;
44
import com.jongsoft.lang.Control;
55
import io.micronaut.context.event.ApplicationEventPublisher;
66
import io.micronaut.core.async.publisher.Publishers;

fintrack-api/src/main/java/com/jongsoft/finance/rest/transaction/TransactionResource.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
package com.jongsoft.finance.rest.transaction;
22

3-
import com.jongsoft.finance.bpmn.InternalAuthenticationEvent;
43
import com.jongsoft.finance.core.exception.StatusException;
54
import com.jongsoft.finance.domain.core.EntityRef;
65
import com.jongsoft.finance.domain.transaction.Transaction;
76
import com.jongsoft.finance.factory.FilterFactory;
87
import com.jongsoft.finance.messaging.EventBus;
8+
import com.jongsoft.finance.messaging.InternalAuthenticationEvent;
99
import com.jongsoft.finance.providers.AccountProvider;
1010
import com.jongsoft.finance.providers.AccountTypeProvider;
1111
import com.jongsoft.finance.providers.TransactionProvider;

fintrack-api/src/main/java/com/jongsoft/finance/security/AuthenticationFacadeImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.jongsoft.finance.security;
22

3-
import com.jongsoft.finance.bpmn.InternalAuthenticationEvent;
3+
import com.jongsoft.finance.messaging.InternalAuthenticationEvent;
44
import io.micronaut.runtime.event.annotation.EventListener;
55
import io.micronaut.security.authentication.Authentication;
66
import io.micronaut.security.event.LoginSuccessfulEvent;

jpa-repository/src/main/java/com/jongsoft/finance/RequiresJpa.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@
22

33
import io.micronaut.context.annotation.Requires;
44

5-
@Requires(env = {"h2", "mysql", "demo"})
5+
@Requires(env = {"h2", "mysql", "demo", "psql"})
66
public @interface RequiresJpa {
77
}

jpa-repository/src/main/java/com/jongsoft/finance/jpa/transaction/CreateTransactionHandler.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import com.jongsoft.finance.messaging.CommandHandler;
1616
import com.jongsoft.finance.messaging.commands.transaction.CreateTransactionCommand;
1717
import com.jongsoft.finance.messaging.handlers.TransactionCreationHandler;
18+
import com.jongsoft.finance.messaging.notifications.TransactionCreated;
1819
import com.jongsoft.finance.security.AuthenticationFacade;
1920
import com.jongsoft.lang.Control;
2021
import com.jongsoft.lang.collection.Sequence;
@@ -97,6 +98,7 @@ public long handleCreatedEvent(CreateTransactionCommand command) {
9798
entityManager.persist(transferJpa);
9899
}
99100

101+
TransactionCreated.transactionCreated(jpaEntity.getId());
100102
return jpaEntity.getId();
101103
}
102104

0 commit comments

Comments
 (0)