Creado | ||
Revisado | ||
Corregido |
|
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:
Inicio:
Un préstamo comienza en Pending.
Puede ser PreApproved si cumple condiciones previas o Rejected si no califica.
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.
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.
Refinanciamiento:
RefinancedPreApprove evalúa si el préstamo puede refinanciarse.
Puede ser Refinanced si se aprueba o volver a Overdue si se rechaza.
Finalización:
Los estados finales son Rejected, PaymentConfirmed y Refinanced.
Diagrama de estados
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 --> [*]
