# 🔄 Flujo Completo: Assets desde cd-system al Servidor

## 🎯 Respuesta Directa

### ¿Los assets van al servidor?

**SÍ, pero con un ajuste:**

1. **Si pones assets en `public/cd-project/assets/` en cd-system:**
   - ✅ SÍ, van al servidor con el pull
   - ⚠️ PERO necesitamos ajustar `.gitattributes` (remover protección de `assets/`)

2. **Los assets finales (`img/logos/`, `img/favicon/`):**
   - ❌ NO van al servidor (están protegidos)
   - ✅ Son específicos del proyecto

### ¿Cuándo ejecutar el comando?

**SIEMPRE DESPUÉS del pull:**

```bash
# 1. Pull primero (trae assets de cd-system si los hay)
git pull origin cd-system

# 2. Luego ejecutar comando (procesa assets)
php artisan project:update-assets public/cd-project/assets --backup
```

---

## 🔧 Ajuste Necesario en .gitattributes

### Problema Actual

El `.gitattributes` actual protege `public/cd-project/assets/`, lo que impide que assets de cd-system se actualicen durante el pull.

### Solución

**NO proteger `public/cd-project/assets/`** - Solo proteger los finales:

```gitattributes
# Auto detect text files and perform LF normalization
* text=auto

# ============================================
# Archivos protegidos del proyecto
# Estos archivos mantienen la identidad del proyecto y NO deben ser sobrescritos
# durante merges o pulls desde cd-system. Se usa estrategia "ours" para mantener
# siempre la versión del proyecto.
# ============================================

# Configuración del proyecto
config/cd-system.php merge=ours
config/site.php merge=ours

# Logos del proyecto (FINALES - protegidos)
public/cd-project/img/logos/** merge=ours
public/cd-project/img/logos/* merge=ours

# Favicons del proyecto (FINALES - protegidos)
public/cd-project/img/favicon/** merge=ours
public/cd-project/img/favicon/* merge=ours

# NOTA: public/cd-project/assets/ NO está protegido
# Esto permite que assets temporales de cd-system se actualicen durante pull
# Los assets finales (img/logos/ y img/favicon/) SÍ están protegidos arriba

# Skins CSS personalizados del proyecto (si existen)
# NOTA: Los skins del demo (skin-architecture-2.css, skin-law-firm-2.css, etc.)
# NO deben protegerse, solo los personalizados del proyecto
# Si tu proyecto tiene un skin personalizado, descomenta y ajusta la línea:
# public/template/css/skins/skin-mi-proyecto.css merge=ours
```

---

## 🚀 Flujo Completo

### Escenario: Actualizar Assets desde cd-system

#### En cd-system:

```bash
# 1. Colocar assets en public/cd-project/assets/
cp /ruta/a/nuevos/assets/* public/cd-project/assets/

# 2. Commitear
git add public/cd-project/assets/
git commit -m "chore: Actualizar assets temporales"
git push origin cd-system
```

#### En servidor (terashe):

```bash
# 1. Hacer pull (trae assets de cd-system)
git pull origin cd-system
# ✅ Los assets en public/cd-project/assets/ se actualizan (NO protegidos)

# 2. Ejecutar comando para procesar assets
php artisan project:update-assets public/cd-project/assets --backup
# ✅ Copia assets a img/logos/ y img/favicon/

# 3. Los assets finales (img/logos/, img/favicon/) NO se sobrescriben
# durante pulls futuros porque están protegidos
```

---

## 📋 Orden Correcto en el Servidor

### Siempre DESPUÉS del Pull:

```bash
# 1. Pull primero
git pull origin cd-system
# Esto trae:
# - Assets nuevos en public/cd-project/assets/ (si los hay)
# - Mejoras del demo
# - NO sobrescribe: config/cd-system.php, config/site.php, img/logos/, img/favicon/

# 2. Ejecutar comando (si hay assets nuevos o quieres actualizar)
php artisan project:update-assets public/cd-project/assets --backup
# Esto procesa:
# - Assets de public/cd-project/assets/
# - Los copia a img/logos/ y img/favicon/
# - NO es bloqueado por .gitattributes

# 3. Verificar
ls -la public/cd-project/img/logos/
ls -la public/cd-project/img/favicon/

# 4. Limpiar cache
php artisan config:clear && php artisan cache:clear
```

---

## ✅ Resumen

| Carpeta | ¿Protegida? | ¿Se Actualiza en Pull? | ¿Se Actualiza con Comando? |
|---------|------------|------------------------|---------------------------|
| `public/cd-project/assets/` | ❌ NO | ✅ SÍ (viene de cd-system) | N/A (es la fuente) |
| `public/cd-project/img/logos/` | ✅ SÍ | ❌ NO (protegido) | ✅ SÍ (con comando) |
| `public/cd-project/img/favicon/` | ✅ SÍ | ❌ NO (protegido) | ✅ SÍ (con comando) |

---

## 🎯 Flujo Visual

```
cd-system:
  public/cd-project/assets/logo.png
         ↓ (commit + push)
         ↓
Servidor (pull):
  public/cd-project/assets/logo.png ✅ (se actualiza, NO protegido)
         ↓ (php artisan project:update-assets)
         ↓
  public/cd-project/img/logos/logo.png ✅ (se actualiza con comando)
         ↓ (pull futuro)
         ↓
  public/cd-project/img/logos/logo.png ✅ (NO se sobrescribe, protegido)
```

---

## ⚠️ Importante

1. **`public/cd-project/assets/` NO debe estar protegido** - Permite actualizaciones desde cd-system
2. **`img/logos/` y `img/favicon/` SÍ deben estar protegidos** - Mantienen identidad del proyecto
3. **Orden:** Pull primero, luego comando
4. **El comando siempre funciona** - `.gitattributes` NO lo bloquea

---

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

