From adfef5b771be6dca463883a7683d383128f6a3be Mon Sep 17 00:00:00 2001 From: planetazuzu Date: Tue, 23 Dec 2025 10:07:15 +0100 Subject: [PATCH] =?UTF-8?q?feat:=20a=C3=B1adir=20script=20de=20limpieza=20?= =?UTF-8?q?completo=20por=20fases?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Script cleanup_completo.sh con 6 fases de limpieza - Fase 1: Eliminar archivos innecesarios - Fase 2: Mover backups y duplicados - Fase 3: Simplificar configuraciones - Fase 4: Consolidar documentación - Fase 5: Limpiar scripts - Fase 6: Reinstalación y verificación - Documentación completa en PLAN_LIMPIEZA_FASES.md --- .dockerignore | 100 +++++----- PLAN_LIMPIEZA_FASES.md | 364 ++++++++++++++++++++++++++++++++++++ cleanup_completo.sh | 410 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 830 insertions(+), 44 deletions(-) create mode 100644 PLAN_LIMPIEZA_FASES.md create mode 100644 cleanup_completo.sh diff --git a/.dockerignore b/.dockerignore index 075e6140..e3a432b1 100644 --- a/.dockerignore +++ b/.dockerignore @@ -3,70 +3,82 @@ node_modules npm-debug.log* yarn-debug.log* yarn-error.log* -pnpm-debug.log* -# Build output +# Build outputs dist -dist-ssr build +.next +out +dist-ssr + +# Development files +.vscode +.idea +*.swp +*.swo +*~ +.DS_Store +Thumbs.db # Environment files .env .env.local .env.production .env.development -.env*.local - -# IDE -.vscode -.idea -*.swp -*.swo -*~ - -# OS -.DS_Store -Thumbs.db # Git .git .gitignore -# Documentation (opcional - descomentar si no quieres incluirlos) -# *.md -# !README.md - -# Backups -_BACKUP_MD -backup_* - -# Temporary files -*.bak -*.backup -*.tmp -*.log - -# Scripts de desarrollo (no necesarios en producción) -scripts/*.py -*.py -__pycache__/ -*.pyc - -# Imágenes pendientes (no necesarias en producción) +# Documentation (no necesario en imagen Docker) +*.md +!README.md +docs/ +_BACKUP_MD/ +MANUAL_TES_DIGITAL/ imagenes-pendientes/ -# Archivos de configuración de desarrollo +# Scripts (no necesario en producción) +scripts/ +*.py +*.sh +!deploy-docker.sh + +# Configuraciones de desarrollo .eslintrc* .prettierrc* .editorconfig +# Backups y temporales +*.bak +*.backup +backup_*/ +*_backup_* + +# Logs +logs/ +*.log + # Testing -coverage -.nyc_output +coverage/ +.nyc_output/ -# Misc -*.suo -*.ntvs* -*.njsproj -*.sln +# Docker files (no copiar dentro de la imagen) +Dockerfile +docker-compose*.yml +.dockerignore +# CI/CD +.github/ + +# Configuraciones de despliegue no Docker +vercel.json +netlify.toml +nginx.conf.example +ecosystem.config.js +deploy.sh +webhook-deploy.sh + +# Archivos de configuración de IDE +*.iml +*.sublime-* diff --git a/PLAN_LIMPIEZA_FASES.md b/PLAN_LIMPIEZA_FASES.md new file mode 100644 index 00000000..10f6e6ee --- /dev/null +++ b/PLAN_LIMPIEZA_FASES.md @@ -0,0 +1,364 @@ +# 🧹 Plan de Limpieza Completo - EMERGES TES + +**Fecha:** 2024-12-19 +**Script:** `cleanup_completo.sh` + +--- + +## 📋 Resumen Ejecutivo + +Este plan ejecuta una limpieza completa del proyecto en **6 fases**, moviendo archivos innecesarios a carpetas de revisión y manteniendo solo lo esencial. + +**Resultado esperado:** +- ~250 archivos (en lugar de 400+) +- ~150MB (en lugar de 250MB+) +- Estructura clara y organizada +- Todas las funcionalidades intactas + +--- + +## 🔄 Fases de Limpieza + +### **FASE 1: ARCHIVOS INNECESARIOS** (Eliminar inmediatamente) + +**Acciones:** +- ✅ Eliminar archivos del sistema (.DS_Store, Thumbs.db) +- ✅ Eliminar logs (*.log, npm-debug.log*) +- ✅ Eliminar builds anteriores (dist/, build/, .next/) +- ✅ Eliminar node_modules/ (se reinstalarán) + +**Impacto:** Limpieza inmediata, sin riesgo + +--- + +### **FASE 2: BACKUPS Y DUPLICADOS** (Mover a revisión) + +**Archivos movidos a `../EMERGES_REVISION_YYYYMMDD/`:** + +1. **`_BACKUP_MD/`** (203 archivos) + - 129 archivos .md + - 62 archivos .docx + - 7 scripts Python + - **Acción:** Mover para revisión + +2. **`MANUAL_TES_DIGITAL/`** (110 archivos .md) + - Duplicado de `public/manual/` + - **Acción:** Mover para revisión + +3. **`imagenes-pendientes/`** (60 archivos) + - 50 imágenes PNG + - 9 imágenes SVG + - **Acción:** Mover para revisión + +**Impacto:** Libera ~100MB, archivos disponibles para revisión + +--- + +### **FASE 3: CONFIGURACIONES REDUNDANTES** (Simplificar) + +**Configuraciones movidas a `config_backup/`:** + +- `vercel.json` (si no usas Vercel) +- `netlify.toml` (si no usas Netlify) +- `nginx.conf.example` (solo ejemplo) +- `public/.htaccess` (si no usas Apache) +- `public/_redirects` (si no usas Netlify) + +**Configuraciones mantenidas:** + +- ✅ `Dockerfile` +- ✅ `docker-compose.yml` +- ✅ `docker-compose.prod.yml` +- ✅ `deploy-docker.sh` +- ✅ `ecosystem.config.js` (PM2) +- ✅ `deploy.sh` +- ✅ `webhook-deploy.sh` +- ✅ `.github/workflows/deploy.yml` + +**Impacto:** Simplifica estructura, mantiene solo lo usado + +--- + +### **FASE 4: DOCUMENTACIÓN** (Consolidar) + +**Documentación esencial → `docs/consolidado/`:** + +1. `DEPLOYMENT_SERVER.md` +2. `DEPLOYMENT_DOCKER.md` +3. `DEPLOYMENT_GITHUB.md` +4. `VERCEL_DEPLOYMENT.md` +5. `RESUMEN_DEPLOY_8607.md` +6. `VERIFICACION_PWA.md` +7. `ESTADO_FUNCIONALIDADES.md` +8. `SPA_ROUTING_CONFIG.md` +9. `CHECKLIST_PWA_COMPLETA.md` +10. `ANALISIS_TECNOLOGICO_PROYECTO.md` +11. `PLAN_ESTRUCTURA_PSIQUIATRIA.md` +12. `FASE_1_FALTANTE_DETALLADO.md` +13. `SISTEMA_MEDIOS_VISUALES.md` + +**Resto de documentación → `docs/archivo/`:** + +- Todos los demás archivos .md (excepto README.md) + +**README.md:** Actualizado con información esencial + +**Impacto:** Documentación organizada y accesible + +--- + +### **FASE 5: SCRIPTS** (Limpiar) + +**Scripts Python → `../EMERGES_REVISION_YYYYMMDD/scripts_python/`:** + +- Todos los scripts .py de la raíz +- Scripts .py de `scripts/` + +**Scripts mantenidos:** + +- ✅ `deploy.sh` +- ✅ `deploy-docker.sh` +- ✅ `webhook-deploy.sh` +- ✅ `cleanup_completo.sh` +- ✅ `cleanup_project.sh` +- ✅ `scripts/verificar-manual.ts` + +**Impacto:** Solo scripts esenciales visibles + +--- + +### **FASE 6: REINSTALACIÓN Y VERIFICACIÓN** + +**Acciones:** +- ✅ Reinstalar dependencias (`npm install`) +- ✅ Verificar build (`npm run build`) +- ✅ Mostrar resumen final + +**Impacto:** Proyecto funcional y verificado + +--- + +## 📊 Estructura Final Optimizada + +``` +protocolo-r-pido/ +├── public/ # Archivos públicos +│ ├── assets/infografias/ # 46+ imágenes organizadas +│ ├── manual/ # 78 archivos .md +│ ├── manifest.json +│ ├── sw.js +│ └── favicon.svg +├── src/ # ~136 archivos TS/TSX +│ ├── components/ # 40+ componentes +│ ├── data/ # Datos TypeScript +│ ├── hooks/ # Custom hooks +│ ├── pages/ # 20+ páginas +│ └── [otros] +├── docs/ +│ ├── consolidado/ # 13 documentos esenciales +│ └── archivo/ # 30+ documentos para referencia +├── scripts/ +│ └── verificar-manual.ts # Script esencial +├── config_backup/ # Configuraciones no usadas +├── .github/ +│ └── workflows/deploy.yml +├── Dockerfile # ✅ Mantenido +├── docker-compose.yml # ✅ Mantenido +├── docker-compose.prod.yml # ✅ Mantenido +├── deploy-docker.sh # ✅ Mantenido +├── ecosystem.config.js # ✅ Mantenido (PM2) +├── deploy.sh # ✅ Mantenido +├── webhook-deploy.sh # ✅ Mantenido +├── cleanup_completo.sh # ✅ Nuevo +├── package.json +├── vite.config.ts +├── tailwind.config.ts +└── README.md # ✅ Actualizado +``` + +--- + +## 🚀 Uso del Script + +### Ejecutar Limpieza Completa + +```bash +# Hacer ejecutable (si no lo está) +chmod +x cleanup_completo.sh + +# Ejecutar limpieza +./cleanup_completo.sh +``` + +El script: +1. ✅ Crea backup completo automático +2. ✅ Pide confirmación antes de continuar +3. ✅ Ejecuta las 6 fases secuencialmente +4. ✅ Muestra progreso detallado +5. ✅ Verifica build al final +6. ✅ Muestra resumen completo + +--- + +## ✅ Verificaciones Post-Limpieza + +### 1. Build del Proyecto + +```bash +npm run build +``` + +**Esperado:** Build exitoso sin errores + +--- + +### 2. Desarrollo Local + +```bash +npm run dev +``` + +**Esperado:** App funciona en `http://localhost:8096` + +--- + +### 3. Docker + +```bash +docker-compose up --build +``` + +**Esperado:** Contenedor inicia correctamente en puerto 8607 + +--- + +### 4. PWA Funcionalidad + +```bash +npm run build +npx serve -s dist -l 3000 +``` + +**Verificar en navegador:** +- ✅ Service Worker registrado +- ✅ Manifest funciona +- ✅ Modo offline funciona +- ✅ Instalación PWA disponible + +--- + +### 5. Funcionalidades Clave + +**Verificar:** +- ✅ Manual médico (todos los .md accesibles) +- ✅ Vademécum de fármacos +- ✅ Protocolos de emergencia +- ✅ Calculadoras médicas +- ✅ Favoritos y búsqueda +- ✅ Navegación entre páginas + +--- + +## 📊 Espacio Liberado Estimado + +| Elemento | Archivos | Espacio | Acción | +|----------|----------|---------|--------| +| `_BACKUP_MD/` | 203 | ~50MB | Mover a revisión | +| `MANUAL_TES_DIGITAL/` | 110 | ~30MB | Mover a revisión | +| `imagenes-pendientes/` | 60 | ~20MB | Mover a revisión | +| Documentación .md | 40+ | ~5MB | Consolidar | +| Configuraciones | 10+ | ~1MB | Mover a backup | +| Logs y temporales | Varios | ~5MB | Eliminar | +| **TOTAL** | **400+** | **~110MB** | **Optimizado** | + +--- + +## ⚠️ Precauciones + +### Antes de Ejecutar + +1. ✅ **Backup manual extra** (recomendado): + ```bash + cp -r /home/planetazuzu/protocolo-r-pido /home/planetazuzu/protocolo-backup-manual + ``` + +2. ✅ **Verificar que no hay cambios sin commit**: + ```bash + git status + ``` + +3. ✅ **Commit de cambios pendientes** (si los hay): + ```bash + git add -A + git commit -m "backup antes de limpieza" + ``` + +### Después de Ejecutar + +1. ✅ **Revisar `../EMERGES_REVISION_YYYYMMDD/`** antes de eliminar +2. ✅ **Verificar todas las funcionalidades** +3. ✅ **Probar build y deploy** +4. ✅ **Si todo está bien, eliminar backups antiguos** (mantener solo el más reciente) + +--- + +## 🔄 Mantenimiento Recomendado + +### Script de Mantenimiento Mensual + +Crear `monthly_cleanup.sh`: + +```bash +#!/bin/bash +echo "🧼 Mantenimiento mensual del proyecto" + +# 1. Limpiar node_modules y reinstalar +rm -rf node_modules package-lock.json +npm install + +# 2. Limpiar builds +rm -rf dist/ + +# 3. Verificar dependencias +npm outdated +npm audit + +# 4. Rebuild +npm run build + +echo "✅ Mantenimiento completado" +``` + +--- + +## 🎯 Resultado Final + +Después de la limpieza, el proyecto tendrá: + +- ✅ **~250 archivos** (en lugar de 400+) +- ✅ **~150MB** (en lugar de 250MB+) +- ✅ **Estructura clara y organizada** +- ✅ **Todas las funcionalidades intactas** +- ✅ **PWA completamente funcional** +- ✅ **Deployment simplificado** +- ✅ **Documentación accesible** + +--- + +## 📞 Soporte + +Si algo falla después de la limpieza: + +1. **Restaurar desde backup:** + ```bash + cd .. + tar -xzf EMERGES_BACKUP_YYYYMMDD_HHMMSS/proyecto_completo.tar.gz + ``` + +2. **Revisar logs del script** (si hay errores) + +3. **Verificar que todas las dependencias están instaladas** + +--- + +**Última actualización:** 2024-12-19 diff --git a/cleanup_completo.sh b/cleanup_completo.sh new file mode 100644 index 00000000..5dd03420 --- /dev/null +++ b/cleanup_completo.sh @@ -0,0 +1,410 @@ +#!/bin/bash +# cleanup_completo.sh +# Limpieza completa y optimización de EMERGES TES +# Fase por fase con verificaciones de seguridad + +set -e # Detenerse en errores + +# Colores para output +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +RED='\033[0;31m' +BLUE='\033[0;34m' +CYAN='\033[0;36m' +NC='\033[0m' # No Color + +# Variables +BACKUP_DIR="../EMERGES_BACKUP_$(date +%Y%m%d_%H%M%S)" +REVIEW_DIR="../EMERGES_REVISION_$(date +%Y%m%d)" +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" + +echo -e "${BLUE}════════════════════════════════════════════════════════${NC}" +echo -e "${BLUE}🧹 LIMPIEZA COMPLETA DE EMERGES TES${NC}" +echo -e "${BLUE}════════════════════════════════════════════════════════${NC}" +echo "" +echo -e "${CYAN}📦 Backup completo: ${BACKUP_DIR}${NC}" +echo -e "${CYAN}📋 Archivos para revisión: ${REVIEW_DIR}${NC}" +echo "" + +# Confirmación +read -p "$(echo -e ${YELLOW}¿Continuar con la limpieza? [y/N]: ${NC})" -n 1 -r +echo +if [[ ! $REPLY =~ ^[Yy]$ ]]; then + echo -e "${RED}❌ Limpieza cancelada${NC}" + exit 1 +fi + +# Crear directorios +mkdir -p "$BACKUP_DIR" +mkdir -p "$REVIEW_DIR" +mkdir -p config_backup/ +mkdir -p docs/consolidado/ +mkdir -p docs/archivo/ + +# ============================================================================ +# FASE 1: ARCHIVOS INNECESARIOS (ELIMINAR INMEDIATAMENTE) +# ============================================================================ +echo -e "${BLUE}════════════════════════════════════════════════════════${NC}" +echo -e "${BLUE}FASE 1: ARCHIVOS INNECESARIOS${NC}" +echo -e "${BLUE}════════════════════════════════════════════════════════${NC}" +echo "" + +echo -e "${YELLOW}[1.1] Creando backup completo del proyecto...${NC}" +tar --exclude='node_modules' \ + --exclude='dist' \ + --exclude='build' \ + --exclude='.next' \ + --exclude='out' \ + --exclude='.git' \ + -czf "$BACKUP_DIR/proyecto_completo.tar.gz" . 2>/dev/null || { + echo -e "${RED}⚠️ No se pudo crear backup completo, continuando...${NC}" +} +echo -e "${GREEN}✅ Backup completo creado${NC}" +echo "" + +echo -e "${YELLOW}[1.2] Eliminando archivos del sistema...${NC}" +find . -type f \( -name ".DS_Store" -o -name "Thumbs.db" -o -name ".localized" \) -delete 2>/dev/null || true +COUNT=$(find . -type f \( -name ".DS_Store" -o -name "Thumbs.db" \) 2>/dev/null | wc -l) +if [ "$COUNT" -eq 0 ]; then + echo -e "${GREEN}✅ Archivos del sistema eliminados${NC}" +else + echo -e "${YELLOW}⚠️ Quedan $COUNT archivos del sistema${NC}" +fi +echo "" + +echo -e "${YELLOW}[1.3] Eliminando logs...${NC}" +find . -type f \( -name "*.log" -o -name "npm-debug.log*" -o -name "yarn-debug.log*" -o -name "yarn-error.log*" \) -delete 2>/dev/null || true +echo -e "${GREEN}✅ Logs eliminados${NC}" +echo "" + +echo -e "${YELLOW}[1.4] Eliminando builds y cachés...${NC}" +rm -rf dist/ build/ .next/ out/ .cache/ 2>/dev/null || true +echo -e "${GREEN}✅ Builds y cachés eliminados${NC}" +echo "" + +echo -e "${YELLOW}[1.5] Eliminando node_modules y package-lock.json...${NC}" +rm -rf node_modules/ 2>/dev/null || true +rm -f package-lock.json 2>/dev/null || true +echo -e "${GREEN}✅ Dependencias eliminadas (se reinstalarán después)${NC}" +echo "" + +# ============================================================================ +# FASE 2: BACKUPS Y DUPLICADOS (MOVER/ARCHIVAR) +# ============================================================================ +echo -e "${BLUE}════════════════════════════════════════════════════════${NC}" +echo -e "${BLUE}FASE 2: BACKUPS Y DUPLICADOS${NC}" +echo -e "${BLUE}════════════════════════════════════════════════════════${NC}" +echo "" + +if [ -d "_BACKUP_MD" ]; then + echo -e "${YELLOW}[2.1] Moviendo _BACKUP_MD/ (203 archivos) para revisión...${NC}" + mv _BACKUP_MD/ "$REVIEW_DIR/_BACKUP_MD/" 2>/dev/null || true + echo -e "${GREEN}✅ _BACKUP_MD/ movido a $REVIEW_DIR/${NC}" +else + echo -e "${YELLOW}⏭️ [2.1] _BACKUP_MD/ no existe${NC}" +fi +echo "" + +if [ -d "MANUAL_TES_DIGITAL" ]; then + echo -e "${YELLOW}[2.2] Moviendo MANUAL_TES_DIGITAL/ (110 archivos) para revisión...${NC}" + mv MANUAL_TES_DIGITAL/ "$REVIEW_DIR/MANUAL_TES_DIGITAL/" 2>/dev/null || true + echo -e "${GREEN}✅ MANUAL_TES_DIGITAL/ movido a $REVIEW_DIR/${NC}" +else + echo -e "${YELLOW}⏭️ [2.2] MANUAL_TES_DIGITAL/ no existe${NC}" +fi +echo "" + +if [ -d "imagenes-pendientes" ]; then + echo -e "${YELLOW}[2.3] Moviendo imagenes-pendientes/ (60 archivos) para revisión...${NC}" + mv imagenes-pendientes/ "$REVIEW_DIR/imagenes_pendientes/" 2>/dev/null || true + echo -e "${GREEN}✅ imagenes-pendientes/ movido a $REVIEW_DIR/${NC}" +else + echo -e "${YELLOW}⏭️ [2.3] imagenes-pendientes/ no existe${NC}" +fi +echo "" + +# ============================================================================ +# FASE 3: CONFIGURACIONES REDUNDANTES (SIMPLIFICAR) +# ============================================================================ +echo -e "${BLUE}════════════════════════════════════════════════════════${NC}" +echo -e "${BLUE}FASE 3: CONFIGURACIONES REDUNDANTES${NC}" +echo -e "${BLUE}════════════════════════════════════════════════════════${NC}" +echo "" + +echo -e "${YELLOW}[3.1] Moviendo configuraciones no usadas a backup...${NC}" +CONFIGS_MOVED=0 + +for config in vercel.json netlify.toml nginx.conf.example; do + if [ -f "$config" ]; then + mv "$config" config_backup/ 2>/dev/null && { + echo -e " ✓ Movido: $config" + CONFIGS_MOVED=$((CONFIGS_MOVED + 1)) + } || true + fi +done + +if [ -f "public/.htaccess" ]; then + mv public/.htaccess config_backup/ 2>/dev/null && { + echo -e " ✓ Movido: public/.htaccess" + CONFIGS_MOVED=$((CONFIGS_MOVED + 1)) + } || true +fi + +if [ -f "public/_redirects" ]; then + mv public/_redirects config_backup/ 2>/dev/null && { + echo -e " ✓ Movido: public/_redirects" + CONFIGS_MOVED=$((CONFIGS_MOVED + 1)) + } || true +fi + +if [ "$CONFIGS_MOVED" -gt 0 ]; then + echo -e "${GREEN}✅ $CONFIGS_MOVED configuraciones movidas a config_backup/${NC}" +else + echo -e "${YELLOW}⏭️ No se encontraron configuraciones para mover${NC}" +fi +echo "" + +echo -e "${BLUE}📋 Configuraciones mantenidas (Docker + PM2 + GitHub Actions):${NC}" +echo -e " ✓ Dockerfile" +echo -e " ✓ docker-compose.yml" +echo -e " ✓ docker-compose.prod.yml" +echo -e " ✓ deploy-docker.sh" +echo -e " ✓ ecosystem.config.js (PM2)" +echo -e " ✓ deploy.sh" +echo -e " ✓ webhook-deploy.sh" +echo -e " ✓ .github/workflows/deploy.yml" +echo "" + +# ============================================================================ +# FASE 4: DOCUMENTACIÓN (CONSOLIDAR) +# ============================================================================ +echo -e "${BLUE}════════════════════════════════════════════════════════${NC}" +echo -e "${BLUE}FASE 4: DOCUMENTACIÓN${NC}" +echo -e "${BLUE}════════════════════════════════════════════════════════${NC}" +echo "" + +echo -e "${YELLOW}[4.1] Moviendo documentación esencial a docs/consolidado/...${NC}" +IMPORTANT_DOCS=( + "DEPLOYMENT_SERVER.md" + "DEPLOYMENT_DOCKER.md" + "DEPLOYMENT_GITHUB.md" + "VERCEL_DEPLOYMENT.md" + "RESUMEN_DEPLOY_8607.md" + "VERIFICACION_PWA.md" + "ESTADO_FUNCIONALIDADES.md" + "SPA_ROUTING_CONFIG.md" + "CHECKLIST_PWA_COMPLETA.md" + "ANALISIS_TECNOLOGICO_PROYECTO.md" + "PLAN_ESTRUCTURA_PSIQUIATRIA.md" + "FASE_1_FALTANTE_DETALLADO.md" + "SISTEMA_MEDIOS_VISUALES.md" +) + +DOCS_MOVED=0 +for doc in "${IMPORTANT_DOCS[@]}"; do + if [ -f "$doc" ]; then + mv "$doc" docs/consolidado/ 2>/dev/null && { + echo -e " ✓ Movido: $doc" + DOCS_MOVED=$((DOCS_MOVED + 1)) + } || true + fi +done + +if [ "$DOCS_MOVED" -gt 0 ]; then + echo -e "${GREEN}✅ $DOCS_MOVED documentos esenciales movidos a docs/consolidado/${NC}" +else + echo -e "${YELLOW}⏭️ No se encontraron documentos esenciales para mover${NC}" +fi +echo "" + +echo -e "${YELLOW}[4.2] Moviendo resto de documentación a docs/archivo/...${NC}" +ARCHIVE_COUNT=0 +find . -maxdepth 1 -name "*.md" ! -name "README.md" -type f | while read -r file; do + mv "$file" docs/archivo/ 2>/dev/null && { + ARCHIVE_COUNT=$((ARCHIVE_COUNT + 1)) + } || true +done + +# Contar archivos archivados +ARCHIVE_COUNT=$(find docs/archivo -name "*.md" 2>/dev/null | wc -l) +if [ "$ARCHIVE_COUNT" -gt 0 ]; then + echo -e "${GREEN}✅ $ARCHIVE_COUNT documentos movidos a docs/archivo/${NC}" +else + echo -e "${YELLOW}⏭️ No se encontraron documentos para archivar${NC}" +fi +echo "" + +echo -e "${YELLOW}[4.3] Creando README.md limpio...${NC}" +cat > README.md << 'EOF' +# EMERGES TES - Protocolo Rápido + +Aplicación PWA para protocolos médicos de emergencia. + +## 🚑 Características + +- **Protocolos de emergencia** (RCP, vía aérea, shock, etc.) +- **Vademécum de fármacos** con dosis, indicaciones y contraindicaciones +- **Calculadoras médicas** (Glasgow, perfusiones) +- **Guías de actuación en escena** (seguridad, ABCDE, triage) +- **Diseño optimizado para móvil** y uso nocturno +- **Funciona offline** (PWA) + +## 🛠️ Stack Tecnológico + +- **React 18** + **TypeScript 5.8** +- **Vite 5.4** - Build tool +- **Tailwind CSS 3.4** + **shadcn/ui** - UI Framework +- **React Router 6.3** - Navegación SPA +- **PWA** - Service Worker + Manifest + +## 📦 Instalación + +```bash +npm install +npm run dev # Desarrollo (localhost:8096) +npm run build # Producción +``` + +## 🚀 Despliegue Principal + +- **Servidor:** PM2 en puerto 8607 +- **Docker:** `docker-compose up --build` +- **CI/CD:** GitHub Actions + +## 📚 Documentación + +Ver `docs/consolidado/` para documentación completa: +- Despliegue (Docker, PM2, GitHub Actions) +- PWA y Service Worker +- Estado de funcionalidades +- Análisis técnico + +## 📄 Licencia + +[Especificar licencia si aplica] + +--- + +**Desarrollado para Técnicos de Emergencias Sanitarias** +EOF +echo -e "${GREEN}✅ README.md actualizado${NC}" +echo "" + +# ============================================================================ +# FASE 5: SCRIPTS (LIMPIAR) +# ============================================================================ +echo -e "${BLUE}════════════════════════════════════════════════════════${NC}" +echo -e "${BLUE}FASE 5: SCRIPTS${NC}" +echo -e "${BLUE}════════════════════════════════════════════════════════${NC}" +echo "" + +echo -e "${YELLOW}[5.1] Moviendo scripts Python a revisión...${NC}" +PYTHON_COUNT=0 +for script in *.py; do + if [ -f "$script" ]; then + mv "$script" "$REVIEW_DIR/scripts_python/" 2>/dev/null && { + echo -e " ✓ Movido: $script" + PYTHON_COUNT=$((PYTHON_COUNT + 1)) + } || true + fi +done + +if [ "$PYTHON_COUNT" -gt 0 ]; then + echo -e "${GREEN}✅ $PYTHON_COUNT scripts Python movidos a $REVIEW_DIR/scripts_python/${NC}" +else + echo -e "${YELLOW}⏭️ No se encontraron scripts Python en la raíz${NC}" +fi +echo "" + +echo -e "${YELLOW}[5.2] Organizando scripts en scripts/...${NC}" +mkdir -p scripts/utiles/ + +# Mantener scripts esenciales +if [ -f "scripts/verificar-manual.ts" ]; then + mv scripts/verificar-manual.ts scripts/utiles/ 2>/dev/null || true + echo -e " ✓ Mantenido: scripts/verificar-manual.ts" +fi + +# Mover scripts Python de scripts/ a revisión +if [ -d "scripts" ]; then + for script in scripts/*.py; do + if [ -f "$script" ]; then + mv "$script" "$REVIEW_DIR/scripts_python/" 2>/dev/null && { + echo -e " ✓ Movido: $script" + } || true + fi + done +fi + +# Restaurar scripts útiles +if [ -d "scripts/utiles" ]; then + mv scripts/utiles/* scripts/ 2>/dev/null || true + rmdir scripts/utiles 2>/dev/null || true +fi + +echo -e "${GREEN}✅ Scripts organizados${NC}" +echo "" + +# ============================================================================ +# FASE 6: REINSTALACIÓN Y VERIFICACIÓN +# ============================================================================ +echo -e "${BLUE}════════════════════════════════════════════════════════${NC}" +echo -e "${BLUE}FASE 6: REINSTALACIÓN Y VERIFICACIÓN${NC}" +echo -e "${BLUE}════════════════════════════════════════════════════════${NC}" +echo "" + +echo -e "${YELLOW}[6.1] Reinstalando dependencias...${NC}" +npm install +echo -e "${GREEN}✅ Dependencias instaladas${NC}" +echo "" + +echo -e "${YELLOW}[6.2] Verificando build...${NC}" +if npm run build; then + echo -e "${GREEN}✅ Build exitoso${NC}" +else + echo -e "${RED}❌ Error en el build${NC}" + echo -e "${YELLOW}⚠️ Revisa los errores antes de continuar${NC}" + exit 1 +fi +echo "" + +# ============================================================================ +# RESUMEN FINAL +# ============================================================================ +echo -e "${GREEN}════════════════════════════════════════════════════════${NC}" +echo -e "${GREEN}✅ LIMPIEZA COMPLETADA${NC}" +echo -e "${GREEN}════════════════════════════════════════════════════════${NC}" +echo "" + +echo -e "${BLUE}📊 RESUMEN:${NC}" +echo -e " 📦 Backup completo: ${CYAN}$BACKUP_DIR${NC}" +echo -e " 📋 Archivos para revisión: ${CYAN}$REVIEW_DIR${NC}" +echo "" + +# Contar archivos movidos +BACKUP_FILES=$(find "$REVIEW_DIR" -type f 2>/dev/null | wc -l) +CONFIG_FILES=$(find config_backup -type f 2>/dev/null | wc -l) +DOC_FILES=$(find docs/consolidado docs/archivo -type f 2>/dev/null | wc -l) + +echo -e "${BLUE}📁 Archivos movidos:${NC}" +echo -e " 📚 Backups y duplicados: ${CYAN}$BACKUP_FILES archivos${NC}" +echo -e " ⚙️ Configuraciones: ${CYAN}$CONFIG_FILES archivos${NC}" +echo -e " 📄 Documentación: ${CYAN}$DOC_FILES archivos${NC}" +echo "" + +echo -e "${BLUE}🏗️ VERIFICACIONES RECOMENDADAS:${NC}" +echo -e " 1. ${CYAN}npm run dev${NC} # Desarrollo (localhost:8096)" +echo -e " 2. ${CYAN}npm run build${NC} # Build producción" +echo -e " 3. ${CYAN}docker-compose up --build${NC} # Docker" +echo -e " 4. Verificar PWA (Service Worker, Manifest)" +echo -e " 5. Probar funcionalidades principales" +echo "" + +echo -e "${YELLOW}⚠️ IMPORTANTE:${NC}" +echo -e " 1. Revisa ${CYAN}$REVIEW_DIR${NC} antes de eliminar nada" +echo -e " 2. Verifica que todas las funcionalidades funcionen" +echo -e " 3. Si todo está bien, puedes eliminar backups antiguos" +echo "" + +echo -e "${GREEN}🎯 Proyecto optimizado y listo para desarrollo${NC}" +echo ""