# ✅ Guía de Validación: Qué se Propaga y Qué No

## 🎯 Objetivo

Esta guía ayuda a validar que solo se propaguen los archivos correctos de `catalogue` a `cd-system`, asegurando que:
- ✅ Demos completos se propaguen
- ✅ Core y mejoras se propaguen
- ❌ Assets y configuraciones del proyecto NO se propaguen

---

## 📋 Checklist de Validación

### ✅ DEMOS (TODO se propaga)

#### Assets de Demos:
- [ ] `public/cd-project/img/demos/{demo-name}/**` - TODOS los archivos
- [ ] `public/template/css/demos/demo-{name}.css` - Si existe
- [ ] `public/template/css/skins/skin-{name}.css` - Si existe
- [ ] `public/template/js/demos/demo-{name}.js` - Si existe

#### Vistas de Demos:
- [ ] `resources/views/layout/front/headers/demo-{name}.blade.php`
- [ ] `resources/views/layout/front/footers/demo-{name}.blade.php`
- [ ] `resources/views/modules/cd-base/frontend/demos/demo-{name}/**` - Si existe

#### Componentes de Demos:
- [ ] `app/View/Components/Layout/Demo{Name}/**` - Si existe

**Validación:**
```bash
# Verificar que los demos estén completos
ls -la public/cd-project/img/demos/
# Debe mostrar todos los demos con sus assets
```

---

### ✅ CORE Y HELPERS (TODO se propaga)

#### Helpers:
- [ ] `app/Helpers/MetaTagsHelper.php` - Sin referencias al proyecto
- [ ] `app/helpers.php` - Solo autoload, sin lógica específica
- [ ] `composer.json` - Solo actualización de autoload

#### Mejoras del Sistema:
- [ ] `resources/views/layout/front/master.blade.php` - Solo mejoras reutilizables
  - ✅ Integración de MetaTagsHelper
  - ❌ NO referencias a "Technoa" o datos específicos
  - ❌ NO configuraciones hardcodeadas

**Validación:**
```bash
# Verificar que no haya referencias al proyecto
grep -r "Technoa\|catalogue\|project-specific" app/Helpers/
# No debe encontrar nada
```

---

### ✅ DOCUMENTACIÓN (TODO se propaga)

- [ ] `docs/meta-tags-management.md` - Genérica
- [ ] `docs/bewpro/system/METODOLOGIA-PROPAGACION-DEMOS.md` - Genérica
- [ ] `docs/ENVIAR-CAMBIOS-A-CD-SYSTEM.md` - Genérica
- [ ] `docs/CAMBIOS-PARA-CD-SYSTEM.md` - Genérica

**Validación:**
```bash
# Verificar que la documentación sea genérica
grep -r "Technoa\|catalogue-specific" docs/
# No debe encontrar referencias específicas
```

---

### ❌ PROYECTO ESPECÍFICO (NO se propaga)

#### Assets del Proyecto:
- [ ] `public/cd-project/img/logos/**` - NO se propaga
- [ ] `public/cd-project/img/favicon/**` - NO se propaga
- [ ] `public/cd-project/assets/**` - NO se propaga (excepto si son del demo)

#### Configuración Específica:
- [ ] `config/site.php` - NO se propaga (tiene datos de Technoa)
- [ ] `config/cd-system.php` - NO se propaga (configuración del proyecto)
- [ ] `config/projectTexts.json` - NO se propaga (textos específicos)

#### Contenido Específico:
- [ ] Vistas con contenido hardcodeado del proyecto
- [ ] Textos específicos en vistas
- [ ] Datos de contacto específicos

**Validación:**
```bash
# Verificar que estos archivos NO estén en la lista de propagación
# El script debe excluirlos automáticamente
```

---

## 🔍 Validación Automática del Script

El script `send-to-cd-system.sh` valida automáticamente:

1. ✅ Identifica demos por patrón `demo-*`
2. ✅ Excluye `public/cd-project/img/logos/`
3. ✅ Excluye `public/cd-project/img/favicon/`
4. ✅ Excluye `public/cd-project/assets/` (excepto demos)
5. ✅ Excluye `config/site.php`
6. ✅ Excluye `config/cd-system.php`
7. ✅ Muestra preview antes de propagar
8. ✅ Permite revisión manual

---

## 🧪 Pruebas Post-Propagación

### 1. Verificar en cd-system:

```bash
cd /Applications/XAMPP/xamppfiles/htdocs/cd-system

# Verificar demos
ls -la public/cd-project/img/demos/
# Debe incluir todos los demos propagados

# Verificar helpers
ls -la app/Helpers/MetaTagsHelper.php
# Debe existir

# Verificar documentación
ls -la docs/meta-tags-management.md
# Debe existir
```

### 2. Probar en proyecto nuevo:

```bash
# Crear proyecto de prueba
cd /Applications/XAMPP/xamppfiles/htdocs/cd-system
./scripts/create-complete-project.sh test-validation

# Verificar que el demo funcione
cd ../test-validation
php artisan config:clear
php artisan cache:clear

# Probar MetaTagsHelper
php artisan tinker
>>> use App\Helpers\MetaTagsHelper;
>>> MetaTagsHelper::getTitle('Test');
```

### 3. Verificar que NO se propagaron assets del proyecto:

```bash
cd /Applications/XAMPP/xamppfiles/htdocs/cd-system

# Verificar que NO hay logos de catalogue
ls -la public/cd-project/img/logos/
# NO debe tener logos de Technoa o catalogue

# Verificar config/site.php
cat config/site.php | grep -i "technoa\|catalogue"
# NO debe encontrar referencias
```

---

## ⚠️ Errores Comunes

### ❌ Error 1: Propagar config/site.php con datos específicos
**Solución:** El script lo excluye automáticamente, pero verificar manualmente.

### ❌ Error 2: Propagar logos del proyecto
**Solución:** El script excluye `public/cd-project/img/logos/` automáticamente.

### ❌ Error 3: master.blade.php con datos hardcodeados
**Solución:** Revisar manualmente antes de commitear.

### ❌ Error 4: Demo incompleto
**Solución:** Verificar que todos los assets del demo estén presentes.

---

## 📊 Resumen de Validación

### Antes de Ejecutar el Script:
- [ ] Revisar qué demos se desarrollaron
- [ ] Verificar que los demos estén completos
- [ ] Confirmar que no hay referencias al proyecto en código core

### Después de Ejecutar el Script:
- [ ] Verificar preview mostrado por el script
- [ ] Revisar diferencias en archivos críticos
- [ ] Confirmar que NO se incluyen assets del proyecto

### Después de Commitear:
- [ ] Verificar en cd-system que los demos estén completos
- [ ] Probar en proyecto nuevo
- [ ] Verificar que MetaTagsHelper funciona
- [ ] Confirmar que NO hay datos específicos del proyecto

---

**Última actualización:** Noviembre 2024

