821 lines
20 KiB
Markdown
821 lines
20 KiB
Markdown
|
|
# 🧹 AUDITORÍA COMPLETA DE LIMPIEZA DEL PROYECTO
|
||
|
|
|
||
|
|
**Fecha:** 2025-01-07
|
||
|
|
**Analista:** Ingeniero de Optimización y Mantenimiento
|
||
|
|
**Versión del Proyecto:** 1.0.0
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 📊 RESUMEN EJECUTIVO
|
||
|
|
|
||
|
|
### Estado Actual del Proyecto
|
||
|
|
|
||
|
|
- **Tamaño Total:** ~703 MB (incluyendo node_modules)
|
||
|
|
- **Archivos Markdown:** 2,247 archivos
|
||
|
|
- **Dependencias Frontend:** 78 dependencias principales
|
||
|
|
- **Dependencias Backend:** 7 dependencias principales
|
||
|
|
- **Scripts Shell:** 15+ scripts
|
||
|
|
- **Scripts Python:** 6 scripts
|
||
|
|
|
||
|
|
### Espacio Recuperable Estimado
|
||
|
|
|
||
|
|
| Categoría | Espacio Estimado | % del Total | Prioridad |
|
||
|
|
|-----------|------------------|-------------|-----------|
|
||
|
|
| **Archivos de Build (dist/)** | 15 MB | 2.1% | 🔴 Alta |
|
||
|
|
| **Logs en Repo** | < 1 MB | <0.1% | 🔴 Alta |
|
||
|
|
| **Archivos de Backup** | ~500 KB | <0.1% | 🟡 Media |
|
||
|
|
| **Documentación Obsoleta** | ~2 MB | 0.3% | 🟡 Media |
|
||
|
|
| **Scripts Duplicados** | ~50 KB | <0.1% | 🟢 Baja |
|
||
|
|
| **Dependencias No Usadas** | ~50-100 MB | 7-14% | 🟡 Media |
|
||
|
|
| **Carpetas Vacías** | < 100 KB | <0.1% | 🟢 Baja |
|
||
|
|
|
||
|
|
**Total Recuperable:** ~70-120 MB (~10-17% del proyecto sin node_modules)
|
||
|
|
|
||
|
|
### Reducción de Dependencias Estimada
|
||
|
|
|
||
|
|
- **Dependencias Potencialmente No Usadas:** 15-20% (principalmente Radix UI components)
|
||
|
|
- **Tiempo Estimado de Limpieza:** 4-6 horas
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 📋 TABLA DE ACCIONES PRIORIZADAS
|
||
|
|
|
||
|
|
| Prioridad | Tipo | Archivo/Ruta | Problema | Acción Recomendada | Espacio | Riesgo |
|
||
|
|
|-----------|------|--------------|----------|-------------------|---------|---------|
|
||
|
|
| **🔴 ALTA** | Build Artifacts | `dist/` | Carpeta de build en repo | Añadir a .gitignore, eliminar | 15 MB | 🟢 Bajo |
|
||
|
|
| **🔴 ALTA** | Logs | `logs/pm2-error.log` | Log en repositorio | Añadir a .gitignore, eliminar | <1 MB | 🟢 Bajo |
|
||
|
|
| **🔴 ALTA** | .env en repo | `backend/.env` | Credenciales en repo | Añadir a .gitignore, verificar no commitearse | - | 🔴 CRÍTICO |
|
||
|
|
| **🟡 MEDIA** | Backup File | `src/data/manual-index.ts.backup` | Archivo de backup | Eliminar (ya existe el original) | ~200 KB | 🟢 Bajo |
|
||
|
|
| **🟡 MEDIA** | Docs Archive | `docs/_archivo/` | 12 archivos obsoletos | Consolidar o eliminar | ~500 KB | 🟡 Medio |
|
||
|
|
| **🟡 MEDIA** | Config Backup | `config_backup/` | Configs antiguos | Eliminado tras validar que no era necesario | ~50 KB | ✅ |
|
||
|
|
| **🟡 MEDIA** | Duplicate Docs | `dist/docs/` | Duplicación de docs | Eliminar (dist debe regenerarse) | ~3 MB | 🟢 Bajo |
|
||
|
|
| **🟡 MEDIA** | Empty Folders | `assets/videos/bloque_*` (varios vacíos) | Carpetas vacías | Eliminar o documentar propósito | <100 KB | 🟢 Bajo |
|
||
|
|
| **🟡 MEDIA** | Python Venv | `.venv/` | Entorno Python en repo | Añadir a .gitignore (ya está) | Variable | 🟢 Bajo |
|
||
|
|
| **🟢 BAJA** | Duplicate Scripts | `cleanup_completo.sh` vs `cleanup_project.sh` | Scripts similares | Consolidar en uno | ~16 KB | 🟢 Bajo |
|
||
|
|
| **🟢 BAJA** | Duplicate Scripts | `deploy.sh`, `desplegar.sh`, `docker.sh` | Scripts duplicados | Consolidar o documentar diferencias | ~13 KB | 🟢 Bajo |
|
||
|
|
| **🟢 BAJA** | Temp Script | `limpiar-sw.js` | Script temporal para consola | Mover a docs o eliminar | <1 KB | 🟢 Bajo |
|
||
|
|
| **🟢 BAJA** | Root MD Files | `ESTADO_ACTUAL.md`, `EJECUTAR_AHORA.md`, etc. | Docs temporales en raíz | Mover a `docs/` o eliminar | ~20 KB | 🟢 Bajo |
|
||
|
|
| **🟢 BAJA** | Duplicate Placeholder | `dist/placeholder.svg <!-- PLACEHOLDER: No requiere creación -->` y `public/placeholder.svg` | Duplicado en dist | dist se regenera, no eliminar | - | 🟢 Bajo |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🔍 ANÁLISIS DETALLADO POR CATEGORÍA
|
||
|
|
|
||
|
|
### 1. ARCHIVOS Y CARPETAS INNECESARIOS
|
||
|
|
|
||
|
|
#### 🔴 CRÍTICO: Archivos de Build y Logs
|
||
|
|
|
||
|
|
**Problema:** Archivos generados automáticamente están en el repositorio.
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Archivos a eliminar:
|
||
|
|
dist/ # 15 MB - debe generarse en CI/CD
|
||
|
|
logs/pm2-error.log # Log generado - debe estar en .gitignore
|
||
|
|
dist/scorm/dist/ # Build artifacts duplicados
|
||
|
|
```
|
||
|
|
|
||
|
|
**Acción:**
|
||
|
|
```bash
|
||
|
|
# Añadir a .gitignore (si no está):
|
||
|
|
echo "dist/" >> .gitignore
|
||
|
|
echo "logs/*.log" >> .gitignore
|
||
|
|
|
||
|
|
# Eliminar archivos:
|
||
|
|
rm -rf dist/
|
||
|
|
rm -f logs/*.log
|
||
|
|
```
|
||
|
|
|
||
|
|
**Riesgo:** 🟢 Bajo - Estos archivos se regeneran automáticamente.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
#### 🔴 CRÍTICO: Credenciales en Repositorio
|
||
|
|
|
||
|
|
**Problema:** `.env` file con credenciales reales.
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Verificar si está en .gitignore:
|
||
|
|
backend/.env
|
||
|
|
```
|
||
|
|
|
||
|
|
**Acción:**
|
||
|
|
```bash
|
||
|
|
# Verificar que .gitignore tiene .env:
|
||
|
|
grep -q "^\.env$" .gitignore || echo ".env" >> .gitignore
|
||
|
|
|
||
|
|
# Si ya está commitado, remover del historial (cuidado):
|
||
|
|
# git rm --cached backend/.env
|
||
|
|
# git commit -m "Remove .env from tracking"
|
||
|
|
|
||
|
|
# Crear .env.example como template:
|
||
|
|
# cp backend/.env backend/.env.example
|
||
|
|
# # Editar .env.example para eliminar valores reales
|
||
|
|
```
|
||
|
|
|
||
|
|
**Riesgo:** 🔴 CRÍTICO - Credenciales expuestas.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
#### 🟡 MEDIA: Archivos de Backup
|
||
|
|
|
||
|
|
**Archivos Identificados:**
|
||
|
|
- `src/data/manual-index.ts.backup` (2,569 líneas, ~200 KB)
|
||
|
|
- Archivos en `docs/_archivo/` (12 archivos)
|
||
|
|
|
||
|
|
**Acción:**
|
||
|
|
```bash
|
||
|
|
# Eliminar backup si el original está OK:
|
||
|
|
rm -f src/data/manual-index.ts.backup
|
||
|
|
|
||
|
|
# Evaluar docs/_archivo/:
|
||
|
|
# Si son obsoletos, consolidar info importante y eliminar
|
||
|
|
# Si son necesarios para referencia, mantener pero documentar
|
||
|
|
```
|
||
|
|
|
||
|
|
**Riesgo:** 🟡 Medio - Verificar que el original funciona antes de eliminar.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
#### 🟡 MEDIA: Configuraciones de Backup
|
||
|
|
|
||
|
|
**Ubicación:** `config_backup/` (eliminado)
|
||
|
|
|
||
|
|
**Contenido:**
|
||
|
|
- `_redirects` (Netlify)
|
||
|
|
- `netlify.toml`
|
||
|
|
- `nginx.conf.example`
|
||
|
|
- `vercel.json`
|
||
|
|
|
||
|
|
**Acción:**
|
||
|
|
```bash
|
||
|
|
# Evaluar si son necesarios:
|
||
|
|
# - Si no se usan Netlify/Vercel actualmente, eliminar
|
||
|
|
# - Si son ejemplos/templates, mover a docs/examples/
|
||
|
|
# - Si son activos pero diferentes, consolidar en raíz
|
||
|
|
```
|
||
|
|
|
||
|
|
**Riesgo:** 🟡 Medio - Verificar uso antes de eliminar.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
#### 🟢 BAJA: Carpetas Vacías
|
||
|
|
|
||
|
|
**Carpetas Identificadas:**
|
||
|
|
```bash
|
||
|
|
docs/archivo # Vacía (nombre confuso con _archivo)
|
||
|
|
database/seeds/ # Vacía
|
||
|
|
assets/videos/bloque_* # Varias vacías
|
||
|
|
assets/checklists_app/ # Vacía
|
||
|
|
assets/templates/ # Vacía
|
||
|
|
```
|
||
|
|
|
||
|
|
**Acción:**
|
||
|
|
```bash
|
||
|
|
# Eliminar carpetas vacías (o añadir .gitkeep si son intencionales):
|
||
|
|
find . -type d -empty -not -path "./.git/*" -not -path "./node_modules/*" -delete
|
||
|
|
```
|
||
|
|
|
||
|
|
**Riesgo:** 🟢 Bajo - Carpetas vacías no afectan funcionalidad.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### 2. DEPENDENCIAS Y PAQUETES
|
||
|
|
|
||
|
|
#### Análisis de Dependencias Frontend
|
||
|
|
|
||
|
|
**Total:** 78 dependencias principales
|
||
|
|
|
||
|
|
**Potencialmente No Usadas:**
|
||
|
|
|
||
|
|
| Dependencia | Propósito | Probabilidad No Usada | Verificar |
|
||
|
|
|-------------|-----------|----------------------|-----------|
|
||
|
|
| `@hookform/resolvers` | React Hook Form | 🟡 Media | Usado en admin-panel |
|
||
|
|
| `react-resizable-panels` | Panels redimensionables | 🔴 Alta | No visto en uso |
|
||
|
|
| `input-otp` | OTP inputs | 🔴 Alta | No usado |
|
||
|
|
| `embla-carousel-react` | Carousel | 🟡 Media | Verificar si Carousel se usa |
|
||
|
|
| `vaul` | Drawer component | 🔴 Alta | No usado (hay drawer de Radix) |
|
||
|
|
| `recharts` | Gráficos | 🟡 Media | Verificar en admin panel |
|
||
|
|
| `next-themes` | Theme switching | ✅ Usado | Mantener |
|
||
|
|
| Radix UI components (30+) | UI primitives | 🟡 Media | Verificar uso real de cada uno |
|
||
|
|
|
||
|
|
**Comando para Analizar:**
|
||
|
|
```bash
|
||
|
|
# Instalar herramienta de análisis:
|
||
|
|
npm install -g depcheck
|
||
|
|
|
||
|
|
# Analizar dependencias no usadas:
|
||
|
|
depcheck
|
||
|
|
|
||
|
|
# O usar npx:
|
||
|
|
npx depcheck
|
||
|
|
```
|
||
|
|
|
||
|
|
**Acción Recomendada:**
|
||
|
|
1. Ejecutar `depcheck` para identificar dependencias no usadas
|
||
|
|
2. Verificar manualmente cada componente Radix UI usado
|
||
|
|
3. Eliminar dependencias confirmadas no usadas
|
||
|
|
4. Estimar reducción: ~50-100 MB en node_modules
|
||
|
|
|
||
|
|
**Riesgo:** 🟡 Medio - Verificar que no se usen en tiempo de ejecución o dinámicamente.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
#### Análisis de Dependencias Backend
|
||
|
|
|
||
|
|
**Total:** 7 dependencias principales
|
||
|
|
|
||
|
|
**Todas parecen estar en uso:**
|
||
|
|
- `express` ✅ - Framework principal
|
||
|
|
- `pg` ✅ - PostgreSQL driver
|
||
|
|
- `jsonwebtoken` ✅ - Autenticación
|
||
|
|
- `bcrypt` ✅ - Hash de passwords
|
||
|
|
- `cors` ✅ - CORS middleware
|
||
|
|
- `dotenv` ✅ - Variables de entorno
|
||
|
|
- `multer` ✅ - Upload de archivos
|
||
|
|
- `archiver` ✅ - Generación de SCORM
|
||
|
|
- `marked` ✅ - Markdown parsing
|
||
|
|
|
||
|
|
**Acción:** ✅ No se requiere limpieza de dependencias backend.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### 3. CÓDIGO MUERTO (DEAD CODE)
|
||
|
|
|
||
|
|
#### Componentes React Potencialmente No Usados
|
||
|
|
|
||
|
|
**Verificar manualmente:**
|
||
|
|
- Componentes en `src/components/ui/` que no se importan
|
||
|
|
- Hooks en `src/hooks/` no utilizados
|
||
|
|
- Utilidades en `src/utils/` no referenciadas
|
||
|
|
|
||
|
|
**Comando para Detectar:**
|
||
|
|
```bash
|
||
|
|
# Usar ts-prune para detectar exports no usados:
|
||
|
|
npx ts-prune
|
||
|
|
|
||
|
|
# O usar uncomment para detectar imports no usados:
|
||
|
|
npx unimported
|
||
|
|
```
|
||
|
|
|
||
|
|
**Componentes a Verificar:**
|
||
|
|
```typescript
|
||
|
|
// Verificar si estos componentes se usan:
|
||
|
|
- src/components/ui/chart.tsx // ¿Gráficos en uso?
|
||
|
|
- src/components/ui/resizable.tsx // ¿Panels redimensionables?
|
||
|
|
- src/components/ui/input-otp.tsx // ¿OTP inputs?
|
||
|
|
- src/components/ui/drawer.tsx // ¿Drawer diferente de Radix?
|
||
|
|
```
|
||
|
|
|
||
|
|
**Acción:**
|
||
|
|
1. Ejecutar análisis de código muerto
|
||
|
|
2. Verificar imports dinámicos (`lazy()`)
|
||
|
|
3. Eliminar código no utilizado
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
#### Scripts y Rutas API No Utilizados
|
||
|
|
|
||
|
|
**Backend Routes a Verificar:**
|
||
|
|
```javascript
|
||
|
|
// Verificar uso de cada ruta en:
|
||
|
|
backend/src/routes/
|
||
|
|
- content.js // ✅ Usado (admin panel)
|
||
|
|
- drugs.js // ✅ Usado
|
||
|
|
- auth.js // ✅ Usado
|
||
|
|
- stats.js // ✅ Usado (dashboard)
|
||
|
|
- media.js // ⚠️ Verificar uso
|
||
|
|
- validation.js // ✅ Usado
|
||
|
|
- content-pack.js // ✅ Usado (frontend)
|
||
|
|
- content-resources.js // ⚠️ Verificar uso
|
||
|
|
```
|
||
|
|
|
||
|
|
**Acción:** Verificar logs de acceso o añadir middleware de logging.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### 4. ASSETS Y RECURSOS
|
||
|
|
|
||
|
|
#### Imágenes Duplicadas
|
||
|
|
|
||
|
|
**Problema:** `placeholder.svg` en múltiples ubicaciones:
|
||
|
|
- `public/placeholder.svg` ✅ (correcto)
|
||
|
|
- `dist/placeholder.svg` (generado, no preocupante)
|
||
|
|
|
||
|
|
**Acción:** ✅ No requiere acción (dist se regenera).
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
#### Carpetas de Assets Vacías o Con Contenido Obsoleto
|
||
|
|
|
||
|
|
**Carpetas a Verificar:**
|
||
|
|
```bash
|
||
|
|
assets/videos/bloque_00/ # Vacía
|
||
|
|
assets/videos/bloque_01/ # Vacía
|
||
|
|
assets/videos/bloque_02/ # Vacía
|
||
|
|
# ... más vacías
|
||
|
|
assets/checklists_app/ # Vacía
|
||
|
|
assets/templates/ # Vacía
|
||
|
|
```
|
||
|
|
|
||
|
|
**Acción:**
|
||
|
|
```bash
|
||
|
|
# Verificar contenido:
|
||
|
|
find assets/ -type f | wc -l
|
||
|
|
|
||
|
|
# Si están vacías, eliminar o documentar propósito
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
#### Fuentes y Recursos No Referenciados
|
||
|
|
|
||
|
|
**Verificar:**
|
||
|
|
- Fuentes en `public/fonts/` (si existe)
|
||
|
|
- Iconos no utilizados
|
||
|
|
- Assets de prueba o mock data
|
||
|
|
|
||
|
|
**Acción:** Ejecutar auditoría de assets con herramienta de bundling.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### 5. SCRIPTS Y AUTOMATIZACIÓN
|
||
|
|
|
||
|
|
#### Scripts Duplicados o Obsoletos
|
||
|
|
|
||
|
|
**Scripts en Raíz:**
|
||
|
|
```bash
|
||
|
|
# Deploy scripts - Consolidar:
|
||
|
|
deploy.sh # Consolidado
|
||
|
|
desplegar.sh # Wrapper interactivo
|
||
|
|
docker.sh # Deploy Docker
|
||
|
|
|
||
|
|
# Cleanup scripts - Consolidado:
|
||
|
|
cleanup.sh
|
||
|
|
|
||
|
|
# Otros:
|
||
|
|
webhook-deploy.sh # Específico, mantener
|
||
|
|
reorganizar_proyecto.sh # ¿Usado recientemente?
|
||
|
|
```
|
||
|
|
|
||
|
|
**Acción:**
|
||
|
|
1. Documentar propósito de cada script
|
||
|
|
2. Consolidar scripts similares
|
||
|
|
3. Mover scripts de utilidad a `scripts/utils/`
|
||
|
|
4. Eliminar scripts obsoletos confirmados
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
#### Scripts Python
|
||
|
|
|
||
|
|
**Scripts Identificados:**
|
||
|
|
```bash
|
||
|
|
generate-docs.py # ¿Usado recientemente?
|
||
|
|
integrate-assets.py # ¿Usado recientemente?
|
||
|
|
scripts/limpiar_manual.py # Script de limpieza específico
|
||
|
|
scripts/actualizar_rutas_indice.py # Script de mantenimiento
|
||
|
|
scripts/anadir_todos_enlaces.py # Script de mantenimiento
|
||
|
|
scripts/anadir_enlaces_referencia.py # Script de mantenimiento
|
||
|
|
```
|
||
|
|
|
||
|
|
**Acción:**
|
||
|
|
1. Verificar fecha de último uso (git log)
|
||
|
|
2. Documentar propósito de cada script
|
||
|
|
3. Consolidar en `scripts/python/` si se mantienen
|
||
|
|
4. Eliminar si obsoletos
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
#### GitHub Actions / CI Config
|
||
|
|
|
||
|
|
**Verificar:**
|
||
|
|
```bash
|
||
|
|
# Buscar workflows:
|
||
|
|
.github/workflows/*.yml
|
||
|
|
|
||
|
|
# Si no existen, considerar añadir:
|
||
|
|
# - CI/CD básico
|
||
|
|
# - Linting automático
|
||
|
|
# - Build verification
|
||
|
|
```
|
||
|
|
|
||
|
|
**Acción:** ✅ No hay configs obsoletos (no existen workflows).
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### 6. CONFIGURACIONES
|
||
|
|
|
||
|
|
#### Configuraciones Duplicadas
|
||
|
|
|
||
|
|
**TypeScript Configs:**
|
||
|
|
```bash
|
||
|
|
tsconfig.json # ✅ Principal
|
||
|
|
tsconfig.app.json # ✅ Para app
|
||
|
|
tsconfig.node.json # ✅ Para scripts
|
||
|
|
```
|
||
|
|
|
||
|
|
**Acción:** ✅ No duplicados, estructura correcta.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
#### Configuraciones de Build Duplicadas
|
||
|
|
|
||
|
|
**Verificar:**
|
||
|
|
- `vite.config.ts` ✅ (principal)
|
||
|
|
- `docker-compose.yml` vs `docker-compose.prod.yml` ✅ (diferentes propósitos)
|
||
|
|
- `ecosystem.config.cjs` (PM2) ✅ (necesario)
|
||
|
|
|
||
|
|
**Acción:** ✅ No requiere limpieza.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
#### Environment Variables
|
||
|
|
|
||
|
|
**Archivos:**
|
||
|
|
- `env.example` ✅ (template, mantener)
|
||
|
|
- `backend/.env` ⚠️ (verificar que no esté en git)
|
||
|
|
|
||
|
|
**Acción:**
|
||
|
|
```bash
|
||
|
|
# Verificar que .env no esté trackeado:
|
||
|
|
git ls-files | grep "\.env$"
|
||
|
|
|
||
|
|
# Si está, remover:
|
||
|
|
# git rm --cached backend/.env
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🛠️ COMANDOS ESPECÍFICOS PARA LIMPIEZA
|
||
|
|
|
||
|
|
### 1. Identificar Archivos Grandes Inútiles
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Buscar archivos > 10MB:
|
||
|
|
find . -type f -size +10M -not -path "./node_modules/*" -not -path "./.git/*" -exec ls -lh {} \;
|
||
|
|
|
||
|
|
# Buscar archivos de build:
|
||
|
|
du -sh dist/ public/ build/ .next/ 2>/dev/null
|
||
|
|
|
||
|
|
# Buscar node_modules más grandes:
|
||
|
|
du -sh node_modules/* | sort -hr | head -20
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### 2. Encontrar Dependencias No Utilizadas
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Frontend:
|
||
|
|
cd /home/planetazuzu/guia-tes
|
||
|
|
npx depcheck
|
||
|
|
|
||
|
|
# Con más detalle:
|
||
|
|
npx depcheck --ignores="@types/*,eslint-*,typescript-*,@vitejs/*,vite"
|
||
|
|
|
||
|
|
# Backend:
|
||
|
|
cd backend
|
||
|
|
npx depcheck
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### 3. Detectar Código Muerto
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Detectar exports no usados:
|
||
|
|
npx ts-prune
|
||
|
|
|
||
|
|
# Detectar imports no usados:
|
||
|
|
npx unimported
|
||
|
|
|
||
|
|
# O usar ESLint:
|
||
|
|
npm run lint -- --fix
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### 4. Limpiar Automáticamente (CON CONFIRMACIÓN)
|
||
|
|
|
||
|
|
```bash
|
||
|
|
#!/bin/bash
|
||
|
|
# Script de limpieza segura - EJECUTAR CON CUIDADO
|
||
|
|
|
||
|
|
echo "🧹 Iniciando limpieza del proyecto..."
|
||
|
|
echo "⚠️ Este script eliminará archivos. Revisa antes de continuar."
|
||
|
|
read -p "¿Continuar? (yes/no): " confirm
|
||
|
|
|
||
|
|
if [ "$confirm" != "yes" ]; then
|
||
|
|
echo "❌ Limpieza cancelada"
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
# 1. Eliminar dist/ (se regenera)
|
||
|
|
if [ -d "dist" ]; then
|
||
|
|
echo "🗑️ Eliminando dist/..."
|
||
|
|
rm -rf dist/
|
||
|
|
fi
|
||
|
|
|
||
|
|
# 2. Eliminar logs
|
||
|
|
if [ -d "logs" ]; then
|
||
|
|
echo "🗑️ Limpiando logs..."
|
||
|
|
rm -f logs/*.log
|
||
|
|
fi
|
||
|
|
|
||
|
|
# 3. Eliminar archivos .backup
|
||
|
|
echo "🗑️ Eliminando archivos .backup..."
|
||
|
|
find . -name "*.backup" -not -path "./node_modules/*" -not -path "./.git/*" -delete
|
||
|
|
|
||
|
|
# 4. Eliminar carpetas vacías
|
||
|
|
echo "🗑️ Eliminando carpetas vacías..."
|
||
|
|
find . -type d -empty -not -path "./.git/*" -not -path "./node_modules/*" -delete
|
||
|
|
|
||
|
|
# 5. Limpiar Python cache
|
||
|
|
echo "🗑️ Limpiando __pycache__..."
|
||
|
|
find . -type d -name "__pycache__" -not -path "./node_modules/*" -exec rm -rf {} + 2>/dev/null
|
||
|
|
find . -name "*.pyc" -not -path "./node_modules/*" -delete 2>/dev/null
|
||
|
|
|
||
|
|
# 6. Limpiar archivos temporales
|
||
|
|
echo "🗑️ Eliminando archivos temporales..."
|
||
|
|
find . -name "*.tmp" -o -name "*.temp" -o -name ".DS_Store" -o -name "Thumbs.db" | \
|
||
|
|
grep -v node_modules | grep -v .git | xargs rm -f 2>/dev/null
|
||
|
|
|
||
|
|
echo "✅ Limpieza completada"
|
||
|
|
```
|
||
|
|
|
||
|
|
**Guardar como:** `scripts/cleanup-safe.sh`
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### 5. Verificar .gitignore Óptimo
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Verificar archivos trackeados que deberían ignorarse:
|
||
|
|
git ls-files | grep -E "(dist/|\.log$|\.backup$|node_modules/)" | head -20
|
||
|
|
|
||
|
|
# Si hay archivos que deberían ignorarse:
|
||
|
|
# git rm --cached <archivo>
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 📝 SUGERENCIAS DE PREVENCIÓN
|
||
|
|
|
||
|
|
### 1. Configurar .gitignore Óptimo
|
||
|
|
|
||
|
|
**Añadir a .gitignore (si falta):**
|
||
|
|
```gitignore
|
||
|
|
# Build outputs
|
||
|
|
dist/
|
||
|
|
build/
|
||
|
|
.next/
|
||
|
|
out/
|
||
|
|
|
||
|
|
# Logs
|
||
|
|
logs/
|
||
|
|
*.log
|
||
|
|
npm-debug.log*
|
||
|
|
yarn-debug.log*
|
||
|
|
yarn-error.log*
|
||
|
|
pnpm-debug.log*
|
||
|
|
lerna-debug.log*
|
||
|
|
|
||
|
|
# Environment variables
|
||
|
|
.env
|
||
|
|
.env.local
|
||
|
|
.env.production
|
||
|
|
.env.development
|
||
|
|
backend/.env
|
||
|
|
|
||
|
|
# Backup files
|
||
|
|
*.backup
|
||
|
|
*.bak
|
||
|
|
*.old
|
||
|
|
*~
|
||
|
|
|
||
|
|
# OS files
|
||
|
|
.DS_Store
|
||
|
|
.DS_Store?
|
||
|
|
._*
|
||
|
|
.Spotlight-V100
|
||
|
|
.Trashes
|
||
|
|
ehthumbs.db
|
||
|
|
Thumbs.db
|
||
|
|
|
||
|
|
# Python
|
||
|
|
__pycache__/
|
||
|
|
*.py[cod]
|
||
|
|
*$py.class
|
||
|
|
*.so
|
||
|
|
.Python
|
||
|
|
.venv/
|
||
|
|
venv/
|
||
|
|
env/
|
||
|
|
ENV/
|
||
|
|
|
||
|
|
# Temporary files
|
||
|
|
*.tmp
|
||
|
|
*.temp
|
||
|
|
*.swp
|
||
|
|
*.swo
|
||
|
|
|
||
|
|
# IDE
|
||
|
|
.vscode/*
|
||
|
|
!.vscode/extensions.json
|
||
|
|
.idea/
|
||
|
|
*.sublime-project
|
||
|
|
*.sublime-workspace
|
||
|
|
|
||
|
|
# Test coverage
|
||
|
|
coverage/
|
||
|
|
.nyc_output/
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### 2. Scripts de Mantenimiento Preventivo
|
||
|
|
|
||
|
|
**Crear:** `scripts/maintenance/weekly-cleanup.sh`
|
||
|
|
|
||
|
|
```bash
|
||
|
|
#!/bin/bash
|
||
|
|
# Script de mantenimiento semanal
|
||
|
|
|
||
|
|
echo "🧹 Limpieza semanal del proyecto..."
|
||
|
|
|
||
|
|
# 1. Limpiar node_modules duplicados (si hay)
|
||
|
|
npm dedupe
|
||
|
|
|
||
|
|
# 2. Actualizar dependencias menores
|
||
|
|
npm update
|
||
|
|
|
||
|
|
# 3. Verificar dependencias no usadas
|
||
|
|
npx depcheck --ignores="@types/*,eslint-*,typescript-*"
|
||
|
|
|
||
|
|
# 4. Verificar código muerto
|
||
|
|
npx ts-prune | head -20
|
||
|
|
|
||
|
|
# 5. Limpiar cache de npm
|
||
|
|
npm cache clean --force
|
||
|
|
|
||
|
|
echo "✅ Mantenimiento completado"
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### 3. Herramientas de Monitoreo Recomendadas
|
||
|
|
|
||
|
|
**Para Detectar Dependencias No Usadas:**
|
||
|
|
- `depcheck` - Detectar dependencias no usadas
|
||
|
|
- `npm-check` - Actualizar y verificar dependencias
|
||
|
|
- `bundlesize` - Monitorear tamaño de bundles
|
||
|
|
|
||
|
|
**Para Detectar Código Muerto:**
|
||
|
|
- `ts-prune` - Detectar exports no usados en TypeScript
|
||
|
|
- `unimported` - Detectar imports no usados
|
||
|
|
- `eslint-plugin-unused-imports` - Linting de imports no usados
|
||
|
|
|
||
|
|
**Para Monitorear Tamaño:**
|
||
|
|
- `webpack-bundle-analyzer` - Analizar tamaño de bundles
|
||
|
|
- `source-map-explorer` - Explorar tamaño de código fuente
|
||
|
|
|
||
|
|
**Instalar:**
|
||
|
|
```bash
|
||
|
|
npm install --save-dev depcheck ts-prune unimported webpack-bundle-analyzer
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### 4. GitHub Actions para Limpieza Automática
|
||
|
|
|
||
|
|
**Crear:** `.github/workflows/cleanup.yml`
|
||
|
|
|
||
|
|
```yaml
|
||
|
|
name: Weekly Cleanup Check
|
||
|
|
|
||
|
|
on:
|
||
|
|
schedule:
|
||
|
|
# Cada lunes a las 00:00 UTC
|
||
|
|
- cron: '0 0 * * 1'
|
||
|
|
workflow_dispatch:
|
||
|
|
|
||
|
|
jobs:
|
||
|
|
cleanup-check:
|
||
|
|
runs-on: ubuntu-latest
|
||
|
|
steps:
|
||
|
|
- uses: actions/checkout@v3
|
||
|
|
|
||
|
|
- name: Setup Node.js
|
||
|
|
uses: actions/setup-node@v3
|
||
|
|
with:
|
||
|
|
node-version: '20'
|
||
|
|
|
||
|
|
- name: Check for unused dependencies
|
||
|
|
run: |
|
||
|
|
npm install
|
||
|
|
npx depcheck --ignores="@types/*,eslint-*,typescript-*,@vitejs/*,vite" || true
|
||
|
|
|
||
|
|
- name: Check for dead code
|
||
|
|
run: |
|
||
|
|
npx ts-prune | head -50 || true
|
||
|
|
|
||
|
|
- name: Check bundle size
|
||
|
|
run: |
|
||
|
|
npm run build
|
||
|
|
npx bundlesize || true
|
||
|
|
|
||
|
|
- name: Create issue if problems found
|
||
|
|
if: failure()
|
||
|
|
uses: actions/github-script@v6
|
||
|
|
with:
|
||
|
|
script: |
|
||
|
|
github.rest.issues.create({
|
||
|
|
owner: context.repo.owner,
|
||
|
|
repo: context.repo.repo,
|
||
|
|
title: '⚠️ Cleanup Check: Issues Found',
|
||
|
|
body: 'Weekly cleanup check found potential issues. Please review.'
|
||
|
|
})
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## ✅ CHECKLIST DE LIMPIEZA
|
||
|
|
|
||
|
|
### Fase 1: Crítico (Hacer YA)
|
||
|
|
|
||
|
|
- [ ] Verificar que `backend/.env` NO está en git
|
||
|
|
- [ ] Añadir `dist/` a .gitignore si falta
|
||
|
|
- [ ] Añadir `logs/*.log` a .gitignore si falta
|
||
|
|
- [ ] Eliminar `dist/` del repositorio
|
||
|
|
- [ ] Eliminar `logs/pm2-error.log` del repositorio
|
||
|
|
- [ ] Verificar que `.env` está en .gitignore
|
||
|
|
|
||
|
|
**Tiempo:** 15 minutos
|
||
|
|
**Riesgo:** 🟢 Bajo
|
||
|
|
**Impacto:** 🔴 Alto (seguridad y organización)
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### Fase 2: Importante (Hacer Pronto)
|
||
|
|
|
||
|
|
- [ ] Ejecutar `npx depcheck` y analizar resultados
|
||
|
|
- [ ] Eliminar dependencias no usadas confirmadas
|
||
|
|
- [ ] Eliminar `src/data/manual-index.ts.backup`
|
||
|
|
- [ ] Evaluar y consolidar `docs/_archivo/`
|
||
|
|
- [ ] Consolidar scripts de deploy similares
|
||
|
|
- [ ] Documentar propósito de cada script en raíz
|
||
|
|
|
||
|
|
**Tiempo:** 2-3 horas
|
||
|
|
**Riesgo:** 🟡 Medio
|
||
|
|
**Impacto:** 🟡 Medio (optimización)
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### Fase 3: Opcional (Hacer Cuando Tengas Tiempo)
|
||
|
|
|
||
|
|
- [ ] Ejecutar `npx ts-prune` y eliminar código muerto
|
||
|
|
- [ ] Consolidar scripts Python en carpeta dedicada
|
||
|
|
- [ ] Eliminar carpetas vacías de assets
|
||
|
|
- [ ] Documentar assets no utilizados
|
||
|
|
- [ ] Añadir GitHub Action para limpieza automática
|
||
|
|
- [ ] Configurar herramientas de monitoreo
|
||
|
|
|
||
|
|
**Tiempo:** 2-3 horas
|
||
|
|
**Riesgo:** 🟢 Bajo
|
||
|
|
**Impacto:** 🟢 Bajo (mejora incremental)
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 📊 RESUMEN FINAL
|
||
|
|
|
||
|
|
### Espacio Recuperable Total
|
||
|
|
|
||
|
|
- **Crítico:** ~15 MB (dist/ + logs)
|
||
|
|
- **Importante:** ~50-100 MB (dependencias no usadas)
|
||
|
|
- **Opcional:** ~2-5 MB (archivos pequeños y carpetas vacías)
|
||
|
|
|
||
|
|
**Total Estimado:** ~70-120 MB (~10-17% del proyecto sin node_modules)
|
||
|
|
|
||
|
|
### Reducción de Dependencias
|
||
|
|
|
||
|
|
- **Potencialmente No Usadas:** 15-20% de dependencias frontend
|
||
|
|
- **Reducción Estimada en node_modules:** 50-100 MB
|
||
|
|
|
||
|
|
### Tiempo Total de Limpieza
|
||
|
|
|
||
|
|
- **Fase 1 (Crítico):** 15 minutos
|
||
|
|
- **Fase 2 (Importante):** 2-3 horas
|
||
|
|
- **Fase 3 (Opcional):** 2-3 horas
|
||
|
|
- **Total:** 4-6 horas
|
||
|
|
|
||
|
|
### Prioridades Recomendadas
|
||
|
|
|
||
|
|
1. **🔴 ALTA:** Seguridad (.env) y Build artifacts (dist/)
|
||
|
|
2. **🟡 MEDIA:** Dependencias no usadas y archivos de backup
|
||
|
|
3. **🟢 BAJA:** Código muerto y consolidación de scripts
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
**Última actualización:** 2025-01-07
|
||
|
|
**Próxima revisión recomendada:** Mensual o antes de cada release mayor
|
||
|
|
|