josemoreupeso.es
03-diagram-renderer.md β€” TLOTP
# πŸ“Š Diagram Renderer - VisualizaciΓ³n del Pipeline

## MisiΓ³n

Renderizar un diagrama visual del pipeline CI/CD actual del proyecto,
basΓ‘ndose en los datos recopilados por el Analyzer (mΓ³dulo 03).

---

## Formato del Diagrama

Generar un diagrama ASCII/Unicode que muestre el flujo completo del CI/CD.

### Diagrama de Triggers y Workflows

```
═══════════════════════════════════════════════════════════════
πŸ“Š Diagrama CI/CD del Proyecto
═══════════════════════════════════════════════════════════════

  πŸ”€ TRIGGERS
  β”œβ”€β”€ push β†’ [branches]
  β”œβ”€β”€ pull_request β†’ [branches]
  β”œβ”€β”€ schedule β†’ [cron]
  └── workflow_dispatch (manual)
       β”‚
       β–Ό
  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
  β”‚  πŸ“„ WORKFLOW: [nombre-workflow.yml]                      β”‚
  β”‚                                                         β”‚
  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
  β”‚  β”‚  Job: lint   │───▢│  Job: test   │───▢│  Job: build  β”‚β”‚
  β”‚  β”‚  [runner]    β”‚    β”‚  [runner]    β”‚    β”‚  [runner]    β”‚β”‚
  β”‚  β”‚             β”‚    β”‚             β”‚    β”‚             β”‚β”‚
  β”‚  β”‚ β—‹ checkout  β”‚    β”‚ β—‹ checkout  β”‚    β”‚ β—‹ checkout  β”‚β”‚
  β”‚  β”‚ β—‹ setup-nodeβ”‚    β”‚ β—‹ setup-nodeβ”‚    β”‚ β—‹ setup-nodeβ”‚β”‚
  β”‚  β”‚ β—‹ npm ci    β”‚    β”‚ β—‹ npm ci    β”‚    β”‚ β—‹ npm ci    β”‚β”‚
  β”‚  β”‚ β—‹ npm lint  β”‚    β”‚ β—‹ npm test  β”‚    β”‚ β—‹ npm build β”‚β”‚
  β”‚  β”‚ ⚑ cache: βœ… β”‚    β”‚ ⚑ cache: βœ… β”‚    β”‚ ⚑ cache: βœ… β”‚β”‚
  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
  β”‚                                              β”‚          β”‚
  β”‚                                              β–Ό          β”‚
  β”‚                                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”      β”‚
  β”‚                                    β”‚  Job: deploy β”‚      β”‚
  β”‚                                    β”‚  [runner]    β”‚      β”‚
  β”‚                                    β”‚ β—‹ deploy     β”‚      β”‚
  β”‚                                    β”‚ πŸ”’ env: prod β”‚      β”‚
  β”‚                                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜      β”‚
  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

═══════════════════════════════════════════════════════════════
```

---

## Reglas de Renderizado

### 1. Dependencias entre Jobs

- Si un job tiene `needs: [otro_job]`, mostrar flecha de dependencia `───▢`
- Si los jobs son paralelos (sin `needs`), mostrarlos en la misma fila
- Si hay cadenas de dependencia, mostrar flujo vertical `β–Ό`

### 2. Indicadores Visuales

Usar estos iconores para cada caracterΓ­stica detectada:

| Icono | Significado |
|---|---|
| ⚑ | Cache habilitado |
| πŸ”’ | Usa secrets o environment |
| πŸ“¦ | Genera/consume artifacts |
| πŸ”„ | Matrix strategy |
| ♻️ | Reusable workflow |
| πŸ›‘οΈ | Permissions restringidos |
| 🐳 | Usa Docker/services |
| ⏰ | Tiene timeout configurado |
| πŸ”€ | Concurrency group |

### 3. MΓΊltiples Workflows

Si hay mΓ‘s de un workflow, mostrar cada uno en su propio bloque,
con una secciΓ³n superior que muestre quΓ© trigger activa quΓ© workflow:

```
  πŸ”€ MAPA DE TRIGGERS β†’ WORKFLOWS
  ───────────────────────────────────────
  push (main)         β†’ ci.yml, deploy.yml
  pull_request        β†’ ci.yml
  schedule (cron)     β†’ nightly.yml
  workflow_dispatch   β†’ deploy.yml
  release (published) β†’ release.yml
```

### 4. Proyecto sin CI/CD

Si no se encontrΓ³ ningΓΊn workflow, mostrar:

```
═══════════════════════════════════════════════════════════════
πŸ“Š Diagrama CI/CD del Proyecto
═══════════════════════════════════════════════════════════════

  ⚠️ No se detectaron workflows de GitHub Actions

  El proyecto no tiene pipelines de CI/CD configurados.

  πŸ“ .github/workflows/ β†’ No existe o estΓ‘ vacΓ­o

  πŸ’‘ RecomendaciΓ³n: Usa la opciΓ³n "Crear CI/CD desde cero"
     para generar workflows adaptados a tu proyecto.

═══════════════════════════════════════════════════════════════
```

---

## DespuΓ©s del Diagrama

Una vez mostrado el diagrama, el flujo continΓΊa con:
- **04-improvement-engine.md** β†’ Sugerir mejoras basadas en documentaciΓ³n oficial

---

*MΓ³dulo 03 β€” Diagram Renderer*