codigo0/docs/GUIA_IMPLEMENTACION_PROGRESIVA.md

264 lines
5.7 KiB
Markdown
Raw Normal View History

2026-01-19 08:10:16 +00:00
# 🚀 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.**