5.7 KiB
5.7 KiB
FASE 2: BACKEND Y BASE DE DATOS - ESTADO ACTUAL
✅ Implementado
Backend Express.js
- Servidor configurado en
backend/src/index.js - Rutas API completas:
/api/auth- Autenticación JWT/api/content- CRUD de contenido/api/drugs- CRUD de fármacos/api/media- Gestión de recursos multimedia/api/content-pack- Generación y entrega de Content Pack/api/scorm- Generación de paquetes SCORM/api/validation- Sistema de validación de contenido/api/stats- Estadísticas
- Middleware de autenticación y permisos
- CORS configurado para múltiples orígenes
Content Pack Generator
- Clase
ContentPackGeneratorenbackend/src/services/pack-generator.js - Métodos implementados:
generatePack()- Genera el pack completoloadPublishedContent()- Carga desdetes_content.content_itemsloadPublishedDrugs()- Carga desdetes_content.drugsloadMediaResources()- Carga recursos multimedia asociadoscalculateHash()- Calcula SHA-256 del pack
- Endpoint público:
/api/content-pack/latest.json
Base de Datos
- Migraciones:
001_create_auth_schema.sql- Schemaemerges_content+ tablausers002_create_drugs_schema.sql- Schemates_content+ tabladrugs
- Configuración en
backend/config/database.js - Pool de conexiones PostgreSQL configurado
Modelos
- Drug.js - Modelo completo con validación y versionado
⚠️ Problemas Detectados
1. Inconsistencia de Schemas
- Content Pack Generator busca:
tes_content.content_items - Migración raíz (
database/migrations/001_create_schema.sql) crea:emerges_content.content_items - Migración drugs crea:
tes_content.drugs
Solución necesaria:
- Verificar qué schema se está usando realmente
- Unificar a un solo schema (
tes_contentrecomendado) - O ajustar el Content Pack Generator para usar el schema correcto
2. Tabla content_items No Creada en Backend
- Las migraciones en
backend/database/migrations/no creantes_content.content_items - Solo existe la migración en
database/migrations/001_create_schema.sqlque creaemerges_content.content_items
Solución necesaria:
- Crear migración en
backend/database/migrations/parates_content.content_items - O migrar datos desde
emerges_contentates_content - O ajustar Content Pack Generator para usar
emerges_content
📋 Tareas Pendientes
Alta Prioridad
-
Resolver inconsistencia de schemas
- Decidir:
tes_contentvsemerges_content - Crear migración unificada
- Actualizar Content Pack Generator si es necesario
- Decidir:
-
Verificar conexión a BD
- Probar conexión con
.envconfigurado - Verificar que las migraciones se ejecutaron
- Probar conexión con
-
Crear tabla
content_itemsen schema correcto- Si usamos
tes_content: crear migración003_create_content_items.sql - Si usamos
emerges_content: ajustar Content Pack Generator
- Si usamos
-
Migrar datos iniciales
- Protocolos desde
src/data/procedures.ts - Fármacos (ya hay seed script)
- Guías si aplica
- Protocolos desde
Media Prioridad
-
Probar Content Pack Generator
- Generar pack manualmente
- Verificar formato JSON correcto
- Verificar que incluye protocolos, fármacos y guías
-
Probar endpoint
/api/content-pack/latest.json- Verificar que responde correctamente
- Verificar headers de cache
- Verificar formato JSON
-
Integrar con Frontend
- Verificar que
ExternalContentAdaptercarga el pack - Probar fallback cuando backend no está disponible
- Verificar cache en localStorage
- Verificar que
🎯 Plan de Acción Inmediato
Paso 1: Resolver Schema
-- Opción A: Usar tes_content (recomendado)
-- Crear migración: backend/database/migrations/003_create_content_items.sql
CREATE SCHEMA IF NOT EXISTS tes_content;
-- Copiar estructura de emerges_content.content_items a tes_content.content_items
-- Opción B: Usar emerges_content
-- Actualizar pack-generator.js para usar emerges_content.content_items
Paso 2: Verificar BD
cd backend
node -e "import('./config/database.js').then(m => m.testConnection())"
Paso 3: Ejecutar Migraciones
# Verificar qué migraciones faltan
psql -U emerges_tes_user -d emerges_tes_db -c "\dn"
# Ejecutar migraciones pendientes
psql -U emerges_tes_user -d emerges_tes_db -f backend/database/migrations/003_create_content_items.sql
Paso 4: Migrar Datos
cd backend
npm run seed:content # Si existe
# O usar scripts de migración
Paso 5: Probar Content Pack
# Iniciar backend
npm start
# En otra terminal
curl http://localhost:3000/api/content-pack/latest.json | jq '.metadata'
📊 Estado de Integración
| Componente | Estado | Notas |
|---|---|---|
| Backend Express | ✅ Completo | Todas las rutas implementadas |
| Content Pack Generator | ⚠️ Parcial | Funciona pero necesita schema correcto |
| Base de Datos | ⚠️ Parcial | Migraciones incompletas |
| Endpoint Content Pack | ✅ Implementado | /api/content-pack/latest.json |
| Frontend Integration | ⏳ Pendiente | ExternalContentAdapter listo pero no probado |
| Datos Iniciales | ⏳ Pendiente | Necesita migración desde src/data/ |
🔧 Comandos Útiles
# Verificar conexión BD
cd backend && node -e "import('./config/database.js').then(m => m.testConnection())"
# Iniciar backend
cd backend && npm start
# Probar endpoint
curl http://localhost:3000/api/content-pack/latest.json
# Ver logs
cd backend && npm start 2>&1 | grep -i "content\|pack\|error"
Última actualización: 2025-01-07 Estado: ⚠️ En progreso - Necesita resolución de schema Prioridad: Alta