Creado

Juan Robles

Revisado

Juan Robles

Corregido

Juan Robles

Step Function states-dev-refinanced-loan

Descripción

Esta máquina de estados gestiona el flujo de refinanciamiento de préstamos y el seguimiento de pagos. Comienza en estado Pending y avanza según las condiciones de aprobación, pago y vencimiento.

Flujo del refinanciamiento:

  1. Inicio:

    • Un préstamo comienza en Pending.

    • Puede ser PreApproved si cumple condiciones previas o Rejected si no califica.

  2. Aprobación y ejecución:

    • Desde PreApproved, el préstamo puede pasar a Approved o ser Rejected.

    • Un préstamo Approved puede avanzar a diferentes estados según el estado del pago:

      • 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.

      • Accelerated: Se ha acelerado el vencimiento.

  3. 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.

  4. Finalización:

    • Los estados finales son Rejected y PaymentConfirmed.

Diagrama de estados

mermaid-diagram-2025-03-20-145533.png

Fragmento de código

stateDiagram-v2
    [*] --> Pending

    Pending --> PreApproved : "loan-refinanced-pre-approve"
    Pending --> Rejected : "loan-refinanced-reject"

    PreApproved --> Approved : "loan-refinanced-approve"
    PreApproved --> Rejected : "loan-refinanced-reject"

    Approved --> PaymentReported : "payment-reported"
    Approved --> Overdue : "loan-expires"
    Approved --> PaymentConfirmed : "payment-confirmed"
    Approved --> PaymentUnconfirmed : "payment-unconfirmed"
    Approved --> Accelerated : "loan-refinanced-accelerated"

    Accelerated --> Overdue : "auto next day"

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

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

    Overdue --> PaymentReported : "payment-reported"

    Rejected --> [*]
    PaymentConfirmed --> [*]