API, Backend & Frontend

This commit is contained in:
Ichitux
2026-04-01 01:18:21 +02:00
parent 331c04fbef
commit 0fe8ec9bc0
44 changed files with 10060 additions and 0 deletions

216
MIGRATION.md Normal file
View 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)