Skip to main content
Lender necesita un conjunto pequeño de cosas listas antes de su primera llamada de API. Esta página las lista en el orden en que las configuras. Cuando cada ítem de aquí se cumple, sigue el Inicio rápido para originar un préstamo.

Servicios de los que depende Lender


PostgreSQL y Valkey son obligatorios para originar. Un proveedor de identidad es obligatorio cuando la autorización por ruta está habilitada. Producción lo requiere. Un primer préstamo no necesita Midaz ni RedPanda. Lee Asientos en el ledger más abajo para saber qué queda esperando.

Ejecutar Lender localmente


Lender es un solo servicio en Go. Una ejecución local necesita el toolchain de Go 1.26 o posterior, Docker con Compose y Make.
1

Crear el archivo de entorno

make set-env copia config/.env.example a config/.env. Edita ese archivo para cada ajuste de esta página.
2

Arrancar las dependencias

make up arranca las dependencias de Compose y el servicio en el puerto 8080.
3

Aplicar las migraciones

make migrate-up aplica ambos conjuntos de migración. Consulta la siguiente sección.
4

Ejecutar con recarga en vivo

make dev ejecuta el servicio con Air.

Aplicar ambos conjuntos de migración


Lender no migra la base de datos cuando arranca. Las migraciones las aplicas por fuera, y hay dos conjuntos: Aplica ambos. make migrate-up lee ambas rutas. El conjunto core también siembra el registro de jurisdicciones: dos jurisdicciones activas, BR para Brasil y XX, el perfil genérico. Ninguna API crea una jurisdicción. El binario desplegado lleva el comportamiento de cada perfil, y la tabla registra qué códigos conoce ese binario. Lee Jurisdicciones para saber qué decide un perfil.

Configuración obligatoria


El outbox de PostgreSQL es obligatorio y se inicializa de forma automática. Configura la autenticación cuando tu despliegue habilita la autorización por ruta.

Un sujeto autenticado: cuando PLUGIN_AUTH_ENABLED=true

Lender registra quién actuó sobre cada solicitud de préstamo. Lee el oficial asignado desde el sujeto del Bearer token, no desde el body de la solicitud. Por eso cada llamada de solicitud de préstamo necesita una identidad autenticada. Define dos variables: Luego envía un Bearer token en cada llamada. El token necesita un claim de sujeto no vacío, y bajo el perfil genérico XX el mismo sujeto debe crear, aprobar y desembolsar la solicitud. Lender define sus roles y permisos en un archivo de semilla. Carga esa semilla en tu proveedor de identidad. El rol del oficial necesita estos permisos:

Un sumidero de asientos durable: siempre presente

Un préstamo desembolsado registra su intención de asiento de forma durable. Lender inicializa su outbox transaccional de PostgreSQL en cada despliegue, dentro de la misma transacción de base de datos que mueve la solicitud a disbursed. OUTBOX_ENABLED no existe. El despachador transmite cada intención después, con la cadencia que define OUTBOX_DISPATCH_INTERVAL_SEC. Lee Contabilidad y ejecuciones de devengo para saber qué recibe el ledger.

Asientos en el ledger


Apunta Lender a Midaz cuando quieras que los asientos aterricen en el ledger: El préstamo se origina con o sin estas. Hasta que configures un endpoint de ledger, las intenciones de asiento permanecen durables en el outbox y el asiento del ledger espera. Configura el ledger antes de esperar contabilizaciones.

Valores predeterminados single-tenant


MULTI_TENANT_ENABLED es false de forma predeterminada. En ese modo DEFAULT_TENANT_ID identifica al único tenant, y debe ser un UUID válido.

Agregados multi-tenant


El modo multi-tenant le da a cada tenant su propio esquema y su propio pool de clientes de ledger. Agrega cuatro requisitos:
  1. Define MULTI_TENANT_ENABLED=true y apunta Lender al tenant manager.
  2. Cada token lleva un claim tenantId.
  3. public.tenant_jurisdictions lleva una fila por cada par de tenant y jurisdicción.
  4. Cada perfil contable declara su propio midazOrganizationId y midazLedgerId. El modo multi-tenant no recurre a los valores predeterminados del entorno.

Streaming de eventos


El streaming está apagado de forma predeterminada y la originación no lo necesita. Para publicar el catálogo de eventos de ciclo de vida, define STREAMING_ENABLED=true, apunta STREAMING_BROKERS a RedPanda y define STREAMING_CLOUDEVENTS_SOURCE=lender. Lender valida ese valor de fuente cuando arranca.

Lista de verificación


  • PostgreSQL 17 y Valkey 8 accesibles.
  • Ambos conjuntos de migración aplicados.
  • Cuando la autorización por ruta está habilitada, define PLUGIN_AUTH_ENABLED=true, confirma que el proveedor de identidad es accesible y usa un Bearer token con un sujeto y cada permiso de la tabla de arriba.
  • DEFAULT_TENANT_ID un UUID válido, en modo single-tenant.

Próximos pasos


Inicio rápido

Seis llamadas desde una base de datos vacía hasta un préstamo desembolsado.

Configuración y despliegue

La forma completa del contenedor, la superficie de entorno más amplia y la ruta de asiento en el ledger.