Auditoría ITSS (`audit/`)
Exportar contenido
Ver Logs de Auditoría
Sección titulada «Ver Logs de Auditoría»Ruta: /owner/hr/audit
Registro inmutable de todas las operaciones sensibles del sistema.
Eventos Registrados
Sección titulada «Eventos Registrados»Fichajes:
- Entrada y salida de empleados
- Correcciones de fichajes
- Firmas digitales generadas
Ausencias:
- Solicitudes creadas
- Aprobaciones/Rechazos
- Modificaciones de saldos
Nóminas:
- Generación de nóminas
- Modificaciones de conceptos
- Exportaciones realizadas
Empleados:
- Altas y bajas
- Modificaciones de datos
- Cambios de permisos
Estructura de Log
Sección titulada «Estructura de Log»Cada evento contiene:
{ "id": "uuid", "timestamp": "2024-01-15T10:30:45Z", "action": "attendance_correction_approved", "actor": { "user_id": "uuid", "name": "María García", "role": "manager" }, "target": { "employee_id": "uuid", "employee_name": "Juan Pérez" }, "changes": { "before": {...}, "after": {...} }, "metadata": { "ip_address": "192.168.1.1", "user_agent": "Mozilla/5.0...", "device": "desktop" }, "compliance_flags": { "itss_relevant": true, "lopd_sensitive": false }}Trazabilidad de Cambios
Sección titulada «Trazabilidad de Cambios»El sistema mantiene trazabilidad completa de modificaciones.
Cadena de Cambios
Sección titulada «Cadena de Cambios»Para cada registro modificado, se mantiene:
- Versión Original: Registro inicial
- Versión Actual: Estado actual
- Historial: Todas las modificaciones intermedias
- Responsables: Quién hizo cada cambio
- Motivos: Razón de cada modificación
Exportación para Inspecciones
Sección titulada «Exportación para Inspecciones»1. Acceder a auditoría ITSS2. Seleccionar rango de fechas3. Filtrar por empleado (opcional)4. Click en "Generar Informe ITSS"5. Sistema genera PDF con: - Todos los fichajes del período - Firmas digitales - Correcciones aplicadas - Responsables de cada cambio6. Descargar informe7. Preparado para entrega a inspecciónDetalles Técnicos
Tabla: hr_audit_logs
CREATE TABLE hr_audit_logs ( id UUID PRIMARY KEY, timestamp TIMESTAMP DEFAULT NOW(), action TEXT NOT NULL, actor_id UUID NOT NULL, employee_id UUID, business_id UUID NOT NULL, changes JSONB NOT NULL, metadata JSONB, ip_address INET, user_agent TEXT, -- Inmutabilidad garantizada por RLS -- Solo inserción, nunca actualización o borrado CHECK (created_at IS NOT NULL));
-- Política RLS de solo inserciónCREATE POLICY "Audit logs are insert only"ON hr_audit_logs FOR INSERTWITH CHECK (true);
CREATE POLICY "Audit logs are read only for authorized"ON hr_audit_logs FOR SELECTUSING ( business_id IN ( SELECT business_id FROM employees WHERE user_id = auth.uid() AND role IN ('owner', 'hr_admin', 'auditor') ));
-- NUNCA permitir UPDATE ni DELETEComponente: AuditTrailViewer.tsx
Búsqueda y Filtrado:
// Búsqueda por texto completo en JSONBSELECT * FROM hr_audit_logsWHERE changes @> '{"employee_name": "Juan"}';
// Filtro por tipo de acciónSELECT * FROM hr_audit_logsWHERE action LIKE 'attendance_%';
// Filtro por rango de fechasSELECT * FROM hr_audit_logsWHERE timestamp BETWEEN '2024-01-01' AND '2024-01-31';