# ailtonocchi/spring-boot-langchain4j-demo architecture

> Architecture diagram of the GitHub repository ailtonocchi/spring-boot-langchain4j-demo, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/ailtonocchi/spring-boot-langchain4j-demo
- Repository: https://github.com/ailtonocchi/spring-boot-langchain4j-demo

## Overview

This is a Spring Boot sales-support application with two user-facing paths: direct order REST operations and a conversational assistant. The assistant keeps session-scoped context, can dispatch order queries and identity-checked order actions through tools, and uses the same order service and repository as the direct API. The repository maps orders, users, and products to PostgreSQL. The README also describes product-related assistance, but the sampled tools expose order operations only; its implementation is therefore not shown. Assistant and persistence wiring beyond sampled source is inferred only where documented.

Main entry points: [`src/main/java/br/com/occhi/suporte/services/AssistenteSuporteVendas.java`](https://github.com/ailtonocchi/spring-boot-langchain4j-demo/blob/main/src/main/java/br/com/occhi/suporte/services/AssistenteSuporteVendas.java) (Assistant service), [`src/main/java/br/com/occhi/suporte/entities/Pedido.java`](https://github.com/ailtonocchi/spring-boot-langchain4j-demo/blob/main/src/main/java/br/com/occhi/suporte/entities/Pedido.java) (Order entity), [`src/main/java/br/com/occhi/suporte/services/PedidoService.java`](https://github.com/ailtonocchi/spring-boot-langchain4j-demo/blob/main/src/main/java/br/com/occhi/suporte/services/PedidoService.java) (Order service), [`src/main/java/br/com/occhi/suporte/repositories/PedidoRepository.java`](https://github.com/ailtonocchi/spring-boot-langchain4j-demo/blob/main/src/main/java/br/com/occhi/suporte/repositories/PedidoRepository.java) (Order repository)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["REST entry points"]
  node_assistant_api["Assistant API"]
  node_orders_api["Orders API"]
  node_app["Spring application"]
end

subgraph group_assistant["AI support"]
  node_assistant_service["Assistant service"]
  node_memory_config["Session memory"]
  node_order_tools["Order tools<br/>[PedidoTool.java]"]
end

subgraph group_orders["Order operations"]
  node_order_service["Order service<br/>[PedidoService.java]"]
  node_order_details["Order details DTO"]
  node_order_status["Order status<br/>[StatusPedido.java]"]
end

subgraph group_data["Order data"]
  node_order_repository["Order repository"]
  node_order_entity["Order entity<br/>[Pedido.java]"]
  node_user_entity["User entity<br/>[Usuario.java]"]
  node_product_entity["Product entity<br/>[Produto.java]"]
  node_database_seed["Sample data schema<br/>[database.sql]"]
end

node_customer(("Customer"))
node_llm{{"OpenAI model"}}
node_postgres[("PostgreSQL")]

node_customer -->|"sends chat"| node_assistant_api
node_customer -->|"calls REST"| node_orders_api
node_assistant_api -->|"submits message"| node_assistant_service
node_assistant_service -->|"gets session memory"| node_memory_config
node_assistant_service -->|"requests response"| node_llm
node_assistant_service -.->|"dispatches tools"| node_order_tools
node_orders_api -->|"calls operations"| node_order_service
node_order_tools -->|"calls operations"| node_order_service
node_order_service -->|"queries or saves"| node_order_repository
node_order_repository -->|"reads or writes"| node_postgres
node_order_repository -->|"loads entities"| node_order_entity
node_order_service -->|"builds details"| node_order_details
node_order_entity -->|"references owner"| node_user_entity
node_order_entity -->|"references products"| node_product_entity
node_order_entity -->|"uses status"| node_order_status
node_app -->|"serves endpoints"| node_assistant_api
node_app -->|"serves endpoints"| node_orders_api
node_database_seed -->|"defines and seeds"| node_postgres

click node_assistant_api "https://github.com/ailtonocchi/spring-boot-langchain4j-demo/blob/main/src/main/java/br/com/occhi/suporte/controllers/AssistenteSuporteVendasController.java"
click node_orders_api "https://github.com/ailtonocchi/spring-boot-langchain4j-demo/blob/main/src/main/java/br/com/occhi/suporte/controllers/PedidoController.java"
click node_assistant_service "https://github.com/ailtonocchi/spring-boot-langchain4j-demo/blob/main/src/main/java/br/com/occhi/suporte/services/AssistenteSuporteVendas.java"
click node_memory_config "https://github.com/ailtonocchi/spring-boot-langchain4j-demo/blob/main/src/main/java/br/com/occhi/suporte/config/AgentConfiguration.java"
click node_order_tools "https://github.com/ailtonocchi/spring-boot-langchain4j-demo/blob/main/src/main/java/br/com/occhi/suporte/services/PedidoTool.java"
click node_order_service "https://github.com/ailtonocchi/spring-boot-langchain4j-demo/blob/main/src/main/java/br/com/occhi/suporte/services/PedidoService.java"
click node_order_repository "https://github.com/ailtonocchi/spring-boot-langchain4j-demo/blob/main/src/main/java/br/com/occhi/suporte/repositories/PedidoRepository.java"
click node_order_entity "https://github.com/ailtonocchi/spring-boot-langchain4j-demo/blob/main/src/main/java/br/com/occhi/suporte/entities/Pedido.java"
click node_user_entity "https://github.com/ailtonocchi/spring-boot-langchain4j-demo/blob/main/src/main/java/br/com/occhi/suporte/entities/Usuario.java"
click node_product_entity "https://github.com/ailtonocchi/spring-boot-langchain4j-demo/blob/main/src/main/java/br/com/occhi/suporte/entities/Produto.java"
click node_order_details "https://github.com/ailtonocchi/spring-boot-langchain4j-demo/blob/main/src/main/java/br/com/occhi/suporte/records/DetalhesPedido.java"
click node_order_status "https://github.com/ailtonocchi/spring-boot-langchain4j-demo/blob/main/src/main/java/br/com/occhi/suporte/enums/StatusPedido.java"
click node_app "https://github.com/ailtonocchi/spring-boot-langchain4j-demo/blob/main/src/main/java/br/com/occhi/suporte/SuporteVendasApplication.java"
click node_database_seed "https://github.com/ailtonocchi/spring-boot-langchain4j-demo/blob/main/src/main/resources/static/db/database.sql"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_assistant_api,node_orders_api,node_app toneBlue
class node_assistant_service,node_memory_config,node_order_tools,node_postgres toneAmber
class node_order_service,node_order_details,node_order_status toneMint
class node_order_repository,node_order_entity,node_user_entity,node_product_entity,node_database_seed toneRose
class node_customer,node_llm toneIndigo
```

## Components

### REST entry points

- [Assistant API](https://github.com/ailtonocchi/spring-boot-langchain4j-demo/blob/main/src/main/java/br/com/occhi/suporte/controllers/AssistenteSuporteVendasController.java): `src/main/java/br/com/occhi/suporte/controllers/AssistenteSuporteVendasController.java`
- [Orders API](https://github.com/ailtonocchi/spring-boot-langchain4j-demo/blob/main/src/main/java/br/com/occhi/suporte/controllers/PedidoController.java): `src/main/java/br/com/occhi/suporte/controllers/PedidoController.java`
- [Spring application](https://github.com/ailtonocchi/spring-boot-langchain4j-demo/blob/main/src/main/java/br/com/occhi/suporte/SuporteVendasApplication.java): `src/main/java/br/com/occhi/suporte/SuporteVendasApplication.java`

### AI support

- [Assistant service](https://github.com/ailtonocchi/spring-boot-langchain4j-demo/blob/main/src/main/java/br/com/occhi/suporte/services/AssistenteSuporteVendas.java): `src/main/java/br/com/occhi/suporte/services/AssistenteSuporteVendas.java`
- [Session memory](https://github.com/ailtonocchi/spring-boot-langchain4j-demo/blob/main/src/main/java/br/com/occhi/suporte/config/AgentConfiguration.java): `src/main/java/br/com/occhi/suporte/config/AgentConfiguration.java`
- [Order tools](https://github.com/ailtonocchi/spring-boot-langchain4j-demo/blob/main/src/main/java/br/com/occhi/suporte/services/PedidoTool.java): `src/main/java/br/com/occhi/suporte/services/PedidoTool.java`

### Order operations

- [Order service](https://github.com/ailtonocchi/spring-boot-langchain4j-demo/blob/main/src/main/java/br/com/occhi/suporte/services/PedidoService.java): `src/main/java/br/com/occhi/suporte/services/PedidoService.java`
- [Order details DTO](https://github.com/ailtonocchi/spring-boot-langchain4j-demo/blob/main/src/main/java/br/com/occhi/suporte/records/DetalhesPedido.java): `src/main/java/br/com/occhi/suporte/records/DetalhesPedido.java`
- [Order status](https://github.com/ailtonocchi/spring-boot-langchain4j-demo/blob/main/src/main/java/br/com/occhi/suporte/enums/StatusPedido.java): `src/main/java/br/com/occhi/suporte/enums/StatusPedido.java`

### Order data

- [Order repository](https://github.com/ailtonocchi/spring-boot-langchain4j-demo/blob/main/src/main/java/br/com/occhi/suporte/repositories/PedidoRepository.java): `src/main/java/br/com/occhi/suporte/repositories/PedidoRepository.java`
- [Order entity](https://github.com/ailtonocchi/spring-boot-langchain4j-demo/blob/main/src/main/java/br/com/occhi/suporte/entities/Pedido.java): `src/main/java/br/com/occhi/suporte/entities/Pedido.java`
- [User entity](https://github.com/ailtonocchi/spring-boot-langchain4j-demo/blob/main/src/main/java/br/com/occhi/suporte/entities/Usuario.java): `src/main/java/br/com/occhi/suporte/entities/Usuario.java`
- [Product entity](https://github.com/ailtonocchi/spring-boot-langchain4j-demo/blob/main/src/main/java/br/com/occhi/suporte/entities/Produto.java): `src/main/java/br/com/occhi/suporte/entities/Produto.java`
- [Sample data schema](https://github.com/ailtonocchi/spring-boot-langchain4j-demo/blob/main/src/main/resources/static/db/database.sql): `src/main/resources/static/db/database.sql`

### Other components

- **Customer**
- **OpenAI model**
- **PostgreSQL**

## Connections

- Customer → Assistant API: sends chat
- Customer → Orders API: calls REST
- Assistant API → Assistant service: submits message
- Assistant service → Session memory: gets session memory
- Assistant service → OpenAI model: requests response
- Assistant service → Order tools: dispatches tools
- Orders API → Order service: calls operations
- Order tools → Order service: calls operations
- Order service → Order repository: queries or saves
- Order repository → PostgreSQL: reads or writes
- Order repository → Order entity: loads entities
- Order service → Order details DTO: builds details
- Order entity → User entity: references owner
- Order entity → Product entity: references products
- Order entity → Order status: uses status
- Spring application → Assistant API: serves endpoints
- Spring application → Orders API: serves endpoints
- Sample data schema → PostgreSQL: defines and seeds
