1.1 Diagrama General de Casos de Uso
Este diagrama modela la vista funcional de alto nivel de Mañuti, delimitando las fronteras entre los actores que interactúan con el sistema y los límites de cada paquete o subsistema operativo.
1. Explicación y Semántica del Diagrama
El modelado define qué operaciones de negocio pueden ser iniciadas y por quién, aislando los permisos de administración de los accesos públicos:
- Actores:
- Invitado (Guest): Usuario anónimo sin sesión activa en el protocolo HTTP. Solo interactúa con la puerta de enlace perimetral (Login y recuperación de contraseña).
- Usuario Registrado: Operador autenticado. Posee credenciales válidas y gestiona su propio perfil extendido (EAV).
- Administrador: Operador con capacidades elevadas otorgadas por el sistema RBAC Aditivo. Orquesta identidades, catálogos, configuraciones y bitácoras forenses.
- Sistema (Horizon/Cron): Actor automatizado no humano. Ejecuta tareas en segundo plano, balanceo de colas, purga de logs y eventos asíncronos.
- Paquetes Lógicos:
Módulo de Autenticación: Puntos de entrada y salida protegidos contra ataques CSRF y fuerza bruta.Gestión de Usuarios y Perfil: Administración de cuentas, catálogo de capacidades y atributos dinámicos EAV.Seguridad y Auditoría: Observabilidad forense inmutable en MongoDB, bitácora de accesos y monitor de concurrencia.Configuración: Mantenimiento dinámico de variables del sistema y diccionarios de datos recursivos.
2. Cómo se Lee este Diagrama
- De izquierda a derecha: Los actores inician los casos de uso señalados por flechas continuas sólidas (
-->). - Límites de Sistema (
subgraph): Cada caja agrupa responsabilidades afines; un actor solo puede ejecutar casos de uso contenidos dentro de cajas para las cuales su rol tenga capacidades registradas. - Línea de Servicio Automatizado: La flecha del actor
Sistemahacia el caso de usoUC7representa la ejecución asíncrona de jobs mediante workers de Horizon, sin intervención de una interfaz gráfica humana.
3. Implementación en el Framework Mañuti
- Rutas de Invitado: Enrutadas bajo el middleware
guestenroutes/web.php(/login,/forgot-password). - Rutas de Usuario: Enlazadas al middleware
authy al controlador de perfilApp\Http\Controllers\ProfileController. - Rutas de Administración: Blindadas por la combinación de middlewares
['auth', 'no-cache', 'auditar', 'check.session', 'can:...']. - Procesamiento del Sistema: Automatizado vía
php artisan horizony el planificador enroutes/console.php.
4. Diagrama Mermaid
flowchart LR
%% Actores
Guest("Invitado")
User("Usuario Registrado")
Admin("Administrador")
System("Sistema (Horizon/Cron)")
%% Módulos
subgraph "Módulo de Autenticación"
UC1(["Iniciar Sesión (Dual)"])
UC2(["Recuperar Contraseña"])
end
subgraph "Gestión de Usuarios y Perfil"
UC3(["Gestionar Perfil (EAV)"])
UC4(["Gestionar Usuarios (CRUD)"])
UC5(["Asignar Roles y Permisos"])
end
subgraph "Seguridad y Auditoría"
UC6(["Ver Bitácora de Accesos"])
UC7(["Ver Auditoría Forense (Mongo)"])
UC8(["Gestionar Sesiones Activas"])
end
subgraph "Configuración"
UC9(["Administrar Catálogos"])
UC10(["Configuración Global"])
end
%% Relaciones
Guest --> UC1
Guest --> UC2
User --> UC1
User --> UC3
Admin --> UC3
Admin --> UC4
Admin --> UC5
Admin --> UC6
Admin --> UC7
Admin --> UC8
Admin --> UC9
Admin --> UC10
System -->|Procesa Jobs en background| UC7