Serviços de que o Lender depende
PostgreSQL e Valkey são obrigatórios para originar. Um provedor de identidade é obrigatório quando a autorização de rota está habilitada. Produção exige um. Um primeiro empréstimo não precisa de Midaz nem de RedPanda. Leia Lançamentos no ledger abaixo para saber o que fica esperando.
Rode o Lender localmente
O Lender é um único serviço Go. Uma execução local precisa do toolchain Go na versão 1.26 ou posterior, Docker com Compose e Make.
1
Crie o arquivo de ambiente
make set-env copia config/.env.example para config/.env. Edite esse arquivo para cada ajuste desta página.2
Suba as dependências
make up sobe as dependências do Compose e o serviço na porta 8080.3
Aplique as migrations
make migrate-up aplica os dois conjuntos de migrations. Veja a próxima seção.4
Rode com live reload
make dev roda o serviço com o Air.Aplique os dois conjuntos de migrations
O Lender não migra o banco de dados quando sobe. Você aplica as migrations por fora, e existem dois conjuntos:
Aplique os dois.
make migrate-up lê os dois caminhos.
O conjunto core também popula o registro de jurisdições: duas jurisdições ativas, BR para o Brasil e XX, o perfil genérico. Nenhuma API cria uma jurisdição. O binário em produção carrega o comportamento de cada perfil, e a tabela registra quais códigos esse binário conhece. Leia Jurisdições para saber o que um perfil decide.
Configuração obrigatória
O outbox em PostgreSQL é obrigatório e é inicializado automaticamente. Configure a autenticação quando o seu deploy habilita a autorização de rota.
Um subject autenticado: quando PLUGIN_AUTH_ENABLED=true
O Lender registra quem agiu em cada proposta de empréstimo. Ele lê o analista responsável a partir do subject do token bearer, não do corpo da requisição. Cada chamada de proposta de empréstimo precisa, portanto, de uma identidade autenticada.
Defina duas variáveis:
Depois, envie um token bearer em cada chamada. O token precisa de uma claim de subject não vazia e, sob o perfil genérico
XX, o mesmo subject deve criar, aprovar e desembolsar a proposta.
O Lender define os papéis e as permissões dele em um arquivo de seed. Carregue esse seed no seu provedor de identidade. O papel do analista precisa destas permissões:
Um destino durável de lançamento: sempre presente
Um empréstimo desembolsado registra a intenção de lançamento dele de forma durável. O Lender inicializa o outbox transacional em PostgreSQL em cada deploy, na mesma transação de banco de dados que move a proposta paradisbursed. OUTBOX_ENABLED não existe.
O dispatcher repassa cada intenção depois, na cadência que OUTBOX_DISPATCH_INTERVAL_SEC define. Leia Contabilidade e rodadas de apropriação para saber o que o ledger recebe.
Lançamentos no ledger
Aponte o Lender para o Midaz quando você quiser que os lançamentos caiam no ledger:
O empréstimo é originado com ou sem essas variáveis. Enquanto você não configurar um endpoint de ledger, as intenções de lançamento ficam duráveis no outbox e o lançamento no ledger espera. Configure o ledger antes de esperar contabilizações.
Padrões single-tenant
MULTI_TENANT_ENABLED tem false como padrão. Nesse modo, DEFAULT_TENANT_ID identifica o único tenant, e deve ser um UUID válido.
Acréscimos do modo multi-tenant
O modo multi-tenant dá a cada tenant um schema próprio e um pool de clientes de ledger próprio. Ele adiciona quatro requisitos:
- Defina
MULTI_TENANT_ENABLED=truee aponte o Lender para o tenant manager. - Cada token carrega uma claim
tenantId. public.tenant_jurisdictionscarrega uma linha para cada par de tenant e jurisdição.- Cada perfil contábil declara o
midazOrganizationIde omidazLedgerIdpróprios. O modo multi-tenant não recorre aos padrões de ambiente.
Streaming de eventos
O streaming vem desligado por padrão e a originação não precisa dele. Para publicar o catálogo de eventos de ciclo de vida, defina
STREAMING_ENABLED=true, aponte STREAMING_BROKERS para o RedPanda e defina STREAMING_CLOUDEVENTS_SOURCE=lender. O Lender valida esse valor de source quando sobe.
Checklist
- PostgreSQL 17 e Valkey 8 acessíveis.
- Os dois conjuntos de migrations aplicados.
- Quando a autorização de rota está habilitada, defina
PLUGIN_AUTH_ENABLED=true, garanta que o provedor de identidade está acessível e use um token bearer com um subject e cada permissão da tabela acima. DEFAULT_TENANT_IDum UUID válido, no modo single-tenant.
Próximos passos
Início rápido
Seis chamadas de um banco de dados vazio até um empréstimo desembolsado.
Configuração e deploy
O formato completo do container, a superfície de ambiente mais ampla e o caminho de lançamento no ledger.

