264 lines
5.7 KiB
Markdown
264 lines
5.7 KiB
Markdown
|
|
# 🚀 GUÍA DE IMPLEMENTACIÓN PROGRESIVA - EMERGES TES
|
||
|
|
|
||
|
|
**Versión:** 1.0
|
||
|
|
**Fecha:** 2025-01-XX
|
||
|
|
**Estado:** Guía de Implementación Activa
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🎯 PROPÓSITO
|
||
|
|
|
||
|
|
Esta guía te permite implementar el sistema de gestión de contenido **de forma progresiva y segura**, sin romper la app operativa existente.
|
||
|
|
|
||
|
|
**Principio:** Cada paso es independiente, validable y reversible.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 📋 PREPARACIÓN INICIAL
|
||
|
|
|
||
|
|
### Paso 0: Verificar Prerequisitos
|
||
|
|
|
||
|
|
**Requisitos:**
|
||
|
|
- ✅ Node.js 18+ instalado
|
||
|
|
- ✅ PostgreSQL 14+ instalado y corriendo
|
||
|
|
- ✅ Acceso a la base de datos PostgreSQL
|
||
|
|
- ✅ App operativa funcionando correctamente
|
||
|
|
|
||
|
|
**Verificar:**
|
||
|
|
```bash
|
||
|
|
node --version # Debe ser 18+
|
||
|
|
psql --version # Debe ser 14+
|
||
|
|
npm --version # Debe estar instalado
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🏗️ FASE 1: INFRAESTRUCTURA BASE
|
||
|
|
|
||
|
|
### Paso 1.1: Instalar Dependencias del Backend
|
||
|
|
|
||
|
|
```bash
|
||
|
|
cd backend
|
||
|
|
npm install
|
||
|
|
```
|
||
|
|
|
||
|
|
**Resultado esperado:** Dependencias instaladas sin errores.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### Paso 1.2: Configurar Variables de Entorno
|
||
|
|
|
||
|
|
1. Crear archivo `backend/.env`:
|
||
|
|
```bash
|
||
|
|
cd backend
|
||
|
|
cp ENV_TEMPLATE.md .env
|
||
|
|
# Editar .env con tus credenciales reales
|
||
|
|
```
|
||
|
|
|
||
|
|
2. Completar valores:
|
||
|
|
- `DB_HOST`: localhost (o IP del servidor)
|
||
|
|
- `DB_PORT`: 5432 (puerto por defecto PostgreSQL)
|
||
|
|
- `DB_NAME`: emerges_tes
|
||
|
|
- `DB_USER`: tu_usuario_postgres
|
||
|
|
- `DB_PASSWORD`: tu_password_postgres
|
||
|
|
|
||
|
|
**Validar:**
|
||
|
|
```bash
|
||
|
|
# Probar conexión manual
|
||
|
|
psql -h localhost -U tu_usuario -d postgres -c "SELECT version();"
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### Paso 1.3: Crear Base de Datos y Esquema
|
||
|
|
|
||
|
|
```bash
|
||
|
|
cd backend
|
||
|
|
npm run db:create
|
||
|
|
```
|
||
|
|
|
||
|
|
**Este comando:**
|
||
|
|
- ✅ Crea la base de datos `emerges_tes` si no existe
|
||
|
|
- ✅ Ejecuta todas las migraciones SQL
|
||
|
|
- ✅ Crea el esquema completo (tablas, índices, vistas, funciones)
|
||
|
|
|
||
|
|
**Resultado esperado:**
|
||
|
|
```
|
||
|
|
✅ Conectado a PostgreSQL
|
||
|
|
✅ Base de datos 'emerges_tes' creada
|
||
|
|
✅ Conectado a base de datos 'emerges_tes'
|
||
|
|
✅ Migración 001: Esquema creado
|
||
|
|
✅ Migración 002: Funciones y triggers creados
|
||
|
|
🎉 Base de datos configurada correctamente
|
||
|
|
```
|
||
|
|
|
||
|
|
**Validar:**
|
||
|
|
```bash
|
||
|
|
psql -h localhost -U tu_usuario -d emerges_tes -c "\dt emerges_content.*"
|
||
|
|
# Debe mostrar las tablas creadas
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### Paso 1.4: Migrar Contenido Inicial
|
||
|
|
|
||
|
|
```bash
|
||
|
|
cd backend
|
||
|
|
npm run migrate
|
||
|
|
```
|
||
|
|
|
||
|
|
**Este comando:**
|
||
|
|
- ✅ Lee `src/data/procedures.ts` y migra protocolos
|
||
|
|
- ✅ Lee `src/data/drugs.ts` y migra fármacos
|
||
|
|
- ✅ Inserta en PostgreSQL con estado `validated`
|
||
|
|
|
||
|
|
**Resultado esperado:**
|
||
|
|
```
|
||
|
|
🚀 Iniciando migración de contenido...
|
||
|
|
✅ Conexión a PostgreSQL establecida
|
||
|
|
📋 Migrando X protocolos...
|
||
|
|
✅ rcp-adulto-svb
|
||
|
|
✅ rcp-adulto-sva
|
||
|
|
...
|
||
|
|
💊 Migrando Y fármacos...
|
||
|
|
✅ adrenalina
|
||
|
|
✅ amiodarona
|
||
|
|
...
|
||
|
|
🎉 Migración completada exitosamente
|
||
|
|
```
|
||
|
|
|
||
|
|
**Validar:**
|
||
|
|
```bash
|
||
|
|
psql -h localhost -U tu_usuario -d emerges_tes -c "SELECT COUNT(*) FROM emerges_content.content_items WHERE type = 'protocol';"
|
||
|
|
psql -h localhost -U tu_usuario -d emerges_tes -c "SELECT COUNT(*) FROM emerges_content.content_items WHERE type = 'drug';"
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### Paso 1.5: Iniciar Servidor Backend
|
||
|
|
|
||
|
|
```bash
|
||
|
|
cd backend
|
||
|
|
npm run dev
|
||
|
|
```
|
||
|
|
|
||
|
|
**Resultado esperado:**
|
||
|
|
```
|
||
|
|
🚀 EMERGES TES Backend API
|
||
|
|
📍 Servidor en: http://localhost:3000
|
||
|
|
📊 Health check: http://localhost:3000/health
|
||
|
|
✅ Conexión a PostgreSQL exitosa
|
||
|
|
```
|
||
|
|
|
||
|
|
**Validar:**
|
||
|
|
```bash
|
||
|
|
curl http://localhost:3000/health
|
||
|
|
# Debe devolver JSON con status: "ok"
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### ✅ Validación FASE 1
|
||
|
|
|
||
|
|
**Checklist:**
|
||
|
|
- [ ] Base de datos creada
|
||
|
|
- [ ] Esquema completo (7 tablas)
|
||
|
|
- [ ] Contenido migrado (protocolos + fármacos)
|
||
|
|
- [ ] Servidor backend corriendo
|
||
|
|
- [ ] Health check responde correctamente
|
||
|
|
- [ ] App operativa sigue funcionando igual (sin cambios)
|
||
|
|
|
||
|
|
**Si todo está ✅:** Puedes continuar a FASE 2.
|
||
|
|
|
||
|
|
**Si hay problemas:** Revisar logs, verificar credenciales, consultar documentación.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🔄 FASE 2: SINCRONIZACIÓN OFFLINE (Próxima)
|
||
|
|
|
||
|
|
**Estado:** ⏳ Pendiente de implementación
|
||
|
|
|
||
|
|
**Objetivos:**
|
||
|
|
- Modificar app para cargar contenido desde API
|
||
|
|
- Implementar cache local (IndexedDB)
|
||
|
|
- Sincronización en background
|
||
|
|
- Fallback robusto
|
||
|
|
|
||
|
|
**IMPORTANTE:** Esta fase se implementará cuando FASE 1 esté completamente validada.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 📝 NOTAS IMPORTANTES
|
||
|
|
|
||
|
|
### Seguridad
|
||
|
|
|
||
|
|
- ❌ **NUNCA** commitear archivo `.env` a Git
|
||
|
|
- ✅ Añadir `backend/.env` a `.gitignore`
|
||
|
|
- ✅ Usar credenciales seguras en producción
|
||
|
|
|
||
|
|
### Backup
|
||
|
|
|
||
|
|
**Antes de migrar contenido:**
|
||
|
|
```bash
|
||
|
|
# Backup de PostgreSQL
|
||
|
|
pg_dump -h localhost -U tu_usuario emerges_tes > backup_antes_migracion.sql
|
||
|
|
```
|
||
|
|
|
||
|
|
### Rollback
|
||
|
|
|
||
|
|
**Si algo sale mal:**
|
||
|
|
```bash
|
||
|
|
# Restaurar backup
|
||
|
|
psql -h localhost -U tu_usuario emerges_tes < backup_antes_migracion.sql
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🆘 TROUBLESHOOTING
|
||
|
|
|
||
|
|
### Error: "Cannot connect to PostgreSQL"
|
||
|
|
|
||
|
|
**Solución:**
|
||
|
|
1. Verificar que PostgreSQL está corriendo: `sudo systemctl status postgresql`
|
||
|
|
2. Verificar credenciales en `.env`
|
||
|
|
3. Verificar que el usuario tiene permisos
|
||
|
|
|
||
|
|
### Error: "Database already exists"
|
||
|
|
|
||
|
|
**Solución:**
|
||
|
|
- Es normal si ya ejecutaste `db:create` antes
|
||
|
|
- El script no falla si la BD ya existe
|
||
|
|
|
||
|
|
### Error: "Table already exists"
|
||
|
|
|
||
|
|
**Solución:**
|
||
|
|
- Las migraciones usan `CREATE TABLE IF NOT EXISTS`
|
||
|
|
- Si hay conflicto, revisar migraciones SQL
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 📚 DOCUMENTACIÓN RELACIONADA
|
||
|
|
|
||
|
|
- `docs/ARQUITECTURA_BBDD_Y_GESTION_CONTENIDO.md` - Arquitectura completa
|
||
|
|
- `docs/MODELO_DATOS_CONTENIDO.md` - Modelo de datos
|
||
|
|
- `docs/ROADMAP_CONTENIDO_Y_ADMIN.md` - Roadmap completo
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## ✅ ESTADO ACTUAL
|
||
|
|
|
||
|
|
**FASE 1: Infraestructura Base**
|
||
|
|
- ✅ Estructura de directorios creada
|
||
|
|
- ✅ Scripts SQL de creación de esquema
|
||
|
|
- ✅ Configuración de PostgreSQL
|
||
|
|
- ✅ Scripts de migración básicos
|
||
|
|
- ✅ Servidor Express básico
|
||
|
|
- ⏳ **Pendiente:** Validación con datos reales
|
||
|
|
|
||
|
|
**Próximo paso:** Ejecutar FASE 1 y validar que todo funciona.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
**Esta guía se actualiza según progreso de implementación.**
|
||
|
|
|