4.1 Estados: Ciclo de Vida del Usuario
Este diagrama de máquina de estados modela las transiciones que experimenta una cuenta de usuario en Mañuti, gobernadas por la columna cat_status vinculada al diccionario maestro de catálogos.
1. Explicación y Semántica del Diagrama
El ciclo de vida del operador está blindado contra cambios arbitrarios y cuenta con transiciones automáticas y administrativas:
USR_ACTIVO: Estado nominal. El operador puede autenticarse, consumir APIs y navegar en las vistas permitidas por su rol.USR_BLOQUEO_TEMP: Transición automática disparada por elRateLimiteral registrarse más de 5 intentos fallidos consecutivos de login. Se desbloquea automáticamente (Lazy Unlock) si transcurren 3 minutos y se ingresa la contraseña correcta.USR_SUSPENDIDO: Transición manual ejecutada por un administrador. Bloquea el acceso de forma indefinida sin borrar el registro.Soft Deleted: Eliminación lógica mediante la marca de tiempodeleted_at. Oculta la cuenta de las grillas ordinarias pero preserva las relaciones de auditoría e integridad referencial.
2. Cómo se Lee este Diagrama
- Los estados se representan como cajas con esquinas redondeadas.
- Las flechas indican transiciones válidas provocadas por eventos (etiquetas de texto).
- El círculo relleno
[*]indica el estado inicial (alta de la cuenta) y el estado final de terminación (eliminación definitiva).
3. Implementación en el Framework Mañuti
- Catálogo Base: Agrupador
SYS_ESTATUS_USUARIOen la tablacatalogos. - Controladores:
AuthControllergestiona las transiciones automáticas a bloqueo temporal y reactivación;UserControlleradministra las suspensiones y borrados lógicos.
4. Diagrama Mermaid
stateDiagram-v2
%% Definición de estados
state "USR_ACTIVO" as Activo
state "USR_BLOQUEO_TEMP" as Bloqueado
state "USR_SUSPENDIDO" as Suspendido
state "Soft Deleted" as Eliminado
%% Descripciones de los estados
note right of Bloqueado : RateLimiter excedido (5 intentos)
note right of Suspendido : Baja Administrativa
%% Transiciones iniciales
[*] --> Activo : Registro / Alta
%% Transiciones de Bloqueo
Activo --> Bloqueado : Login Fallido (más de 5 veces)
Bloqueado --> Activo : Login Exitoso (Tras 3 min)
%% Transiciones de Suspensión
Activo --> Suspendido : Admin cambia estatus
Bloqueado --> Suspendido : Admin cambia estatus
Suspendido --> Activo : Admin reactiva cuenta
%% Transiciones de Eliminación
Activo --> Eliminado : Admin elimina usuario
Suspendido --> Eliminado : Admin elimina usuario
Eliminado --> [*]