codigo0/PLAN_LIMPIEZA_DOCKER.md

470 lines
14 KiB
Markdown

# 📁 PLAN DE LIMPIEZA Y OPTIMIZACIÓN DEL PROYECTO (Docker)
**Proyecto:** EMERGES TES - Protocolo Rápido
**Base:** React 18 + TypeScript + Vite + TailwindCSS + **Docker**
**Fecha:** 2024-12-19
**Ruta:** `/home/planetazuzu/protocolo-r-pido`
---
## 🎯 OBJETIVOS DE LIMPIEZA
- ✅ Eliminar archivos innecesarios (backups, duplicados, obsoletos)
- ✅ Optimizar estructura (organizar recursos pendientes)
- ✅ Reducir tamaño del proyecto sin afectar funcionalidad
- ✅ Mantener integridad de la aplicación PWA
- ✅ Consolidar documentación redundante
-**Optimizar para despliegue con Docker**
---
## 🐳 DESPLIEGUE CON DOCKER (Nuevo)
### Configuración Docker Creada
-`Dockerfile` - Multi-stage build optimizado
-`docker-compose.yml` - Gestión simplificada
-`deploy-docker.sh` - Script de despliegue
-`.dockerignore` - Optimización de build
-`.github/workflows/deploy-docker.yml` - Auto-deploy
-`DEPLOYMENT_DOCKER.md` - Documentación completa
### Ventajas de Docker
-**Aislamiento:** App corre en su propio contenedor
-**Consistencia:** Mismo entorno en dev y producción
-**Fácil despliegue:** Un solo comando
-**Rollback fácil:** Volver a imagen anterior
-**Sin dependencias:** No requiere Node.js en servidor
---
## 📂 ESTRUCTURA ACTUAL PARA LIMPIEZA
### 1. 📦 ARCHIVOS DEL SISTEMA Y TEMPORALES (ELIMINAR)
```bash
# Archivos del sistema operativo
find . -type f -name ".DS_Store" -delete
find . -type f -name "Thumbs.db" -delete
find . -type f -name ".localized" -delete
find . -type f -name "*.swp" -delete # Vim swap files
find . -type f -name "*.swo" -delete
# Logs de npm/yarn
find . -type f -name "npm-debug.log*" -delete
find . -type f -name "yarn-debug.log*" -delete
find . -type f -name "yarn-error.log*" -delete
# Archivos de IDE (pero mantener .vscode/extensions.json si existe)
rm -rf .idea/
rm -rf *.iml
rm -rf *.sublime-*
```
### 2. 🗑️ CARPETAS DE BACKUP Y REDUNDANTES (MOVER/ELIMINAR)
#### Carpeta principal a limpiar: `_BACKUP_MD/` (203 archivos)
```bash
# Crear carpeta de archivos eliminados (por si acaso)
mkdir -p ../deleted_backups_$(date +%Y%m%d)
# Mover archivos .md duplicados (ya existen en public/manual/)
find _BACKUP_MD/ -name "*.md" -exec mv {} ../deleted_backups_$(date +%Y%m%d)/ \;
# Mover archivos .docx (no necesarios en producción)
find _BACKUP_MD/ -name "*.docx" -exec mv {} ../deleted_backups_$(date +%Y%m%d)/ \;
# Mover scripts Python de backup
find _BACKUP_MD/ -name "*.py" -exec mv {} ../deleted_backups_$(date +%Y%m%d)/ \;
# Finalmente eliminar carpeta vacía
rmdir _BACKUP_MD/
```
#### Carpeta: `imagenes-pendientes/` (60 archivos)
```bash
# Verificar qué imágenes son realmente necesarias
echo "=== IMÁGENES PENDIENTES ==="
find imagenes-pendientes/ -type f \( -name "*.png" -o -name "*.jpg" -o -name "*.svg" \) | wc -l
# Mover imágenes que coinciden con nombres existentes en public/assets/
for img in imagenes-pendientes/*; do
base=$(basename "$img")
if [ ! -f "public/assets/infografias/$base" ]; then
echo "Manteniendo pendiente: $base"
else
echo "Duplicado, moviendo: $base"
mv "$img" ../deleted_backups_$(date +%Y%m%d)/
fi
done
# Si la carpeta queda vacía, eliminar
rmdir imagenes-pendientes/ 2>/dev/null || echo "Carpeta con archivos restantes"
```
#### Carpeta: `MANUAL_TES_DIGITAL/` (110 archivos .md)
```bash
# Esta carpeta parece duplicado de public/manual/
# Mover fuera del proyecto
mv MANUAL_TES_DIGITAL/ ../backup_manual_completo_$(date +%Y%m%d)/
```
### 3. 📝 DOCUMENTACIÓN REDUNDANTE (CONSOLIDAR)
```bash
# Crear carpeta organizada para documentación
mkdir -p docs/consolidated/
mkdir -p docs/archive/
# Archivos de deployment a mantener:
# - DEPLOYMENT_DOCKER.md (NUEVO - Docker)
# - DEPLOYMENT_SERVER.md (PM2)
# - VERCEL_DEPLOYMENT.md
# - DEPLOYMENT_GITHUB.md
# - RESUMEN_DEPLOY_8607.md
# Archivos de desarrollo a mantener:
# - ESTADO_FUNCIONALIDADES.md
# - SPA_ROUTING_CONFIG.md
# - CHECKLIST_PWA_COMPLETA.md
# - VERIFICACION_PWA.md
# Mover el resto a archive
find . -maxdepth 1 -name "*.md" ! -name "README.md" ! -name "DEPLOYMENT_*.md" ! -name "RESUMEN_*.md" ! -name "ESTADO_*.md" ! -name "SPA_*.md" ! -name "CHECKLIST_*.md" ! -name "VERIFICACION_*.md" -exec mv {} docs/archive/ \;
```
### 4. 🐍 SCRIPTS PYTHON OBSOLETOS
```bash
# Crear carpeta para scripts de mantenimiento
mkdir -p scripts/maintenance/
mkdir -p scripts/archive/
# Scripts que SÍ deben mantenerse (útiles):
# - scripts/verificar-manual.ts (TypeScript)
# Mover scripts obsoletos a archive
mv analisis_profundo_contenido.py scripts/archive/ 2>/dev/null || true
mv buscar_multimedia_exhaustivo.py scripts/archive/ 2>/dev/null || true
mv copiar_archivos_manual.py scripts/archive/ 2>/dev/null || true
mv generar_documento_word.py scripts/archive/ 2>/dev/null || true
mv generar_reportes_app.py scripts/archive/ 2>/dev/null || true
mv mejorar_reporte_1.py scripts/archive/ 2>/dev/null || true
mv reorganizar_proyecto.sh scripts/archive/ 2>/dev/null || true
```
### 5. ⚙️ CONFIGURACIONES DE DESPLIEGUE
#### Con Docker (NUEVO - Mantener)
```bash
# Configuraciones Docker a MANTENER:
# - Dockerfile ✅
# - docker-compose.yml ✅
# - deploy-docker.sh ✅
# - .dockerignore ✅
# - .github/workflows/deploy-docker.yml ✅
```
#### Sin Docker (Opcional - Mover a backup)
```bash
# Configuraciones a MOVER a backup (pero mantener en repo):
mkdir -p configs/backup/
# PM2 (alternativa a Docker)
# - ecosystem.config.js (mantener por si acaso)
# - deploy.sh (mantener por si acaso)
# Otras plataformas (mover a backup)
mv vercel.json configs/backup/ 2>/dev/null || true
mv netlify.toml configs/backup/ 2>/dev/null || true
mv nginx.conf.example configs/backup/ 2>/dev/null || true
mv public/.htaccess configs/backup/ 2>/dev/null || true
mv public/_redirects configs/backup/ 2>/dev/null || true
```
### 6. 🗂️ OPTIMIZAR ESTRUCTURA DE ARCHIVOS
```bash
# 1. Limpiar node_modules (se reinstalarán en Docker build)
rm -rf node_modules
rm -f package-lock.json
# 2. Verificar archivos grandes
find . -type f -size +5M 2>/dev/null | head -10
# 3. Limpiar posibles builds anteriores
rm -rf dist/
rm -rf build/
rm -rf .next/
rm -rf out/
# 4. Limpiar imágenes Docker antiguas (opcional)
docker system prune -a --volumes 2>/dev/null || true
```
---
## 📋 SCRIPT COMPLETO DE LIMPIEZA (Docker)
```bash
#!/bin/bash
# cleanup_project_docker.sh
set -e # Detenerse en errores
echo "🚀 INICIANDO LIMPIEZA DEL PROYECTO (Docker)"
echo "==========================================="
# 1. Backup del estado actual
BACKUP_DIR="../project_backup_$(date +%Y%m%d_%H%M%S)"
echo "📦 Creando backup en: $BACKUP_DIR"
mkdir -p "$BACKUP_DIR"
tar -czf "$BACKUP_DIR/project_backup.tar.gz" . --exclude='node_modules' --exclude='dist' --exclude='.git'
# 2. Archivos del sistema
echo "🗑️ Limpiando archivos del sistema..."
find . -type f \( -name ".DS_Store" -o -name "Thumbs.db" -o -name "*.swp" -o -name "*.swo" \) -delete
# 3. Logs
echo "📝 Eliminando logs..."
find . -type f -name "*.log" -delete
# 4. Carpetas de backup grandes
if [ -d "_BACKUP_MD" ]; then
echo "📚 Manejando _BACKUP_MD..."
mkdir -p "$BACKUP_DIR/backup_md"
mv _BACKUP_MD/* "$BACKUP_DIR/backup_md/" 2>/dev/null || true
rmdir _BACKUP_MD 2>/dev/null || true
fi
# 5. Manual duplicado
if [ -d "MANUAL_TES_DIGITAL" ]; then
echo "📖 Manejando manual duplicado..."
mv MANUAL_TES_DIGITAL "$BACKUP_DIR/"
fi
# 6. Imágenes pendientes (solo mover duplicados)
if [ -d "imagenes-pendientes" ]; then
echo "🖼️ Procesando imágenes pendientes..."
mkdir -p "$BACKUP_DIR/imagenes_pendientes"
for img in imagenes-pendientes/*; do
if [ -f "$img" ]; then
base=$(basename "$img")
if [ -f "public/assets/infografias/$base" ]; then
mv "$img" "$BACKUP_DIR/imagenes_pendientes/"
fi
fi
done
fi
# 7. Limpiar node_modules (Docker los instalará)
echo "📦 Limpiando dependencias locales..."
rm -rf node_modules
rm -f package-lock.json
# 8. Limpiar builds anteriores
echo "🏗️ Limpiando builds anteriores..."
rm -rf dist/ build/ .next/ out/
# 9. Organizar documentación
echo "📄 Organizando documentación..."
mkdir -p docs/consolidated
mkdir -p docs/archive
# Mover archivos .md a archive (excepto esenciales)
find . -maxdepth 1 -name "*.md" ! -name "README.md" ! -name "DEPLOYMENT_*.md" ! -name "RESUMEN_*.md" ! -name "ESTADO_*.md" ! -name "SPA_*.md" ! -name "CHECKLIST_*.md" ! -name "VERIFICACION_*.md" -exec mv {} docs/archive/ \;
# 10. Scripts de mantenimiento
echo "🐍 Organizando scripts..."
mkdir -p scripts/archive
mv *.py scripts/archive/ 2>/dev/null || true
mv *.sh scripts/archive/ 2>/dev/null || true
# Mantener scripts esenciales en su lugar
if [ -f "scripts/verificar-manual.ts" ]; then
mv scripts/archive/verificar-manual.ts scripts/ 2>/dev/null || true
fi
# Mantener scripts de deploy
if [ -f "deploy-docker.sh" ]; then
mv scripts/archive/deploy-docker.sh . 2>/dev/null || true
fi
# 11. Verificar Docker
echo "🐳 Verificando Docker..."
if command -v docker &> /dev/null; then
echo "✅ Docker instalado"
docker --version
else
echo "⚠️ Docker no instalado (opcional para desarrollo local)"
fi
echo "✅ LIMPIEZA COMPLETADA"
echo "======================"
echo "Espacio liberado aproximado:"
du -sh . "$BACKUP_DIR"
echo ""
echo "🎯 Proyecto listo para desarrollo con Docker"
echo ""
echo "📝 Próximos pasos:"
echo " 1. docker-compose up -d --build (construir y ejecutar)"
echo " 2. docker-compose logs -f (ver logs)"
echo " 3. ./deploy-docker.sh (deploy completo)"
```
---
## 🔍 VERIFICACIÓN POST-LIMPIEZA (Docker)
```bash
# 1. Verificar que Docker funciona
docker --version
docker compose version
# 2. Construir imagen Docker
docker-compose build
# 3. Verificar que la imagen se construyó
docker images | grep emerges-tes
# 4. Ejecutar contenedor
docker-compose up -d
# 5. Verificar que la app funciona
curl http://localhost:8607
# 6. Ver logs
docker-compose logs -f
# 7. Verificar tamaño del proyecto
du -sh . # Debería ser < 100MB (sin node_modules)
# 7. Verificar estructura final
tree -L 2 -I 'node_modules|dist|build|.git'
```
---
## 🏗️ ESTRUCTURA FINAL OPTIMIZADA (Docker)
```
protocolo-r-pido/
├── public/ # Archivos públicos (78 archivos)
│ ├── assets/ # Imágenes optimizadas
│ ├── manual/ # Manual médico (78 .md)
│ ├── manifest.json
│ ├── sw.js
│ └── favicon.svg
├── src/ # Código fuente (~136 archivos)
│ ├── components/ # Componentes React
│ ├── data/ # Datos TypeScript
│ ├── hooks/ # Custom hooks
│ ├── pages/ # Páginas
│ └── utils/ # Utilidades
├── docs/ # Documentación consolidada
│ ├── consolidated/ # Docs esenciales
│ └── archive/ # Docs antiguas
├── scripts/ # Scripts esenciales
│ └── verificar-manual.ts
├── .github/ # CI/CD
│ └── workflows/
│ ├── deploy.yml # PM2 (alternativa)
│ └── deploy-docker.yml # Docker (principal)
├── Dockerfile # 🐳 Docker build
├── docker-compose.yml # 🐳 Docker compose
├── deploy-docker.sh # 🐳 Script deploy Docker
├── .dockerignore # 🐳 Docker ignore
├── package.json
├── vite.config.ts
├── tailwind.config.ts
├── tsconfig.*.json
└── README.md
```
---
## 📊 ESTIMACIÓN DE ESPACIO LIBERADO
| Antes | Después | Liberado |
|-------|---------|----------|
| ~500 MB | ~150 MB | ~350 MB |
| 400+ archivos | ~250 archivos | ~150 archivos |
**Con Docker:**
- ✅ No necesita `node_modules` en servidor
- ✅ Build se hace en contenedor
- ✅ Imagen Docker optimizada (~200MB)
---
## ⚠️ PRECAUCIONES
-**Backup primero:** El script crea backup automático
-**Probar Docker:** Verificar que `docker-compose build` funcione
-**Verificar PWA:** Service Worker y manifest deben funcionar
-**Manual médico:** No eliminar archivos de `public/manual/`
-**Imágenes esenciales:** No eliminar de `public/assets/`
-**Dockerfile:** No eliminar archivos Docker
---
## 🔄 PROCESO RECOMENDADO (Docker)
```bash
# 1. Backup manual extra (por si acaso)
cp -r /home/planetazuzu/protocolo-r-pido /home/planetazuzu/protocolo-backup
# 2. Ejecutar limpieza
cd /home/planetazuzu/protocolo-r-pido
bash cleanup_project_docker.sh
# 3. Verificar Docker
docker-compose build
docker-compose up -d
# 4. Verificar que funciona
curl http://localhost:8607
# 5. Si todo está bien, eliminar backups viejos
# (Mantener solo el más reciente)
```
---
## 🐳 VENTAJAS DE DOCKER EN LIMPIEZA
1. **No necesita node_modules local:** Docker los instala en build
2. **Build aislado:** No contamina el sistema
3. **Fácil rollback:** Volver a imagen anterior
4. **Reproducible:** Mismo resultado en cualquier servidor
5. **Limpieza automática:** `.dockerignore` excluye archivos innecesarios
---
## 📝 CHECKLIST DE LIMPIEZA CON DOCKER
- [ ] Backup creado
- [ ] Archivos del sistema eliminados
- [ ] Carpetas de backup movidas
- [ ] Documentación consolidada
- [ ] Scripts obsoletos archivados
- [ ] Configuraciones organizadas
- [ ] `node_modules` eliminado (Docker lo instalará)
- [ ] Builds anteriores eliminados
- [ ] Dockerfile verificado
- [ ] `docker-compose build` funciona
- [ ] `docker-compose up -d` funciona
- [ ] App accesible en `http://localhost:8607`
- [ ] Logs accesibles: `docker-compose logs -f`
---
**Última actualización:** 2024-12-19
**Despliegue:** Docker (puerto 8607)