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

3.2 Secuencia: Auditoría Híbrida

Este diagrama modela la orquestación no bloqueante del registro de actividad forense entre el middleware interceptor, la memoria de colas en Redis, los demonios de Horizon y el motor de persistencia en MongoDB.


1. Explicación y Semántica del Diagrama

El objetivo es demostrar visualmente cómo Mañuti logra registrar eventos de auditoría complejos sin introducir latencia en la experiencia del operador:

  1. Interceptación: El cliente envía una petición HTTP que atraviesa AuditMiddleware.
  2. Continuación Inmediata: El middleware invoca $next($request) para permitir que los controladores procesen la lógica de negocio y retornen la respuesta HTTP inmediatamente al cliente.
  3. Fase Post-Respuesta (Terminable):
    • El middleware captura el código de estado retornado (200 OK, 302, 500).
    • Inspecciona las directivas @can asociadas a la ruta y consulta en caché si la capacidad es auditable.
    • Sanitiza el payload eliminando contraseñas, tokens CSRF y serializando metadatos de archivos.
  4. Despacho Asíncrono: Despacha la tarea ProcessAuditLog a Redis en microsegundos y libera el hilo.
  5. Persistencia en Segundo Plano: Un worker en el clúster de Horizon extrae el job de Redis e inserta el documento BSON en la colección auditoria de MongoDB.

2. Cómo se Lee este Diagrama

  • Las llamadas hacia App y el retorno hacia Client suceden antes de que los datos toquen MongoDB.
  • El bloque par (Proceso Asíncrono) representa una línea de ejecución paralela e independiente de la conexión del navegador del usuario.

3. Implementación en el Framework Mañuti

  • Middleware: App\Http\Middleware\AuditMiddleware.
  • Job: App\Jobs\ProcessAuditLog.
  • Persistencia: App\Models\AuditLog con conexión mongodb.

4. Diagrama Mermaid

sequenceDiagram
    autonumber

    actor Client as Cliente HTTP
    participant Mid as AuditMiddleware
    participant App as Laravel App

    box rgba(0, 0, 0, 1) Infraestructura Asíncrona
        participant Redis as Redis (Queue)
        participant Worker as Horizon Worker
        participant Mongo as MongoDB
    end

    Client->>Mid: HTTP Request (POST /usuarios)
    activate Mid

    Mid->>App: next(request)
    activate App
    App-->>Mid: Response (200 OK)
    deactivate App

    opt Lógica de Auditoría (Post-Request)
        Mid->>Mid: Detectar Permiso (@can)
        Mid->>Mid: Verificar si es Auditable (Cache/DB)
        
        alt Es Auditable
            Mid->>Mid: Preparar Payload (Sanitizar Passwords)
            Mid->>Redis: Dispatch ProcessAuditLog (JSON)
            Note right of Mid: Operación rápida (ms)
        end
    end

    Mid-->>Client: HTTP Response
    deactivate Mid

    opt Procesamiento en Background
        Worker->>Redis: Pop Job
        activate Worker
        Worker->>Mongo: Insert Documento JSON
        deactivate Worker
    end

Enlaces Relacionados

Edita este documento en >> uml-secuencia-auditoria.md
← Volver a la Landing Page