API, Backend & Frontend
This commit is contained in:
216
MIGRATION.md
Normal file
216
MIGRATION.md
Normal file
@@ -0,0 +1,216 @@
|
||||
# 🔄 Guía de Migración a CIMA API + Redis
|
||||
|
||||
Esta guía te ayudará a migrar tu aplicación FarmaFinder existente para usar la API de CIMA con caché de Redis.
|
||||
|
||||
## 📋 Cambios Principales
|
||||
|
||||
### Backend
|
||||
- ✅ Los medicamentos ahora se obtienen de la API de CIMA en tiempo real
|
||||
- ✅ Redis se usa como caché para mejorar el rendimiento
|
||||
- ✅ La tabla `pharmacy_medicines` ahora usa `medicine_nregistro` en lugar de `medicine_id`
|
||||
- ✅ Se eliminó la necesidad de gestionar medicamentos localmente
|
||||
|
||||
### Frontend
|
||||
- ✅ El componente de búsqueda ahora consulta CIMA en tiempo real
|
||||
- ✅ El panel de administración permite buscar medicamentos de CIMA
|
||||
- ✅ Interfaz mejorada para vincular medicamentos a farmacias
|
||||
|
||||
## 🚀 Pasos para Migrar
|
||||
|
||||
### 1. Instalar Redis
|
||||
|
||||
**Ubuntu/Debian:**
|
||||
```bash
|
||||
sudo apt-get update
|
||||
sudo apt-get install redis-server
|
||||
sudo systemctl start redis-server
|
||||
sudo systemctl status redis-server
|
||||
```
|
||||
|
||||
**macOS:**
|
||||
```bash
|
||||
brew install redis
|
||||
brew services start redis
|
||||
```
|
||||
|
||||
**Verificar instalación:**
|
||||
```bash
|
||||
redis-cli ping
|
||||
# Debe responder: PONG
|
||||
```
|
||||
|
||||
### 2. Actualizar Dependencias
|
||||
|
||||
```bash
|
||||
cd backend
|
||||
npm install
|
||||
```
|
||||
|
||||
Esto instalará las nuevas dependencias:
|
||||
- `redis` - Cliente de Redis para Node.js
|
||||
- `axios` - Cliente HTTP para consumir la API de CIMA
|
||||
|
||||
### 3. Ejecutar la Migración de la Base de Datos
|
||||
|
||||
```bash
|
||||
cd backend
|
||||
npm run migrate
|
||||
```
|
||||
|
||||
Este script:
|
||||
- ✅ Actualiza la tabla `pharmacy_medicines` para usar `medicine_nregistro`
|
||||
- ✅ Mantiene las farmacias existentes
|
||||
- ⚠️ Las relaciones medicamento-farmacia antiguas se perderán (deberás re-vincularlas)
|
||||
|
||||
### 4. Verificar Configuración
|
||||
|
||||
Crear archivo `.env` en `backend/` (opcional):
|
||||
|
||||
```env
|
||||
# Redis Configuration
|
||||
REDIS_HOST=localhost
|
||||
REDIS_PORT=6379
|
||||
REDIS_PASSWORD=
|
||||
|
||||
# Session Configuration
|
||||
SESSION_SECRET=cambia-esto-en-produccion
|
||||
|
||||
# Server Configuration
|
||||
PORT=3001
|
||||
```
|
||||
|
||||
### 5. Iniciar la Aplicación
|
||||
|
||||
**Terminal 1 - Redis:**
|
||||
```bash
|
||||
redis-server
|
||||
```
|
||||
|
||||
**Terminal 2 - Backend:**
|
||||
```bash
|
||||
cd backend
|
||||
npm start
|
||||
```
|
||||
|
||||
**Terminal 3 - Frontend:**
|
||||
```bash
|
||||
cd frontend
|
||||
npm run dev
|
||||
```
|
||||
|
||||
### 6. Verificar el Funcionamiento
|
||||
|
||||
1. Abre `http://localhost:3000`
|
||||
2. Busca un medicamento (ej: "paracetamol")
|
||||
3. Verifica que aparezcan resultados de CIMA
|
||||
4. En los logs del backend deberías ver:
|
||||
```
|
||||
✅ Connected to Redis
|
||||
🌐 Fetching from CIMA API: paracetamol
|
||||
✅ Cached X medicines for: paracetamol
|
||||
```
|
||||
|
||||
### 7. Re-vincular Medicamentos a Farmacias
|
||||
|
||||
Como las relaciones antiguas se perdieron:
|
||||
|
||||
1. Ve al Panel de Administración
|
||||
2. Selecciona la pestaña "Link Medicine"
|
||||
3. Busca medicamentos desde CIMA
|
||||
4. Vincúlalos a tus farmacias con precio y stock
|
||||
|
||||
## 🔍 Verificación de Logs
|
||||
|
||||
### Backend debe mostrar:
|
||||
```
|
||||
✅ Connected to Redis
|
||||
Database initialized successfully
|
||||
Server running on http://localhost:3001
|
||||
```
|
||||
|
||||
### Al buscar medicamentos:
|
||||
```
|
||||
🌐 Fetching from CIMA API: paracetamol
|
||||
✅ Cached 204 medicines for: paracetamol
|
||||
```
|
||||
|
||||
### En búsquedas posteriores:
|
||||
```
|
||||
📦 Cache hit for: paracetamol
|
||||
```
|
||||
|
||||
## ⚠️ Posibles Problemas
|
||||
|
||||
### Redis no conecta
|
||||
**Error:** `Redis Client Error: connect ECONNREFUSED`
|
||||
|
||||
**Solución:**
|
||||
```bash
|
||||
# Verificar si Redis está corriendo
|
||||
ps aux | grep redis
|
||||
|
||||
# Iniciar Redis
|
||||
redis-server
|
||||
|
||||
# O con systemd
|
||||
sudo systemctl start redis-server
|
||||
```
|
||||
|
||||
### API de CIMA lenta o no responde
|
||||
**Error:** Búsquedas muy lentas o timeout
|
||||
|
||||
**Solución:**
|
||||
- La API de CIMA puede estar experimentando problemas
|
||||
- Los resultados cacheados seguirán funcionando
|
||||
- Espera unos minutos e intenta de nuevo
|
||||
|
||||
### Error de migración
|
||||
**Error:** `table pharmacy_medicines already exists`
|
||||
|
||||
**Solución:**
|
||||
```bash
|
||||
# Hacer backup de la base de datos
|
||||
cp backend/database.sqlite backend/database.sqlite.backup
|
||||
|
||||
# Eliminar la base de datos y recrear
|
||||
cd backend
|
||||
rm database.sqlite
|
||||
npm run seed
|
||||
npm run create-admin
|
||||
```
|
||||
|
||||
## 📊 Comparación Antes/Después
|
||||
|
||||
### Antes
|
||||
- ❌ Medicamentos almacenados localmente en SQLite
|
||||
- ❌ Necesidad de actualizar la base de datos manualmente
|
||||
- ❌ Datos posiblemente desactualizados
|
||||
- ✅ Respuestas rápidas (todo local)
|
||||
|
||||
### Después
|
||||
- ✅ Medicamentos siempre actualizados desde CIMA
|
||||
- ✅ Datos oficiales de la Agencia Española de Medicamentos
|
||||
- ✅ Sin necesidad de mantenimiento de medicamentos
|
||||
- ✅ Respuestas rápidas gracias a Redis cache
|
||||
- ✅ Fallback a cache si la API falla
|
||||
|
||||
## 🎉 ¡Migración Completada!
|
||||
|
||||
Si todo funciona correctamente:
|
||||
- ✅ Redis está conectado
|
||||
- ✅ Las búsquedas devuelven medicamentos de CIMA
|
||||
- ✅ El cache funciona (segunda búsqueda es más rápida)
|
||||
- ✅ Puedes vincular medicamentos a farmacias
|
||||
|
||||
## 📚 Recursos Adicionales
|
||||
|
||||
- [API de CIMA](https://cima.aemps.es/)
|
||||
- [Documentación de Redis](https://redis.io/documentation)
|
||||
- [README principal](./README.md)
|
||||
|
||||
## 💬 Soporte
|
||||
|
||||
Si encuentras problemas durante la migración, verifica:
|
||||
1. Los logs del backend
|
||||
2. El estado de Redis: `redis-cli ping`
|
||||
3. La conectividad a internet (necesaria para CIMA API)
|
||||
Reference in New Issue
Block a user