Contrato do stream de aplicação
ce-source:lender- Fatos:
lerian.streaming.lender - Comandos:
lerian.streaming.lender.commands - Roteamento de dead letters:
lerian.streaming.lender.dlq ce-type:studio.lerian.lender.<resource>.<event>- Chave de dispatch:
<resource>.<event>a partir dece-resourcetypeece-eventtype
GET /api/v1/streaming/manifest.
Eventos emitidos
O catálogo declara 39 definições. O Lender emite 37 delas: 35 fatos e 2 comandos. A tabela separa as chaves do catálogo do tipo de roteamento do CloudEvent.Contratos de payload emitidos
Os contratos abaixo espelham as tags JSON dedata do CloudEvent no contrato publicado do Lender. ? significa que o campo pode estar ausente. Os structs de wire em Go não declaram campos de ponteiro anuláveis. unknown é JSON bruto e pode carregar qualquer valor JSON, incluindo null. Valores decimais são strings JSON, os timestamps são strings RFC 3339 em UTC, e YYYYMM é uma competência de seis dígitos.
accounting_profile.configured
accounting_profile.configured
accounting_profile.configuredTópico: lerian.streaming.lenderEsquema: 1.1.0Assunto: profile_ideffective_from é o dia civil em que o plano de contas que ela descreve passa a valer. Sem esse campo, dois eventos sobre a mesma versão de produto descrevem dois planos diferentes e nada no fio diz qual vale em cada mês.assignment_set.approved / assignment_set.accepted
assignment_set.approved / assignment_set.accepted
assignment_set.approved, assignment_set.acceptedTópico: lerian.streaming.lenderEsquema: 1.0.0Assunto: assignment_set_idUma composição de cessão é aprovada de forma durável. O evento identifica a aprovação imutável que determina o arquivo de oferta.risk_retention informa o regime de retenção sob o qual a cessão foi registrada. O campo retained_fraction é a parcela da perda esperada que a instituição mantém depois da venda.collection.payment.*
collection.payment.*
collection.payment.applied, collection.payment.unapplied, collection.payment.reapplied, collection.payment.refundedTópico: lerian.streaming.lenderEsquema: 1.0.0Assunto: application_idloan_application.submitted
loan_application.submitted
loan_application.submittedTópico: lerian.streaming.lenderEsquema: 2.0.0Assunto: loan_application_idloan_application.approved
loan_application.approved
loan_application.approvedTópico: lerian.streaming.lenderEsquema: 2.0.0Assunto: loan_application_idloan_application.rejected
loan_application.rejected
loan_application.rejectedTópico: lerian.streaming.lenderEsquema: 2.0.0Assunto: loan_application_idloan_application.withdrawn
loan_application.withdrawn
loan_application.withdrawnTópico: lerian.streaming.lenderEsquema: 2.0.0Assunto: loan_application_idloan_application.disbursed
loan_application.disbursed
loan_application.disbursedTópico: lerian.streaming.lenderEsquema: 2.0.0Assunto: loan_application_idloan_charge.applied
loan_charge.applied
loan_charge.appliedTópico: lerian.streaming.lenderEsquema: 1.0.0Assunto: loan_account_idloan_product.created
loan_product.created
loan_product.createdTópico: lerian.streaming.lenderEsquema: 1.0.0Assunto: loan_product_idloan_product.activated
loan_product.activated
loan_product.activatedTópico: lerian.streaming.lenderEsquema: 1.0.0Assunto: loan_product_idloan_product.current_version_promoted
loan_product.current_version_promoted
loan_product.current_version_promotedTópico: lerian.streaming.lenderEsquema: 1.0.0Assunto: loan_product_idO produto é o agregado depois do reapontamento, então current_version_id é o novo pino. Contratos já escritos ficam na versão em que nasceram. Apenas novas solicitações passam a originar na versão promovida. O campo promoted_by contém o sujeito autenticado tal como veio. Ele fica vazio quando nenhuma pessoa pediu a promoção.loan_product_version.created
loan_product_version.created
loan_product_version.createdTópico: lerian.streaming.lenderEsquema: 1.0.0Assunto: loan_product_version_idadmitted_borrower_kinds está sempre presente. Um array vazio significa que a versão não admite nenhum tomador.loan_schedule.prepayment_applied
loan_schedule.prepayment_applied
loan_schedule.prepayment_appliedTópico: lerian.streaming.lenderEsquema: 1.0.0Assunto: schedule_version_idloan_schedule.rescheduled
loan_schedule.rescheduled
loan_schedule.rescheduledTópico: lerian.streaming.lenderEsquema: 1.0.0Assunto: schedule_version_idrepayment.recorded
repayment.recorded
repayment.recordedTópico: lerian.streaming.lenderEsquema: 1.0.0Assunto: transaction_idreturned_payment_receivable.opened / returned_payment_receivable.collected / returned_payment_receivable.written_off
returned_payment_receivable.opened / returned_payment_receivable.collected / returned_payment_receivable.written_off
returned_payment_receivable.opened, returned_payment_receivable.collected, returned_payment_receivable.written_offTópico: lerian.streaming.lenderEsquema: 1.0.0Assunto: receivable_idOs três fatos projetam o mesmo agregado por uma única projeção compartilhada, de modo que dois fatos sobre a mesma dívida não podem descrevê-la de formas diferentes. Todo campo está sempre presente. Um campo que ainda não se aplica contém uma string vazia. Ele nunca fica ausente e nunca é null. Leia status para distinguir os estados, não a vacuidade de um campo.Os campos stage e provision_amount trazem o envelhecimento da dívida. Os campos provision_consumed e loss dividem a baixa. O campo reversal_transaction_id é único por recebível e é a âncora à qual uma reentrega do mesmo estorno resolve.repayment_reversal.recorded
repayment_reversal.recorded
repayment_reversal.recordedTópico: lerian.streaming.lenderEsquema: 1.0.0Assunto: transaction_idloan_account.pdd_stage_transitioned
loan_account.pdd_stage_transitioned
loan_account.pdd_stage_transitionedTópico: lerian.streaming.lenderEsquema: 1.0.0Assunto: loan_account_idprepayment_quote.created
prepayment_quote.created
prepayment_quote.createdTópico: lerian.streaming.lenderEsquema: 1.0.0Assunto: quote_idprepayment_settlement.recorded
prepayment_settlement.recorded
prepayment_settlement.recordedTópico: lerian.streaming.lenderEsquema: 1.0.0Assunto: settlement_idloan_account.debt_balance_changed
loan_account.debt_balance_changed
loan_account.debt_balance_changedTópico: lerian.streaming.lenderEsquema: 2.0.0Assunto: loan_account_idloan_account.payment_overdue
loan_account.payment_overdue
loan_account.payment_overdueTópico: lerian.streaming.lenderEsquema: 1.0.0Assunto: loan_account_idloan_account.problem_asset_assessed
loan_account.problem_asset_assessed
loan_account.problem_asset_assessedTópico: lerian.streaming.lenderEsquema: 1.0.0Assunto: loan_account_idO Lender o emite nos dois veredictos. Uma declaração com characterizes_problem_asset igual a false é a única forma de retirar uma caracterização anterior.loan_account.problem_asset_reassessment_overdue
loan_account.problem_asset_reassessment_overdue
loan_account.problem_asset_reassessment_overdueTópico: lerian.streaming.lenderEsquema: 1.0.0Assunto: loan_account_idEste fato é um chamado à revisão. Ele não muda nada no contrato: o estágio, a provisão e a decisão de reconhecimento de receita ficam como estavam. O Lender o emite uma vez por contrato por data de referência, e uma declaração de qualquer veredicto o encerra.consignado.exclusao.requested
consignado.exclusao.requested
consignado.exclusao.requestedTópico: lerian.streaming.lender.commandsEsquema: 1.0.0Assunto: request_refconsignado.redirecionamento.requested
consignado.redirecionamento.requested
consignado.redirecionamento.requestedTópico: lerian.streaming.lender.commandsEsquema: 1.0.0Assunto: request_refpayroll_deduction.refund_required
payroll_deduction.refund_required
payroll_deduction.refund_requiredTópico: lerian.streaming.lenderEsquema: 1.0.0Assunto: receipt_idpayroll_overdeduction.refund_required
payroll_overdeduction.refund_required
payroll_overdeduction.refund_requiredTópico: lerian.streaming.lenderEsquema: 1.0.0Assunto: refund_case_idcollection.instruction.issued
collection.instruction.issued
collection.instruction.issuedTópico: lerian.streaming.lenderEsquema: 1.0.0Assunto: instrument_idguarantee_recovery.cash_allocated
guarantee_recovery.cash_allocated
guarantee_recovery.cash_allocatedTópico: lerian.streaming.lenderEsquema: 1.0.0Assunto: receipt_idCatalogadas, mas não emitidas
Estas duas definições estão presentes no manifest, mas não têm chamador de emissão do Lender fora de teste. Não trate suas formas de origemlender como integrações operacionais.
Eventos consumidos
O Lender conecta 15 chaves de fato do gateway a partir delerian.streaming.consignado-gw e um fato do Matcher a partir de lerian.streaming.matcher. Cada consumidor é controlado por configuração e registrado no bootstrap.
consignado.proposal.accepted. Essa chave não é uma entrada de registro do Lender.
Planos de eventos internos
O Lender também grava tipos de evento de outbox internos para intenções de ledger, trabalho de cobrança e handoffs assinados do hub. Eles são contratos de coordenação locais ao processo, não entradas do catálogo de eventos. Este inventário público os omite propositalmente.Regras de entrega e compatibilidade
- Faça a deduplicação por
(ce-source, ce-id)e torne os handlers idempotentes. - Leia
ce-schemaversionantes de decodificar. A versão é um header do CloudEvents, nunca um sufixo de tópico. - Valores monetários e taxas são strings decimais. Os timestamps são RFC 3339 em UTC.
- Os consumidores de fatos conectados filtram chaves exatas. Eles ignoram e fazem commit dos fatos não correspondentes nos tópicos de aplicação compartilhados. Registros malformados tratados seguem a política de DLQ do consumidor.
- Um identificador de negócio obrigatório ausente impede a emissão ou a execução do comando. O Lender nunca o sintetiza.

