# 📤 Guía: Enviar Cambios de Catalogue a cd-system

## 🎯 Objetivo

Esta guía explica cómo enviar las mejoras desarrolladas en `catalogue` de vuelta al repositorio `cd-system` para que estén disponibles para todos los proyectos.

---

## 📋 Cambios Reutilizables Identificados

### ✅ Cambios que SÍ deben enviarse a cd-system:

1. **Sistema de Meta Tags (`MetaTagsHelper`)**
   - `app/Helpers/MetaTagsHelper.php` - Helper centralizado
   - `app/helpers.php` - Autoload del helper
   - `composer.json` - Configuración de autoload
   - `docs/meta-tags-management.md` - Documentación completa

2. **Mejoras en Layout Principal**
   - `resources/views/layout/front/master.blade.php` - Integración de MetaTagsHelper
   - ⚠️ **IMPORTANTE**: Revisar que no contenga datos específicos de Technoa

3. **Documentación**
   - `docs/FLUJO-CAMBIOS-BIDIRECCIONAL.md` - Flujo de cambios

### ❌ Cambios que NO deben enviarse:

- `config/site.php` - Contiene datos específicos de Technoa
- `public/cd-project/img/*` - Assets específicos del proyecto
- `public/cd-project/assets/*` - Assets específicos del proyecto
- Cualquier vista o contenido específico del demo transportation-logistic

---

## 🚀 Proceso Recomendado

### Opción 1: Script Automatizado (Recomendado)

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

El script:
1. ✅ Identifica archivos reutilizables
2. ✅ Muestra diferencias antes de aplicar
3. ✅ Permite revisar y confirmar
4. ✅ Copia archivos a cd-system
5. ✅ Hace commit y push (opcional)

### Opción 2: Proceso Manual

#### Paso 1: Preparar cambios en catalogue

```bash
cd /Applications/XAMPP/xamppfiles/htdocs/catalogue

# Asegurarse de estar en la rama cd-system
git checkout cd-system

# Verificar que todos los cambios están commiteados
git status
```

#### Paso 2: Copiar archivos a cd-system

```bash
# Cambiar a cd-system
cd /Applications/XAMPP/xamppfiles/htdocs/cd-system
git checkout cd-system

# Copiar MetaTagsHelper
cp ../catalogue/app/Helpers/MetaTagsHelper.php app/Helpers/MetaTagsHelper.php

# Copiar helpers.php
cp ../catalogue/app/helpers.php app/helpers.php

# Actualizar composer.json (revisar manualmente)
# Copiar solo la parte de autoload.files si no existe
cp ../catalogue/composer.json composer.json.backup
# Editar manualmente composer.json para agregar helpers.php

# Copiar documentación
cp ../catalogue/docs/meta-tags-management.md docs/meta-tags-management.md

# Copiar master.blade.php (REVISAR MANUALMENTE)
cp ../catalogue/resources/views/layout/front/master.blade.php resources/views/layout/front/master.blade.php.backup
# Revisar y aplicar solo las mejoras de meta tags
```

#### Paso 3: Revisar cambios

```bash
# Ver qué archivos cambiaron
git status

# Ver diferencias
git diff

# Revisar archivos críticos
git diff app/Helpers/MetaTagsHelper.php
git diff composer.json
git diff resources/views/layout/front/master.blade.php
```

#### Paso 4: Limpiar cambios específicos del proyecto

**⚠️ IMPORTANTE**: Antes de commitear, verificar:

1. **`master.blade.php`**: 
   - ✅ Debe tener la integración de `MetaTagsHelper`
   - ❌ NO debe tener referencias a "Technoa" o datos específicos
   - ❌ NO debe tener configuraciones hardcodeadas del proyecto

2. **`composer.json`**:
   - ✅ Debe tener `app/helpers.php` en `autoload.files`
   - ❌ NO debe tener dependencias específicas del proyecto

3. **`config/site.php`**:
   - ❌ NO debe copiarse (contiene datos de Technoa)

#### Paso 5: Commit y Push

```bash
# Agregar cambios
git add app/Helpers/MetaTagsHelper.php
git add app/helpers.php
git add composer.json
git add docs/meta-tags-management.md
git add resources/views/layout/front/master.blade.php

# Commit
git commit -m "feat: Integrar sistema de MetaTagsHelper desde catalogue

- Sistema centralizado de gestión de meta tags
- Helper MetaTagsHelper para SEO, OG, Twitter, JSON-LD
- Documentación completa de meta tags management
- Mejoras en master.blade.php para integración de meta tags
- Actualización de composer.json con autoload de helpers

Proyecto origen: catalogue
Fecha: $(date '+%Y-%m-%d')"

# Push
git push origin cd-system
```

---

## ✅ Checklist de Validación

Antes de enviar cambios, verificar:

### Archivos Reutilizables
- [ ] `MetaTagsHelper.php` no tiene referencias específicas al proyecto
- [ ] `helpers.php` solo carga el helper, sin lógica específica
- [ ] `composer.json` solo agrega autoload, sin dependencias específicas
- [ ] `master.blade.php` solo tiene mejoras de meta tags, sin datos del proyecto
- [ ] Documentación es genérica y aplicable a cualquier proyecto

### Archivos Específicos (NO enviar)
- [ ] `config/site.php` NO se copia (tiene datos de Technoa)
- [ ] Assets del proyecto NO se copian
- [ ] Vistas específicas del demo NO se copian

### Pruebas
- [ ] Los cambios funcionan en cd-system
- [ ] No hay errores de sintaxis
- [ ] El helper se carga correctamente
- [ ] Los meta tags se generan correctamente

---

## 🔍 Verificación Post-Integración

Después de integrar los cambios en cd-system:

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

# Verificar que los archivos están presentes
ls -la app/Helpers/MetaTagsHelper.php
ls -la app/helpers.php
grep -A 5 "helpers.php" composer.json

# Probar en un proyecto nuevo
cd ../test-project
php artisan config:clear
php artisan cache:clear

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

---

## 📚 Documentación Relacionada

- `docs/meta-tags-management.md` - Documentación completa del sistema de meta tags
- `docs/FLUJO-CAMBIOS-BIDIRECCIONAL.md` - Flujo general de cambios
- `docs/cd-system/estrategia-propagacion-core.md` - Estrategia de propagación

---

## ⚠️ Notas Importantes

1. **Siempre revisar manualmente** `master.blade.php` antes de commitear
2. **Nunca copiar** `config/site.php` con datos específicos del proyecto
3. **Probar en cd-system** antes de propagar a otros proyectos
4. **Usar commits descriptivos** con información del proyecto origen
5. **Documentar cambios importantes** para referencia futura

---

**Última actualización:** Noviembre 2024  
**Proyecto origen:** catalogue  
**Rama:** cd-system

