# 🔄 Flujo de Cambios Bidireccional: Proyectos ↔ cd-system

## 🎯 Arquitectura del Flujo

```
┌─────────────────┐
│   cd-system     │  ← Core (Fuente de verdad)
│   (core)        │
└────────┬────────┘
         │
         │ Propaga mejoras
         │ ↓
    ┌────┴────┬──────────┬──────────┐
    │         │          │          │
┌───▼───┐ ┌──▼───┐  ┌───▼───┐  ┌───▼───┐
│coke-  │ │tera- │  │mirage │  │otros  │
│colom- │ │she   │  │       │  │proyec │
│bres   │ │      │  │       │  │tos    │
└───┬───┘ └──┬───┘  └───┬───┘  └───┬───┘
    │        │          │          │
    │        │          │          │
    └────────┴──────────┴──────────┘
              │
              │ Integra mejoras
              │ ↑
         ┌────┴────┐
         │ cd-system│
         │  (core)  │
         └──────────┘
```

---

## 📤 Flujo 1: Proyecto → cd-system (Integración de Mejoras)

### ¿Cuándo usar?

Cuando un proyecto desarrolla mejoras **reutilizables** que deben estar disponibles para todos los proyectos.

### ¿Qué se integra?

✅ **Mejoras reutilizables:**
- Nuevos helpers y funciones utilitarias
- Mejoras en módulos genéricos
- Nuevas funcionalidades del sistema base
- Correcciones de bugs generales
- Documentación del sistema
- ViewComposers y servicios reutilizables

❌ **NO se integra:**
- Configuraciones específicas del proyecto
- Assets personalizados (logos, imágenes del proyecto)
- Contenido específico del proyecto
- Vistas específicas del demo/proyecto
- Cambios en `config/site.php` con datos del proyecto

### Cómo hacerlo

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

```bash
# Desde cualquier proyecto
cd /Applications/XAMPP/xamppfiles/htdocs/cokecolombres
./scripts/propagate-to-cd-system.sh [PROJECT_NAME]

# Ejemplos:
./scripts/propagate-to-cd-system.sh cokecolombres
./scripts/propagate-to-cd-system.sh terashe
./scripts/propagate-to-cd-system.sh  # Detecta automáticamente
```

El script:
1. ✅ Copia archivos reutilizables al core
2. ✅ Muestra cambios antes de commitear
3. ✅ Permite revisar y confirmar
4. ✅ Hace commit y push al core

#### Opción 2: Manual

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

# Copiar archivos específicos
cp ../cokecolombres/app/helpers.php app/helpers.php
cp ../cokecolombres/app/Providers/ViewComposerServiceProvider.php app/Providers/ViewComposerServiceProvider.php

# Revisar y commitear
git add -A
git commit -m "feat: Integrar mejoras desde [PROJECT_NAME]"
git push origin cd-system
```

---

## 📥 Flujo 2: cd-system → Proyectos (Propagación de Mejoras)

### ¿Cuándo usar?

Cuando el core tiene mejoras que deben estar disponibles en todos los proyectos.

### ¿Qué se propaga?

✅ **Mejoras del core:**
- Nuevos módulos y funcionalidades
- Mejoras en código reutilizable
- Correcciones de bugs del sistema
- Actualizaciones de dependencias
- Nuevas migraciones y seeders
- Mejoras en helpers y utilidades
- Actualizaciones de documentación

### Archivos Protegidos

Los siguientes archivos **NO se sobrescriben** durante la propagación (gracias a `.gitattributes`):

- ✅ `config/cd-system.php` - Mantiene la versión del proyecto
- ✅ `config/site.php` - Mantiene la identidad del proyecto
- ✅ `public/cd-project/assets/*` - Mantiene los assets del proyecto

### Cómo hacerlo

Usar el script `propagate-core-improvements.sh` desde cd-system:

```bash
# Desde cd-system
cd /Applications/XAMPP/xamppfiles/htdocs/cd-system
./scripts/propagate-core-improvements.sh https://github.com/LACOMPANIADIGITAL/cokecolombres.git

# Con opciones
./scripts/propagate-core-improvements.sh \
  https://github.com/LACOMPANIADIGITAL/cokecolombres.git \
  --push yes \
  --selective
```

---

## 🔄 Flujo Completo: Ejemplo Real

### Escenario: Mejora del Sistema de Demos

1. **Desarrollo en Proyecto (cokecolombres):**
   ```bash
   cd /Applications/XAMPP/xamppfiles/htdocs/cokecolombres
   # Desarrollar mejoras en helpers, ViewComposer, etc.
   git add -A
   git commit -m "feat: Mejoras en sistema de demos"
   git push origin cd-system
   ```

2. **Integrar al Core:**
   ```bash
   cd /Applications/XAMPP/xamppfiles/htdocs/cokecolombres
   ./scripts/propagate-to-cd-system.sh cokecolombres
   # El script copia, commitea y pushea al core
   ```

3. **Propagar a Otros Proyectos:**
   ```bash
   cd /Applications/XAMPP/xamppfiles/htdocs/cd-system
   ./scripts/propagate-core-improvements.sh https://github.com/LACOMPANIADIGITAL/terashe.git
   ./scripts/propagate-core-improvements.sh https://github.com/LACOMPANIADIGITAL/mirage.git
   # ... otros proyectos
   ```

---

## 📋 Checklist de Validación

### Antes de Integrar (Proyecto → Core)

- [ ] ¿La mejora es reutilizable para otros proyectos?
- [ ] ¿No contiene configuraciones específicas del proyecto?
- [ ] ¿No contiene assets personalizados?
- [ ] ¿Está probada y funcionando?
- [ ] ¿Está documentada?

### Antes de Propagar (Core → Proyectos)

- [ ] ¿Los cambios están commiteados y pusheados en el core?
- [ ] ¿Se ha probado en al menos un proyecto?
- [ ] ¿Los archivos protegidos están correctamente configurados?
- [ ] ¿Hay documentación de los cambios?

---

## 🛠️ Scripts Disponibles

### Desde Proyectos

- **`propagate-to-cd-system.sh`** - Integrar mejoras del proyecto al core
  - Uso: `./scripts/propagate-to-cd-system.sh [PROJECT_NAME]`
  - Genérico: Funciona con cualquier proyecto

### Desde cd-system

- **`propagate-core-improvements.sh`** - Propagar mejoras del core a proyectos
  - Uso: `./scripts/propagate-core-improvements.sh <URL_REPO> [opciones]`

---

## ⚠️ Reglas de Oro

1. **Siempre revisar antes de commitear** - Los scripts muestran cambios antes de aplicar
2. **Probar en un proyecto antes de propagar** - Validar que funciona
3. **Documentar cambios importantes** - Ayuda a otros desarrolladores
4. **No integrar configuraciones específicas** - Solo código reutilizable
5. **Usar commits descriptivos** - Incluir proyecto origen y descripción clara

---

## 📚 Documentación Relacionada

- `docs/CAMBIOS-PARA-CD-SYSTEM.md` - Lista de cambios a integrar
- `docs/PROPAGAR-A-CD-SYSTEM.md` - Guía paso a paso
- `docs/cd-system/estrategia-propagacion-core.md` - Estrategia completa
- `docs/cd-system/propagacion-mejoras-core.md` - Propagación desde core

---

**Última actualización:** Diciembre 2024  
**Versión:** 2.0 - Flujo Bidireccional Optimizado

