Creado

Elvis Bonilla

Revisado

Juan Robles

Actualizado

Juan Robles

Step Function states-dev-base-loan

Descripción

Esta máquina de estados gestiona el ciclo de vida de un préstamo desde su estado Pending hasta su liquidación o refinanciamiento. Incluye opciones para aprobación, pagos, vencimientos y extensiones.

Flujo del préstamo:

  1. Inicio:

    • Un préstamo comienza en Pending y puede pasar a Approved si cumple las condiciones necesarias.

  2. Ejecución y seguimiento:

    • Un préstamo Approved puede moverse a distintos estados según su actividad:

      • PaymentReported: El pago ha sido registrado.

      • PaymentConfirmed: El pago ha sido validado con éxito.

      • PaymentUnconfirmed: Hay incertidumbre sobre el pago.

      • Overdue: El préstamo ha vencido.

      • Refinanced: Se ha aprobado un refinanciamiento.

      • PreApprovedExtension: Se considera una extensión antes del vencimiento.

      • Accelerated: Se ha acelerado el vencimiento.

  3. Extensión del préstamo:

    • Si está en PreApprovedExtension, el préstamo puede ser Extended si la extensión es aprobada o Overdue si se rechaza.

  4. Gestión de pagos:

    • PaymentReported puede avanzar a PaymentConfirmed o PaymentUnconfirmed.

    • PaymentUnconfirmed puede confirmarse, reportarse nuevamente o volverse Overdue.

    • Overdue permite reportar el pago nuevamente o preaprobar un refinanciamiento.

  5. Refinanciamiento:

    • Desde Overdue, puede pasar a PreApprovedRefinance.

    • Si el refinanciamiento es aprobado, el préstamo se mueve a Refinanced. Si se rechaza, permanece en Overdue.

  6. Finalización:

    • Un préstamo finaliza en PaymentConfirmed, Extended o Refinanced.

Diagrama de estados

mermaid-diagram-2025-03-21-115749.png

Fragmento de código

stateDiagram-v2
    [*] --> Pending

    Pending --> Approved : "pending"
    Approved --> PaymentReported : "payment-reported"
    Approved --> Overdue : "loan-expires"
    Approved --> Refinanced : "loan-refinanced-approve"
    Approved --> PaymentConfirmed : "payment-confirmed"
    Approved --> PaymentUnconfirmed : "payment-unconfirmed"
    Approved --> PreApprovedExtension : "pre-approve-extension"
    Approved --> Accelerated : "overdue-accelerated"
    
    Accelerated --> Overdue : "auto next-day"
    
    PreApprovedExtension --> Extended : "approve-extension"
    PreApprovedExtension --> Overdue : "reject-extension"

    PaymentReported --> PaymentConfirmed : "payment-confirmed"
    PaymentReported --> PaymentUnconfirmed : "payment-unconfirmed"

    PaymentUnconfirmed --> PaymentConfirmed : "payment-confirmed"
    PaymentUnconfirmed --> Overdue : "loan-expires"
    PaymentUnconfirmed --> PaymentReported : "payment-reported"

    Overdue --> PaymentReported : "payment-reported"

    Overdue --> PreApprovedRefinance : "pre-approve-refinance"

    PreApprovedRefinance --> Refinanced : "loan-refinanced-approve"
    PreApprovedRefinance --> Overdue : "loan-refinanced-reject"

    PaymentConfirmed --> [*]
    Extended --> [*]
    Refinanced --> [*]