workspace/projects/gamilit/docs/90-transversal/features/AUDIT-LOGGING-COMPLETO.md
rckrdmrd ea1879f4ad feat: Initial workspace structure with multi-level Git configuration
- Configure workspace Git repository with comprehensive .gitignore
- Add Odoo as submodule for ERP reference code
- Include documentation: SETUP.md, GIT-STRUCTURE.md
- Add gitignore templates for projects (backend, frontend, database)
- Structure supports independent repos per project/subproject level

Workspace includes:
- core/ - Reusable patterns, modules, orchestration system
- projects/ - Active projects (erp-suite, gamilit, trading-platform, etc.)
- knowledge-base/ - Reference code and patterns (includes Odoo submodule)
- devtools/ - Development tools and templates
- customers/ - Client implementations template

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-08 10:44:23 -06:00

5.3 KiB

Schema audit_logging - Sistema de Auditoría y Logging

Schema: audit_logging Propósito: Auditoría completa, logging del sistema y tracking de actividad de usuarios Tablas: 6 Estado: Documentado Última actualización: 2025-11-08


📋 Resumen

El schema audit_logging proporciona un sistema completo de auditoría, logging y analytics con 6 tablas especializadas:

Tabla Propósito Tamaño Esperado
audit_logs Auditoría de acciones del sistema Alto (millones)
system_logs Logs técnicos (errores, debugging) Muy Alto
user_activity_logs Analytics de comportamiento usuario Muy Alto
performance_metrics Métricas de performance Alto
system_alerts Alertas del sistema Medio
user_activity Sesiones y actividad agregada Medio

🗂️ Tablas Principales

1. audit_logs - Auditoría Completa

Propósito: Registro de auditoría de TODAS las acciones del sistema (CRUD, logins, cambios)

Columnas clave:

- event_type TEXT - Tipo de evento (user_login, module_created, etc.)
- action TEXT - Acción (create, read, update, delete)
- resource_type TEXT - Tipo de recurso afectado
- resource_id UUID - ID del recurso
- actor_id UUID - Usuario/sistema que realizó acción
- actor_type TEXT - user|system|api|cron
- old_values JSONB - Valores anteriores
- new_values JSONB - Valores nuevos
- changes JSONB - Diff de cambios
- severity TEXT - debug|info|warning|error|critical
- status TEXT - success|failure|partial

RLS Policies:

  • Admins ven todo
  • Usuarios ven solo sus propias acciones

Uso: Compliance, auditoría de seguridad, forensics


2. system_logs - Logs Técnicos

Propósito: Logs de aplicación (errores, warnings, debugging, performance)

Columnas clave:

- log_level TEXT - TRACE|DEBUG|INFO|WARN|ERROR|FATAL
- message TEXT - Mensaje del log
- module_name TEXT - Módulo origen
- function_name TEXT - Función origen
- exception_type TEXT - Tipo de excepción
- stack_trace TEXT - Stack trace completo
- execution_time_ms INT - Tiempo de ejecución
- memory_usage_mb NUMERIC - Uso de memoria
- environment TEXT - development|staging|production

Índices optimizados:

  • Errores: idx_system_logs_errors (log_level, created_at) WHERE log_level IN ('ERROR', 'FATAL')

Uso: Debugging, monitoring, alerting


3. user_activity_logs - Analytics de Usuario

Propósito: Tracking detallado de interacciones de usuario para analytics

Columnas clave:

- activity_type TEXT - page_view|button_click|exercise_start|exercise_complete|etc.
- page_url TEXT - URL visitada
- session_id TEXT - ID de sesión
- module_id UUID - Módulo educativo (FK débil intencional)
- exercise_id UUID - Ejercicio (FK débil intencional)
- user_agent TEXT - Browser info
- device_type TEXT - desktop|mobile|tablet
- load_time_ms INT - Performance
- interaction_time_ms INT - Tiempo de interacción

Características especiales:

  • FKs débiles (sin constraints) a module_id/exercise_id para permitir eliminación de contenido sin afectar analytics históricos
  • Tracking de coordinates (clicks en pantalla)
  • Metadatos de browser/device para analytics

Uso: Producto analytics, UX optimization, engagement metrics


4. performance_metrics

Propósito: Métricas de performance del sistema

Uso: APM (Application Performance Monitoring)


5. system_alerts

Propósito: Alertas del sistema y notificaciones operacionales

Uso: Monitoring, incident management


6. user_activity

Propósito: Actividad agregada de usuario (sesiones, tiempo online)

Uso: Engagement tracking, tiempo de uso


🔒 Seguridad

RLS habilitado en todas las tablas:

  • Solo admins pueden ver/modificar logs
  • Usuarios pueden ver solo sus propios registros
  • Sistema puede insertar con SECURITY DEFINER

🧹 Mantenimiento

Limpieza automática:

  • public.cleanup_old_system_logs() - Default: 90 días
  • public.cleanup_old_user_activity() - Default: 180 días

Recomendación: Ejecutar limpieza semanal/mensual vía cron


📊 Queries Útiles

-- Top 10 usuarios más activos (última semana)
SELECT user_id, COUNT(*) as activities
FROM audit_logging.user_activity_logs
WHERE created_at > NOW() - INTERVAL '7 days'
GROUP BY user_id
ORDER BY activities DESC
LIMIT 10;

-- Errores críticos últimas 24h
SELECT COUNT(*), event_type
FROM audit_logging.audit_logs
WHERE severity = 'critical'
  AND created_at > NOW() - INTERVAL '24 hours'
GROUP BY event_type;

-- Performance degradation
SELECT AVG(load_time_ms) as avg_load_time,
       DATE_TRUNC('hour', created_at) as hour
FROM audit_logging.user_activity_logs
WHERE activity_type = 'page_view'
  AND created_at > NOW() - INTERVAL '24 hours'
GROUP BY hour
ORDER BY hour DESC;

🔗 Referencias

Épica: Alcance Inicial (probablemente EAI-006 o EAI-007) RF: RF-AUD-001 (Sistema de Auditoría - ya existe) Funciones relacionadas:

  • public.log_system_event() - Inserta en system_logs
  • public.cleanup_old_system_logs() - Mantenimiento
  • public.cleanup_old_user_activity() - Mantenimiento

Issue: ISSUE-004 RESUELTO Creado: 2025-11-08 Tipo: Documentación transversal consolidada