workspace-v1/orchestration/reportes/ANALISIS-TABLAS-AUDITORIA-2026-01-07.md
rckrdmrd e56e927a4d [MAINT-001] docs(orchestration): Actualizacion directivas SIMCO, perfiles y documentacion
Cambios incluidos:
- INDICE-DIRECTIVAS-WORKSPACE.yml actualizado
- Perfiles de agentes: PERFIL-ML.md, PERFIL-SECURITY.md
- Directivas SIMCO actualizadas:
  - SIMCO-ASIGNACION-PERFILES.md
  - SIMCO-CCA-SUBAGENTE.md
  - SIMCO-CONTEXT-ENGINEERING.md
  - SIMCO-CONTEXT-RESOLUTION.md
  - SIMCO-DELEGACION-PARALELA.md
- Inventarios actualizados: DEVENV-MASTER, DEVENV-PORTS
- Documentos de analisis agregados:
  - Analisis y planes de fix student portal
  - Analisis scripts BD
  - Analisis achievements, duplicados, gamification
  - Auditoria documentacion gamilit
  - Backlog discrepancias NEXUS
  - Planes maestros de resolucion
- Reportes de ejecucion agregados
- Knowledge base gamilit README actualizado
- Referencia submodulo gamilit actualizada (commit beb94f7)

Validaciones:
- Plan validado contra directivas SIMCO-GIT
- Dependencias verificadas
- Build gamilit: EXITOSO
2026-01-10 04:51:28 -06:00

6.2 KiB

ANALISIS DE TABLAS DE AUDITORIA

Proyecto GAMILIT - Fase B1

Fecha: 2026-01-07 Estado: ANALISIS COMPLETADO


RESUMEN EJECUTIVO

Metrica Valor
Tablas analizadas 8
Tablas con solapamiento critico 3
Tablas a mantener separadas 3
Tabla deprecated 1
Reduccion propuesta 37.5% (8 -> 5)

LAS 8 TABLAS ANALIZADAS

# Tabla Proposito Lineas Estado
1 audit_logs Auditoria completa de acciones 124 Activa
2 performance_metrics Metricas de rendimiento 102 Activa
3 system_alerts Alertas del sistema 131 Activa
4 system_logs Logs del sistema 115 Activa
5 user_activity_logs Analytics de usuarios (educativo) 119 Activa
6 activity_log Admin dashboard 219 Activa
7 user_activity Actividad simplificada 43 DEPRECATED
8 pending_user_initialization Retry de inicializacion 136 Activa

SOLAPAMIENTOS IDENTIFICADOS

CRITICO: user_activity (DEPRECATED)

Problema: Tabla user_activity duplica exactamente la funcionalidad de activity_log

Aspecto user_activity activity_log
Columnas 8 10
Proposito Activity logging Activity logging
Estado DEPRECATED Activa
Referencias backend 13+ Principal

Recomendacion: ELIMINAR user_activity, migrar referencias a activity_log

ALTO: audit_logs + system_logs

Solapamiento: 70%

Columna Compartida audit_logs system_logs
tenant_id Si Si
actor/user_id Si Si
request_id Si Si
correlation_id Si Si
error_code Si Si
error_message Si Si
stack_trace Si Si
timestamps Si Si

Diferencias:

  • audit_logs: old_values, new_values, changes (cambios de datos)
  • system_logs: line_number, execution_time_ms, memory_usage (ejecucion)

Recomendacion: Consolidar en audit_logs_unified con campo discriminador

MEDIO: user_activity_logs + activity_log

Solapamiento: 60%

Columna Compartida user_activity_logs activity_log
user_id Si Si
activity/action_type Si Si
description Si Si
metadata Si Si
ip_address Si Si
user_agent Si Si

Diferencias:

  • user_activity_logs: module_id, exercise_id, classroom_id (educativo)
  • activity_log: entity_type, entity_id (generico)

Recomendacion: Consolidar en user_event_log con JSONB flexible


TABLAS A MANTENER SEPARADAS

Tabla Razon
performance_metrics Datos operacionales (time-series), no eventos
system_alerts Logica especifica (escalamiento, resolucion)
pending_user_initialization Proposito muy especifico (retry mechanism)

OPCIONES DE CONSOLIDACION

Opcion A: Conservadora (Recomendada para inicio)

Acciones:

  1. Eliminar user_activity (deprecated)
  2. Mantener resto de tablas
  3. Planificar consolidacion futura

Esfuerzo: 5-10 horas Riesgo: Bajo

Opcion B: Moderada (Recomendada a mediano plazo)

Acciones:

  1. Eliminar user_activity
  2. Crear audit_logs_unified (audit_logs + system_logs)
  3. Crear user_event_log (user_activity_logs + activity_log)

Tablas finales: 5 (reduccion 37.5%) Esfuerzo: 25-30 horas Riesgo: Medio

Opcion C: Agresiva (No recomendada)

Acciones:

  1. Consolidar todas en 2 tablas
  2. Migracion masiva de datos

Esfuerzo: 40-60 horas Riesgo: Alto


PLAN DE ACCION RECOMENDADO

Fase Inmediata (Esta semana)

Tarea B1.1: Eliminar tabla user_activity (deprecated)

Pasos:

  1. Auditar 13+ referencias en backend
  2. Actualizar imports a activity_log
  3. Ejecutar tests
  4. DROP TABLE

Esfuerzo: 4-6 horas Riesgo: Bajo (tabla ya deprecated)

Fase Posterior (Siguiente sprint)

Tarea B1.2: Consolidar audit_logs + system_logs

Pasos:

  1. Crear tabla audit_logs_unified
  2. Migrar datos historicos
  3. Actualizar aplicacion
  4. Validar y DROP antiguas

Esfuerzo: 15-20 horas Riesgo: Medio


ESTRUCTURA PROPUESTA: audit_logs_unified

CREATE TABLE audit_logging.audit_logs_unified (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    tenant_id UUID NOT NULL,

    -- Discriminador
    log_source VARCHAR(20) NOT NULL, -- 'audit' | 'application' | 'system'

    -- Clasificacion
    event_type TEXT NOT NULL,
    log_level VARCHAR(20), -- TRACE/DEBUG/INFO/WARN/ERROR/FATAL
    severity VARCHAR(20),  -- debug/info/warning/error/critical

    -- Actor
    actor_id UUID,
    actor_type VARCHAR(20) DEFAULT 'system',
    actor_ip INET,
    actor_user_agent TEXT,
    session_id TEXT,

    -- Tracking
    request_id TEXT,
    correlation_id TEXT,

    -- Contexto
    module_name TEXT,
    function_name TEXT,
    resource_type TEXT,
    resource_id UUID,

    -- Cambios (para audit)
    old_values JSONB,
    new_values JSONB,

    -- Descripcion
    message TEXT,
    description TEXT,

    -- Errores
    error_code TEXT,
    error_message TEXT,
    stack_trace TEXT,

    -- Datos flexibles
    metadata JSONB DEFAULT '{}',

    -- Status
    status VARCHAR(20),

    -- Timestamp
    created_at TIMESTAMPTZ DEFAULT gamilit.now_mexico(),

    CONSTRAINT log_source_check CHECK (log_source IN ('audit', 'application', 'system'))
);

-- Indices
CREATE INDEX idx_audit_unified_created ON audit_logging.audit_logs_unified(created_at DESC);
CREATE INDEX idx_audit_unified_source ON audit_logging.audit_logs_unified(log_source);
CREATE INDEX idx_audit_unified_tenant ON audit_logging.audit_logs_unified(tenant_id);
CREATE INDEX idx_audit_unified_actor ON audit_logging.audit_logs_unified(actor_id) WHERE actor_id IS NOT NULL;
CREATE INDEX idx_audit_unified_errors ON audit_logging.audit_logs_unified(log_level, created_at DESC)
    WHERE log_level IN ('ERROR', 'FATAL');

CONCLUSION

Recomendacion: Comenzar con Opcion A (eliminar deprecated) y planificar Opcion B para siguiente sprint.

Siguiente paso: Auditar referencias de user_activity en backend para preparar eliminacion.


Documento generado: 2026-01-07 Responsable: Arquitecto de Datos