codigo0/docs/FASE_2_ESTADO_ACTUAL.md

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 ContentPackGenerator en backend/src/services/pack-generator.js
  • Métodos implementados:
    • generatePack() - Genera el pack completo
    • loadPublishedContent() - Carga desde tes_content.content_items
    • loadPublishedDrugs() - Carga desde tes_content.drugs
    • loadMediaResources() - Carga recursos multimedia asociados
    • calculateHash() - Calcula SHA-256 del pack
  • Endpoint público: /api/content-pack/latest.json

Base de Datos

  • Migraciones:
    • 001_create_auth_schema.sql - Schema emerges_content + tabla users
    • 002_create_drugs_schema.sql - Schema tes_content + tabla drugs
  • 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_content recomendado)
  • 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 crean tes_content.content_items
  • Solo existe la migración en database/migrations/001_create_schema.sql que crea emerges_content.content_items

Solución necesaria:

  • Crear migración en backend/database/migrations/ para tes_content.content_items
  • O migrar datos desde emerges_content a tes_content
  • O ajustar Content Pack Generator para usar emerges_content

📋 Tareas Pendientes

Alta Prioridad

  1. Resolver inconsistencia de schemas

    • Decidir: tes_content vs emerges_content
    • Crear migración unificada
    • Actualizar Content Pack Generator si es necesario
  2. Verificar conexión a BD

    • Probar conexión con .env configurado
    • Verificar que las migraciones se ejecutaron
  3. Crear tabla content_items en schema correcto

    • Si usamos tes_content: crear migración 003_create_content_items.sql
    • Si usamos emerges_content: ajustar Content Pack Generator
  4. Migrar datos iniciales

    • Protocolos desde src/data/procedures.ts
    • Fármacos (ya hay seed script)
    • Guías si aplica

Media Prioridad

  1. Probar Content Pack Generator

    • Generar pack manualmente
    • Verificar formato JSON correcto
    • Verificar que incluye protocolos, fármacos y guías
  2. Probar endpoint /api/content-pack/latest.json

    • Verificar que responde correctamente
    • Verificar headers de cache
    • Verificar formato JSON
  3. Integrar con Frontend

    • Verificar que ExternalContentAdapter carga el pack
    • Probar fallback cuando backend no está disponible
    • Verificar cache en localStorage

🎯 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