Creado

Elvis Bonilla

Revisado

Juan Robles

Corregido

Juan Robles

Step Function states-dev-extended-loan

Descripción

Esta máquina de estados maneja el flujo de extensión y refinanciamiento de préstamos. Los préstamos comienzan en estado Pending y pueden avanzar a estados aprobados, rechazados, vencidos o refinanciados según distintos eventos.

Flujo del préstamo:

  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 según el estado del pago:

      • PaymentReported: El pago ha sido reportado.

      • PaymentConfirmed: El pago se ha completado con éxito.

      • PaymentUnconfirmed: Hay incertidumbre sobre el pago.

      • Overdue: El préstamo ha vencido.

      • Refinanced: Se ha aprobado una refinanciación.

      • Accelerated: Se ha acelerado el vencimiento por incumplimiento.

  3. Gestión de pagos:

    • PaymentReported puede avanzar a PaymentConfirmed o PaymentUnconfirmed.

    • PaymentUnconfirmed puede confirmarse, reportarse de nuevo o volverse Overdue.

    • Overdue permite reportar el pago o iniciar una preaprobación para refinanciar.

  4. Refinanciamiento:

    • RefinancedPreApprove evalúa si el préstamo puede refinanciarse.

    • Puede ser Refinanced si se aprueba o volver a Overdue si se rechaza.

  5. Finalización:

    • Los estados finales son Rejected, PaymentConfirmed y Refinanced.

Diagrama de estados

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

Fragmento de código

stateDiagram-v2
    [*] --> Pending

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

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

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

    Approved --> Accelerated : "overdue-accelerated"
    Accelerated --> Overdue : "auto"

    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 --> RefinancedPreApprove : "loan-refinanced-pre-approve"

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

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