> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lerian.studio/llms.txt
> Use this file to discover all available pages before exploring further.

# O Lender na plataforma

> Veja como o Lender lança no ledger Midaz, emite eventos de ciclo de vida no backbone de eventos, vincula cada evento e lançamento ao seu tenant e reporta dados de telemetria.

O Lender é um primitivo Lerian que roda na plataforma. Quatro encaixes da plataforma importam quando você o opera: o caminho de lançamento no ledger, o stream de eventos, o isolamento por tenant e a observabilidade.

## O caminho de lançamento no Midaz

***

O Lender é a fonte da verdade da jornada de crédito. O [Midaz](https://docs.lerian.studio/pt/products/midaz/about-midaz.md) é a fonte da verdade dos saldos. Cada evento de dinheiro, como um desembolso, um pagamento ou uma apropriação de juros, vira uma transação balanceada de partidas dobradas (Todo movimento financeiro é registrado como pelo menos duas operações: um débito de uma conta e um crédito para outra, de modo que o sistema está sempre equilibrado.) destinada ao ledger (O livro financeiro central que registra todas as transações, saldos e operações de uma organização. É a fonte única de verdade para as finanças de uma unidade de negócio.). O caminho preserva essa intenção de lançamento e a entrega de forma idempotente. O ledger chega à consistência assim que a entrega pelo outbox tem sucesso e o dispatcher lança, o que pode atrasar ou ficar pendente enquanto o roteamento estiver indisponível.

**1. Um evento de domínio produz uma intenção de lançamento**

O Lender persiste uma **intenção de lançamento** durável em um evento de dinheiro. A intenção cai na mesma transação de banco de dados que muda o estado do domínio. O Lender grava a intenção em um **outbox** transacional, então ela sobrevive a uma queda entre "estado mudou" e "ledger contabilizou."

**2. O relay lança uma transação balanceada no Midaz**

Quando o relay do ledger está configurado, um dispatcher do outbox lança a transação balanceada de partidas dobradas pelo SDK oficial. Sem o relay, as intenções de lançamento permanecem no outbox aguardando entrega. As pernas vêm do **perfil contábil** do produto.

**3. A idempotência é durável**

Cada lançamento carrega uma chave de idempotência determinística calculada pelo Lender. Um lançamento repetido colapsa na mesma transação do Midaz. A janela de idempotência do próprio Midaz é uma proteção secundária, não a garantia principal.

**4. O roteamento falha fechado**

A transação é contabilizada na organização de ledger e no ledger que o perfil contábil resolve. Se o roteamento não conseguir resolver um destino não vazio, o lançamento **falha fechado**: o Lender recusa contabilizar em vez de gravar em um destino vazio ou errado.

O Lender chega ao Midaz pelo [Access Manager](https://docs.lerian.studio/pt/platform/access-manager.md). Ele se autentica com credenciais máquina a máquina (M2M) e um JWT de vida curta, por tenant.

## Eventos de ciclo de vida

***

O Lender emite 46 eventos: 45 fatos e um comando. Cada evento que o Lender emite é apoiado no outbox e delimitado por tenant. A emissão em runtime também depende dos controles de funcionalidade aplicáveis. Confira o manifesto em produção e a [Referência de eventos do Lender](https://docs.lerian.studio/pt/reference/events/lender.md) antes de depender de uma definição como integração real.

O Lender usa o contrato v3 de stream de aplicação:

| Elemento de transmissão | Valor |
| - | - |
| Tópico de fatos | `lerian.streaming.lender` |
| Tópico de comandos | `lerian.streaming.lender.commands` |
| header `ce-source` | `lender` |
| header `ce-type` | `studio.lerian.lender.<resource>.<event>` |
| Chave de partição | o tenant |

Todos os fatos compartilham um tópico de aplicação, e todos os comandos compartilham o tópico de comandos. Roteie por `ce-resourcetype` e `ce-eventtype`. A versão de schema viaja em `ce-schemaversion` e não muda o tópico.

Os eventos andam no mesmo outbox do relay do ledger, então compartilham uma garantia de durabilidade. A mudança de estado local e o evento fazem commit juntos em uma única transação de banco de dados. A intenção de lançamento se junta a eles quando a mudança produz uma. O dispatcher do outbox aplica o lançamento no ledger depois, quando repassa a intenção ao Midaz. O estado do Lender e a contabilização no Midaz chegam, portanto, à consistência mais tarde, e não na mesma transação.

> [!NOTE]
>
> O Lender conecta 15 chaves do gateway de folha de pagamento em `lerian.streaming.consignado-gw`. Os consumidores correspondentes são controlados por configuração. O listener de Matcher dele consome `match_run.completed` em `lerian.streaming.matcher`. O contrato bate apenas quando o Matcher usa `STREAMING_CLOUDEVENTS_SOURCE=matcher` e envia `ce-source: matcher`, `ce-type: studio.lerian.matcher.match_run.completed`, `ce-resourcetype: match_run` e `ce-eventtype: completed`. Veja [Eventos do Lender](https://docs.lerian.studio/pt/products/lender/lender-events.md) e [Consignado privado](https://docs.lerian.studio/pt/products/lender/consignado-privado.md).

## Isolamento por tenant

***

Como todo produto Lerian, o Lender é construído para isolamento total entre tenants.

* Eventos e lançamentos no ledger **delimitados por tenant**: cada evento emitido e cada transação do Midaz carrega o tenant a que pertence.

## Observabilidade

***

O Lender emite logs estruturados, traces OpenTelemetry e métricas no mesmo stack de observabilidade do resto da plataforma, incluindo métricas de banco de dados, de asserção e de recuperação de panic. Veja [Observabilidade](https://docs.lerian.studio/pt/platform/observability.md).

## Próximos passos

***

> [card] [Contabilidade e rodadas de apropriação](https://docs.lerian.studio/pt/products/lender/accounting-and-accrual-runs.md)
>
> Aprofunde em regras de lançamento, rodadas de apropriação e referências de diário.

> [card] [Configuração e deploy](https://docs.lerian.studio/pt/products/lender/configuration-and-deploy.md)
>
> Veja as dependências e a configuração que o caminho de lançamento e o stream de eventos exigem.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.