Creado | 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
transaction_id: Identificador único del préstamo al que pertenecen las cuotas.installment_id: Identificador de la cuota actual que se está procesando.next_due_date: Fecha de vencimiento de la próxima cuota a procesar.is_last_installment: Indica si la cuota actual es la última del préstamo (true/false).nextInstallmentNumber: Número de la siguiente cuota a procesar (usado para avanzar en el ciclo).taskToken: Token para integración y control externo de la ejecución (usado en la rama de control).environment: Entorno de ejecución (demo,test,prod), utilizado para definir tiempos de espera.
Flujo de Estados
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.
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.
