Lapachos Lending : Ciclo de vencimiento de cuotas de un préstamo

Creado

Francisco Adrianza

18/07/2025

Step Function: installment-cycle

Descripcion

La máquina de estado installment-cycle gestiona el ciclo de pagos de préstamos con múltiples cuotas. Automatiza la espera, ejecución y validación de cada cuota (cuando el prestamo tiene pagos automaticos), permitiendo que el préstamo avance correctamente hasta su finalización.

Esta maquina reemplaza a la creacion de la maquina de loan-expiration(vencimiento del prestamo) cuando el prestamo sera pagado por cuotas, permitiendo manejar multiples fechas de vencimiento de cada cuota en lugar del vencimiento de un pago unico.

Parámetros recibidos

  1. transaction_id: Identificador único del préstamo al que pertenecen las cuotas.

  2. installment_id: Identificador de la cuota actual que se está procesando.

  3. next_due_date: Fecha de vencimiento de la próxima cuota a procesar.

  4. is_last_installment: Indica si la cuota actual es la última del préstamo (true/false).

  5. nextInstallmentNumber: Número de la siguiente cuota a procesar (usado para avanzar en el ciclo).

  6. taskToken: Token para integración y control externo de la ejecución (usado en la rama de control).

  7. environment: Entorno de ejecución (demo, test, prod), utilizado para definir tiempos de espera.

Flujo de Estados

  1. Inicialización en paralelo

    • Se ejecutan dos ramas:

      • Rama 1: Guarda el task token para la gestión externa, como la expiracion manual de una cuota.

      • Rama 2: Inicia el ciclo de cuotas.

  2. Ciclo de cuotas

    • WaitForInstallmentDueDate: Espera hasta la fecha de vencimiento de la siguiente cuota a pagar.

    • TriggerInstallment: Ejecuta la lógica de expiración de la cuota (pago automático).

    • setWaitTime: Calcula el tiempo de espera (24h en producción, 10s en demo/test).

    • Wait24Hours: Espera el tiempo configurado para validar el pago.

    • ValidateInstallment: Valida si la cuota fue pagada y si es la última, y en base a estos dos datos devuelve diferentes respuestas. (Manejaria la logica de cuando una cuota entre en moroso)

    • IsLastInstallment: Decide el siguiente paso:

      • Si es la última cuota → Termina la rama.

      • Si no → Obtiene la siguiente cuota y WaitForInstallmentDueDate con la fecha de la siguiente cuota para repetir el ciclo.

Diagrama

stepfunctions_graph.png

Attachments: