# 🔄 Proceso de Propagación Completo - Guía Definitiva

## ⚠️ PROBLEMA IDENTIFICADO

**Síntoma:** Cambios en catalogue no aparecen en cd-system después de propagar.

**Causa:** El script de propagación puede no capturar todos los archivos, especialmente:
- Vistas con diferentes capitalizaciones (Products vs products)
- Archivos JavaScript compilados
- Archivos que no están en Git todavía

---

## ✅ SOLUCIÓN: Proceso de Propagación en 3 Pasos

### Paso 1: Ejecutar Script de Propagación

```bash
cd /Applications/XAMPP/xamppfiles/htdocs/catalogue
./scripts/send-to-cd-system-v2.sh
```

**Qué hace:**
- Propaga ~9,500 archivos usando rsync
- Excluye archivos específicos del proyecto
- Aplica cambios a cd-system

**Limitaciones:**
- Puede no capturar archivos con diferentes capitalizaciones
- Puede no capturar archivos no versionados

### Paso 2: Verificar Diferencias Específicas

```bash
# Verificar vistas de módulos específicos
cd /Applications/XAMPP/xamppfiles/htdocs
diff -rq catalogue/resources/views/modules/Products cd-system/resources/views/modules/Products

# Verificar JavaScript
diff -rq catalogue/public/assets/extended/js/custom/products cd-system/public/assets/extended/js/custom/products
```

### Paso 3: Copiar Manualmente si es Necesario

```bash
# Si hay diferencias, copiar manualmente
cp -r catalogue/resources/views/modules/Products cd-system/resources/views/modules/Products
cp -r catalogue/public/assets/extended/js/custom/products cd-system/public/assets/extended/js/custom/products

# Commitear en cd-system
cd cd-system
git add resources/views/modules/Products/ public/assets/extended/js/custom/products/
git commit -m "fix: Sincronizar vistas y JS desde catalogue"
```

---

## 🔍 Checklist de Verificación Post-Propagación

### 1. Verificar Controladores

```bash
diff -rq catalogue/app/Modules/Products/Controllers cd-system/app/Modules/Products/Controllers
```

### 2. Verificar Vistas

```bash
# Verificar ambas capitalizaciones
diff -rq catalogue/resources/views/modules/Products cd-system/resources/views/modules/Products
diff -rq catalogue/resources/views/modules/products cd-system/resources/views/modules/products
```

### 3. Verificar JavaScript

```bash
diff -rq catalogue/public/assets/extended/js/custom/products cd-system/public/assets/extended/js/custom/products
```

### 4. Verificar Rutas

```bash
diff catalogue/routes/modules/product.php cd-system/routes/modules/product.php
```

### 5. Verificar Modelos y Servicios

```bash
diff -rq catalogue/app/Modules/Products/Models cd-system/app/Modules/Products/Models
diff -rq catalogue/app/Modules/Products/Services cd-system/app/Modules/Products/Services
```

---

## 🚨 Problemas Comunes y Soluciones

### Problema 1: Diferentes Capitalizaciones

**Síntoma:** `Products` vs `products` en nombres de directorios

**Solución:**
```bash
# Verificar ambas versiones
ls -la catalogue/resources/views/modules/ | grep -i product
ls -la cd-system/resources/views/modules/ | grep -i product

# Copiar ambas si existen
cp -r catalogue/resources/views/modules/Products cd-system/resources/views/modules/Products
cp -r catalogue/resources/views/modules/products cd-system/resources/views/modules/products
```

### Problema 2: Archivos JavaScript No Compilados

**Síntoma:** Cambios en JS no aparecen

**Solución:**
```bash
# Copiar JS fuente
cp -r catalogue/resources/assets/extended/js/custom/products cd-system/resources/assets/extended/js/custom/products

# Recompilar en cd-system
cd cd-system
npm run dev  # o npm run prod
```

### Problema 3: Archivos No Versionados

**Síntoma:** Archivos nuevos no se propagan

**Solución:**
```bash
# Agregar a Git primero en catalogue
cd catalogue
git add -A
git commit -m "feat: Nuevos archivos"

# Luego propagar
./scripts/send-to-cd-system-v2.sh
```

---

## 📋 Script de Verificación Automática

```bash
#!/bin/bash
# scripts/verificar-modulo.sh [modulo]

MODULE="${1:-Products}"
PROJECT_PATH="/Applications/XAMPP/xamppfiles/htdocs/catalogue"
CD_SYSTEM_PATH="/Applications/XAMPP/xamppfiles/htdocs/cd-system"

echo "🔍 Verificando módulo: $MODULE"
echo ""

# Controladores
echo "📁 Controladores:"
diff -rq "$PROJECT_PATH/app/Modules/$MODULE/Controllers" "$CD_SYSTEM_PATH/app/Modules/$MODULE/Controllers" 2>&1 | head -10

# Vistas
echo ""
echo "📄 Vistas:"
diff -rq "$PROJECT_PATH/resources/views/modules/$MODULE" "$CD_SYSTEM_PATH/resources/views/modules/$MODULE" 2>&1 | head -10

# JavaScript
echo ""
echo "📜 JavaScript:"
diff -rq "$PROJECT_PATH/public/assets/extended/js/custom/${MODULE,,}" "$CD_SYSTEM_PATH/public/assets/extended/js/custom/${MODULE,,}" 2>&1 | head -10
```

---

## ✅ Proceso Recomendado (Actualizado)

### 1. Desarrollo en Catalogue

```bash
cd /Applications/XAMPP/xamppfiles/htdocs/catalogue
# Desarrollar cambios...
git add -A
git commit -m "feat: Mejoras en Products"
```

### 2. Propagación Automática

```bash
./scripts/send-to-cd-system-v2.sh
```

### 3. Verificación Específica

```bash
# Verificar módulo específico
./scripts/verificar-modulo.sh Products
```

### 4. Sincronización Manual (si es necesario)

```bash
# Si hay diferencias, copiar manualmente
cd /Applications/XAMPP/xamppfiles/htdocs
cp -r catalogue/resources/views/modules/Products cd-system/resources/views/modules/Products
cp -r catalogue/public/assets/extended/js/custom/products cd-system/public/assets/extended/js/custom/products

# Commitear
cd cd-system
git add -A
git commit -m "fix: Sincronizar Products desde catalogue"
```

### 5. Validación Final

```bash
# Verificar que no hay diferencias
diff -rq catalogue/resources/views/modules/Products cd-system/resources/views/modules/Products
# Debe retornar vacío (sin diferencias)
```

---

## 🎯 Reglas de Oro

1. **Siempre verificar después de propagar** - No asumir que todo se propagó
2. **Verificar ambas capitalizaciones** - Products y products pueden coexistir
3. **Commitear cambios antes de propagar** - Los archivos no versionados no se propagan
4. **Verificar JavaScript compilado** - Puede requerir recompilación
5. **Usar diff para verificar** - No confiar solo en el script

---

**Última actualización:** Noviembre 2024  
**Versión:** 1.0 - Proceso Completo de Propagación

