resources/views/pages/frontend/docs/uml-estados-usuario.md
Última modificación: 24 Oct, 2026

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 el RateLimiter al 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 tiempo deleted_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_USUARIO en la tabla catalogos.
  • Controladores: AuthController gestiona las transiciones automáticas a bloqueo temporal y reactivación; UserController administra 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 --> [*]

Enlaces Relacionados

Edita este documento en >> uml-estados-usuario.md
← Volver a la Landing Page