codigo0/docs/MIGRACION_CONTENIDO_APP_BACKEND.md

216 lines
5.5 KiB
Markdown
Raw Normal View History

2026-01-19 08:10:16 +00:00
# 🔄 MIGRACIÓN DE CONTENIDO: APP → BACKEND
**Fecha:** 2025-01-06
**Problema:** El contenido real de la app no está en el backend
**Solución:** Script de migración
---
## ❓ ¿POR QUÉ NO VES EL CONTENIDO ACTUAL EN EL BACKEND?
### Situación Actual
**En la App (Frontend):**
-`src/data/procedures.ts` - **5 procedimientos** (RCP Adulto SVB, RCP Adulto SVA, RCP Pediátrico, OVACE, Shock Hemorrágico)
-`src/data/drugs.ts` - **6 fármacos** (Oxígeno, Adrenalina, Amiodarona, Atropina, Midazolam, Salbutamol)
**En el Backend:**
- ❌ Solo contenido de ejemplo (checklists de prueba)
-**NO tiene** los procedimientos reales
-**NO tiene** los fármacos reales
### Razón
El backend fue diseñado con un **schema nuevo** (`tes_content`) que es diferente a la estructura actual de la app. El contenido de la app vive en archivos TypeScript (`procedures.ts`, `drugs.ts`) y **nunca se migró** al backend.
---
## ✅ SOLUCIÓN: SCRIPT DE MIGRACIÓN
He creado un script que:
1. ✅ Lee el contenido de `src/data/procedures.ts` y `src/data/drugs.ts`
2. ✅ Lo transforma al formato del schema `tes_content`
3. ✅ Lo inserta en la base de datos PostgreSQL
4. ✅ Marca todo como `published` para que esté disponible
---
## 🚀 CÓMO EJECUTAR LA MIGRACIÓN
### Paso 1: Verificar que el schema existe
```bash
cd backend
node scripts/create-auth-tables.js
```
### Paso 2: Ejecutar el script de migración
```bash
cd backend
node scripts/migrate-app-content-v2.js
```
**Salida esperada:**
```
🔄 Iniciando migración de contenido de la app al backend...
✅ Conexión a base de datos establecida
✅ Usuario admin encontrado: [uuid]
📋 Cargando procedimientos...
Encontrados 5 procedimientos
💾 Migrando procedimientos a la base de datos...
✅ rcp-adulto-svb: RCP Adulto - Soporte Vital Básico
✅ rcp-adulto-sva: RCP Adulto - Soporte Vital Avanzado
✅ rcp-pediatrico: RCP Pediátrico - SVB
✅ obstruccion-via-aerea: Obstrucción de Vía Aérea - OVACE
✅ shock-hemorragico: Shock Hemorrágico
💊 Cargando fármacos...
Encontrados 6 fármacos
💾 Migrando fármacos a la base de datos...
✅ oxigeno: Oxígeno (O₂)
✅ adrenalina: Adrenalina (Epinefrina)
✅ amiodarona: Amiodarona
✅ atropina: Atropina
✅ midazolam: Midazolam
✅ salbutamol: Salbutamol
📊 Resumen de migración:
protocol: 5 total, 5 publicados
drug: 6 total, 6 publicados
✅ Migración completada exitosamente!
```
---
## 🔍 VERIFICAR QUE LA MIGRACIÓN FUNCIONÓ
### Opción 1: Consulta SQL directa
```sql
-- Ver procedimientos migrados
SELECT
slug,
title,
status,
priority,
clinical_context
FROM tes_content.content_items
WHERE type = 'protocol'
ORDER BY priority, title;
-- Ver fármacos migrados
SELECT
slug,
title,
status,
priority
FROM tes_content.content_items
WHERE type = 'drug'
ORDER BY title;
```
### Opción 2: Desde el Panel Admin
1. Accede al panel admin: `http://localhost:5174`
2. Ve a "Contenido" → "Protocolos"
3. Deberías ver los 5 procedimientos
4. Ve a "Contenido" → "Fármacos"
5. Deberías ver los 6 fármacos
---
## 📊 CONTENIDO QUE SE MIGRA
### Procedimientos (5)
| Slug | Título | Prioridad | Contexto Clínico |
|------|--------|-----------|------------------|
| `rcp-adulto-svb` | RCP Adulto - Soporte Vital Básico | Crítica | RCP |
| `rcp-adulto-sva` | RCP Adulto - Soporte Vital Avanzado | Crítica | RCP |
| `rcp-pediatrico` | RCP Pediátrico - SVB | Crítica | RCP |
| `obstruccion-via-aerea` | Obstrucción de Vía Aérea - OVACE | Crítica | VIA_AEREA |
| `shock-hemorragico` | Shock Hemorrágico | Crítica | SHOCK |
### Fármacos (6)
| Slug | Nombre Genérico | Categoría |
|------|-----------------|-----------|
| `oxigeno` | Oxígeno (O₂) | Oxigenoterapia |
| `adrenalina` | Adrenalina (Epinefrina) | Cardiovascular |
| `amiodarona` | Amiodarona | Cardiovascular |
| `atropina` | Atropina | Cardiovascular |
| `midazolam` | Midazolam | Neurológico |
| `salbutamol` | Salbutamol | Respiratorio |
---
## 🔄 RE-MIGRACIÓN (Si necesitas actualizar)
El script usa `ON CONFLICT (slug) DO UPDATE`, así que puedes ejecutarlo múltiples veces:
- ✅ Si el contenido ya existe, se **actualiza**
- ✅ Si no existe, se **crea**
- ✅ No duplica contenido
**Ejecutar de nuevo:**
```bash
cd backend
node scripts/migrate-app-content-v2.js
```
---
## ⚠️ NOTAS IMPORTANTES
1. **No modifica la app:** El script solo lee de `procedures.ts` y `drugs.ts`, no los modifica
2. **Estado inicial:** Todo se migra como `published` para que esté disponible inmediatamente
3. **Versión:** Todo se migra como versión `1.0.0`
4. **Admin requerido:** Necesitas tener un usuario admin creado (ejecuta `seed-admin.js` primero)
---
## 🐛 SOLUCIÓN DE PROBLEMAS
### Error: "No se encontró usuario admin"
```bash
# Crear usuario admin primero
cd backend
node scripts/seed-admin.js
```
### Error: "Schema tes_content no existe"
```bash
# Crear schema primero
cd backend
node scripts/create-auth-tables.js
```
### Error: "No se pudo importar directamente"
El script tiene un **fallback con datos hardcodeados**. Si no puede leer los archivos TypeScript, usará datos de ejemplo. Esto es normal si hay problemas con imports dinámicos.
---
## 📝 PRÓXIMOS PASOS
Después de migrar:
1. ✅ Verificar contenido en panel admin
2. ✅ Probar endpoints API: `GET /api/content/protocol/:slug`
3. ✅ Generar Content Pack: `POST /api/admin/pack/generate`
4. ✅ Integrar en app (FASE 2 del plan técnico)
---
**Fin del Documento**