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

245 lines
6.2 KiB
Markdown

# 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
```sql
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