174 lines
5.7 KiB
Markdown
174 lines
5.7 KiB
Markdown
# 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
|
|
5. **Probar Content Pack Generator**
|
|
- Generar pack manualmente
|
|
- Verificar formato JSON correcto
|
|
- Verificar que incluye protocolos, fármacos y guías
|
|
|
|
6. **Probar endpoint `/api/content-pack/latest.json`**
|
|
- Verificar que responde correctamente
|
|
- Verificar headers de cache
|
|
- Verificar formato JSON
|
|
|
|
7. **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
|
|
```sql
|
|
-- 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
|
|
```bash
|
|
cd backend
|
|
node -e "import('./config/database.js').then(m => m.testConnection())"
|
|
```
|
|
|
|
### Paso 3: Ejecutar Migraciones
|
|
```bash
|
|
# 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
|
|
```bash
|
|
cd backend
|
|
npm run seed:content # Si existe
|
|
# O usar scripts de migración
|
|
```
|
|
|
|
### Paso 5: Probar Content Pack
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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
|
|
|