- 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>
9.1 KiB
9.1 KiB
US-CONT-004: Versionamiento de Contenido
Información Básica
| Campo | Valor |
|---|---|
| ID | US-CONT-004 |
| Épica | EXT-006 - Gestión de Contenido |
| Título | Sistema de Control de Versiones y Audit Trail |
| Prioridad | Media (P2) |
| Story Points | 5 SP |
| Estado | NOT STARTED |
| Fase | Mes 3 (Extensiones Primera Ola) |
| Presupuesto | $2,900 MXN |
Historia de Usuario
Como profesor o administrador Quiero historial completo de cambios en módulos y actividades con rollback, comparación y audit trail Para recuperar contenido eliminado, rastrear cambios y cumplir con auditorías
Valor de Negocio
Impacto
- Seguridad: Recuperar contenido eliminado accidentalmente
- Transparencia: Auditoría completa de cambios
- Colaboración: Ver quién cambió qué y cuándo
- Compliance: Cumplir requisitos regulatorios
Métricas de Éxito
-
90% recuperaciones exitosas de versiones
- 0 pérdidas de contenido irreversibles
- Tiempo de rollback <2 minutos
-
85% satisfacción con trazabilidad
Criterios de Aceptación
CA-01: Historial de Cambios
- Registrar cada guardado como nueva versión
- Metadata de versión:
- Timestamp exacto
- Usuario que modificó
- Descripción del cambio (opcional)
- Diff summary (caracteres cambiados)
- Límite de versiones: últimas 50 (configurable)
- Compresión de versiones antiguas
- Auto-purge de versiones >1 año (opcional)
CA-02: Versionamiento Automático
- Cada guardado crea versión automáticamente
- Versionamiento granular: por módulo, por actividad
- No requiere acción manual del usuario
- Snapshot completo del contenido
- Referencia a archivos multimedia (no duplicar)
CA-03: Rollback a Versiones Anteriores
- Lista de versiones en sidebar
- Preview de versión antes de restaurar
- Botón "Restaurar esta versión"
- Confirmación antes de rollback
- Crear nueva versión al restaurar (no sobrescribir)
- Rollback parcial (solo secciones específicas)
CA-04: Comparación de Versiones (Diff View)
- Vista side-by-side de dos versiones
- Highlighting de cambios:
- Texto agregado (verde)
- Texto eliminado (rojo)
- Texto modificado (amarillo)
- Comparación línea por línea
- Jump to next/previous change
- Exportar diff como PDF
- Aceptar/rechazar cambios individuales (merge)
CA-05: Etiquetado de Versiones
- Etiquetar versiones importantes (v1.0, v2.0)
- Nombres descriptivos ("Antes de revisión", "Versión final")
- Filtrar por tags
- Versiones etiquetadas no se purgan automáticamente
- Comparar con versión etiquetada
CA-06: Audit Trail
Registrar todos los eventos:
- Creación de contenido
- Modificaciones (con diff)
- Eliminaciones
- Restauraciones
- Cambios de permisos
- Publicación/despublicación
Información capturada:
- Usuario (nombre, email, rol)
- IP address
- Timestamp exacto
- Acción realizada
- Before/after values
- User agent (browser)
CA-07: Papelera de Reciclaje
- Contenido eliminado va a papelera (no se borra)
- Retención: 30 días en papelera
- Restaurar desde papelera con un click
- Eliminar permanentemente (requiere confirmación)
- Vaciar papelera automáticamente después de 30 días
- Admin puede ver papelera de todos los usuarios
CA-08: Merge de Cambios
- Detectar conflictos si dos usuarios editan simultáneamente
- Vista de conflictos con opciones:
- Mantener mi versión
- Aceptar su versión
- Merge manual (editar)
- Estrategias de merge:
- Last write wins (default)
- Manual resolution
- Auto-merge si no hay conflictos
- Notificar a usuarios sobre conflictos
CA-09: Versionamiento de Archivos Multimedia
- Versionar archivos en biblioteca (US-CONT-003)
- Reemplazar imagen mantiene historial
- Rollback a versión anterior de archivo
- Comparación visual de imágenes (side-by-side)
- Metadata de versión (tamaño, dimensiones)
CA-10: Exportación de Historial
- Exportar audit log como CSV/Excel
- Filtrar por usuario, fecha, tipo de acción
- Reportes de actividad:
- "Cambios en último mes"
- "Modificaciones por usuario"
- Estadísticas:
- Total de versiones
- Frecuencia de cambios
- Usuarios más activos
CA-11: Notificaciones de Cambios
- Notificar a stakeholders cuando contenido cambia
- Suscribirse a módulos específicos
- Digest diario/semanal de cambios
- RSS feed de cambios (opcional)
- Webhooks para integraciones externas
CA-12: Performance y Storage
- Almacenar solo diffs (no snapshots completos)
- Compresión de versiones antiguas
- Lazy loading de historial (últimas 10 primero)
- Índices en tablas de versiones
- Particionamiento por fecha
- Archive a cold storage después de 6 meses
CA-13: Permisos y Seguridad
Control de acceso:
- Solo autor puede ver historial de sus borradores
- Admin puede ver todo el historial
- Profesores ven historial de su contenido
- Estudiantes NO ven historial (solo versión publicada)
Audit de auditoría:
- Log de quién accede al audit trail
- Prevenir modificación de logs
- Inmutabilidad de registros históricos
- Encriptación de datos sensibles
CA-14: Interfaz de Usuario
- Timeline visual de versiones (gráfico)
- Filtros: Por usuario, por fecha, por tipo
- Búsqueda en historial
- Badges de versiones importantes
- Indicador de "Sin guardar" en editor
- Última modificación mostrada (ej: "Editado hace 5 min por Juan")
CA-15: Integración con Sistema
- Versionamiento transparente (no afecta flujo normal)
- API para versiones:
GET /api/content/:id/versions GET /api/content/:id/versions/:versionId POST /api/content/:id/restore/:versionId GET /api/content/:id/diff?from=v1&to=v2 - Hooks en sistema de guardado
- Compatible con US-CONT-001 (editor)
Especificaciones Técnicas
Database Schema
CREATE TABLE content_versions (
id UUID PRIMARY KEY,
content_id UUID REFERENCES content(id),
version_number INTEGER,
content_snapshot JSONB, -- full snapshot or diff
changes_summary TEXT,
user_id UUID REFERENCES users(id),
tag VARCHAR(100),
created_at TIMESTAMP,
is_deleted BOOLEAN DEFAULT FALSE
);
CREATE INDEX idx_versions_content ON content_versions(content_id);
CREATE INDEX idx_versions_created ON content_versions(created_at);
CREATE TABLE audit_trail (
id UUID PRIMARY KEY,
entity_type VARCHAR(50), -- 'module', 'activity', etc.
entity_id UUID,
action VARCHAR(50), -- 'create', 'update', 'delete', 'restore'
user_id UUID REFERENCES users(id),
ip_address VARCHAR(45),
user_agent TEXT,
before_state JSONB,
after_state JSONB,
timestamp TIMESTAMP
);
CREATE INDEX idx_audit_entity ON audit_trail(entity_type, entity_id);
CREATE INDEX idx_audit_timestamp ON audit_trail(timestamp);
CREATE INDEX idx_audit_user ON audit_trail(user_id);
Frontend Components
src/features/versioning/
├── components/
│ ├── VersionHistory.tsx
│ ├── VersionTimeline.tsx
│ ├── DiffViewer.tsx
│ ├── RestoreModal.tsx
│ ├── AuditLog.tsx
│ └── RecycleBin.tsx
└── hooks/
├── useVersions.ts
└── useAuditTrail.ts
Technology Stack
Backend:
- PostgreSQL JSONB para snapshots
- diff-match-patch para generar diffs
- compression (zlib) para versiones antiguas
Frontend:
- react-diff-viewer para comparación
- react-timeline para visualización
- moment.js para timestamps
Diferenciación con Alcance Inicial
Alcance Inicial (EAI)
- Sin versionamiento
- Guardado sobrescribe
- Sin recuperación de contenido eliminado
- Sin audit trail
Esta Historia (EXT-006)
- Historial completo de cambios
- Rollback a cualquier versión
- Comparación visual de versiones
- Papelera de reciclaje
- Audit trail completo
- Merge de conflictos
- Etiquetado de versiones
- Esto es control de versiones tipo Git
Dependencias
Depende de
- US-CONT-001: Editor (integración)
- US-CONT-002: Ejercicios (versionamiento)
- US-CONT-003: Multimedia (versionamiento de archivos)
Definición de Terminado (DoD)
- Sistema de versionamiento automático
- Historial de versiones UI
- Rollback funcional
- Diff viewer side-by-side
- Etiquetado de versiones
- Audit trail completo
- Papelera de reciclaje
- Merge de conflictos
- Exportación de historial
- Notificaciones de cambios
- API de versiones
- Performance optimizada (diffs)
- Tests >80% coverage
- Documentación
- Video tutorial
Estimación Detallada (5 SP)
| Tarea | Horas |
|---|---|
| Diseño de schema | 4h |
| Sistema de versionamiento | 10h |
| Historial UI | 8h |
| Rollback | 6h |
| Diff viewer | 10h |
| Papelera | 6h |
| Audit trail | 8h |
| Merge conflicts | 8h |
| Backend API | 8h |
| Testing | 8h |
| Documentación | 4h |
| TOTAL | 80h |
Presupuesto: $2,900 MXN Duración: 2 días
Tags
#ext-006 #versionamiento #audit-trail #rollback #historial #diff #git-like #mes-3
Creado: 2025-11-02 Autor: Sistema de Migración - Subagente EXT 4-6 Origen: EP010/HU-EP010-03-content-management.md Compliance: PF-001 (XXX líneas)