Auditoría del Sistema

Registro de actividades • {periodFilter === 'today' ? 'Hoy' : periodFilter === 'yesterday' ? 'Ayer' : periodFilter === 'last7days' ? 'Últimos 7 días' : periodFilter === 'last30days' ? 'Últimos 30 días' : 'Período personalizado'}

{#if periodFilter === 'custom'}
{/if}
{#if canSeeAllTenants}
{#if allTenants} Multi-tenant activo {/if}
{/if} {#if stats}
Total
{stats.total_actions.toLocaleString()}
Hoy
{stats.actions_today}
Esta Semana
{stats.actions_this_week}
Vulnerabilidad
{stats.critical_actions_today}
Acciones críticas hoy
{/if}
{#if showAdvancedFilters}
{#if activeFiltersCount > 0}
{/if}
{/if}

Registros de Auditoría

{totalLogs} registros
{#if isLoading}

Cargando registros...

{:else if logs.length === 0}

No hay registros

{periodFilter === 'today' ? 'No hay actividad registrada hoy.' : 'No se encontraron registros para el período seleccionado.'}

{:else}
{#each logs as log (log.id)}
{#if log.user_email}
{(log.user_name || '?').charAt(0).toUpperCase()}
{:else}
{/if}
{formatDateShort(log.created_at)} {formatActionText(log.action)}
{log.user_name || 'Sistema'} • {getRoleText(log.user_role)}
{log.resource_type} {#if log.ip_address} • {log.ip_address} {/if}
{/each}
{#if totalPages > 1}
Página {currentPage} de {totalPages}
{/if} {/if}
{#if showDetailModal && selectedLog} showDetailModal = false}>

Información General

Fecha y Hora:
{formatDate(selectedLog.created_at)}
Usuario:
{selectedLog.user_name || 'Sistema'}
Email:
{selectedLog.user_email || 'N/A'}
{#if selectedLog.user_role}
Rol:
{getRoleText(selectedLog.user_role)}
{/if}
IP:
{selectedLog.ip_address || 'N/A'}
Correlation ID:
{selectedLog.correlation_id || 'N/A'}

Acción

{selectedLog.action}

{formatActionText(selectedLog.action)}

Recurso Afectado

Tipo: {selectedLog.resource_type}
{#if selectedLog.resource_id}
ID: {selectedLog.resource_id}
{/if}
{#if selectedLog.user_agent}

Navegador / Dispositivo

{selectedLog.user_agent}
{/if} {#if selectedLog.old_values && Object.keys(selectedLog.old_values).length > 0}

Valores Anteriores

{JSON.stringify(selectedLog.old_values, null, 2)}
{/if} {#if selectedLog.new_values && Object.keys(selectedLog.new_values).length > 0}

Valores Nuevos

{JSON.stringify(selectedLog.new_values, null, 2)}
{/if} {#if selectedLog.metadata && Object.keys(selectedLog.metadata).length > 0}

Información Adicional

{JSON.stringify(selectedLog.metadata, null, 2)}
{/if}
{/if}