# 🚀 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.**