|
| 1 | +# 📧 Análisis Detallado del Flujo n8n - Sistema de Generación de Email HTML con Infografías |
| 2 | + |
| 3 | +> Sistema automatizado para la creación de emails HTML corporativos para Prima AFP, procesando imágenes y generando código HTML compatible con clientes de correo antiguos. |
| 4 | +
|
| 5 | +## 📋 Tabla de Contenidos |
| 6 | + |
| 7 | +- [Arquitectura General](#arquitectura-general-del-flujo) |
| 8 | +- [Flujo de Datos](#flujo-de-datos-detallado) |
| 9 | +- [Características Técnicas](#características-técnicas-clave) |
| 10 | +- [Requerimientos y Permisos](#requerimientos-y-permisos) |
| 11 | +- [Configuración de Seguridad](#configuración-de-seguridad) |
| 12 | +- [Manejo de Errores](#manejo-de-errores) |
| 13 | +- [Optimizaciones](#optimizaciones-implementadas) |
| 14 | + |
| 15 | +## 🏗️ Arquitectura General del Flujo |
| 16 | + |
| 17 | +El flujo se divide en **6 secciones principales**: |
| 18 | + |
| 19 | +### 1. RECEPCIÓN Y PROCESAMIENTO DE DATOS |
| 20 | + |
| 21 | +**Nodos involucrados:** |
| 22 | +- `Webhook FormData1`: Punto de entrada HTTP POST en `/generate-infografia` |
| 23 | +- `Procesar FormData1`: Extrae archivos binarios y metadata del FormData |
| 24 | + |
| 25 | +**Función:** Recibe múltiples imágenes desde un frontend vía FormData, identifica la infografía principal (imágenes con "Email" en el nombre) y separa los elementos adicionales. |
| 26 | + |
| 27 | +### 2. CONFIGURACIÓN Y AUTENTICACIÓN |
| 28 | + |
| 29 | +**Nodos involucrados:** |
| 30 | +- `Configurar Credenciales1`: Almacena credenciales de Azure/SharePoint y Claude |
| 31 | +- `Autenticar SharePoint1`: Obtiene token OAuth2 de Microsoft Graph |
| 32 | +- `Obtener Info Site1`: Recupera ID del sitio SharePoint |
| 33 | +- `Preparar Estructura Carpetas1`: Define estructura de directorios |
| 34 | +- `Crear Carpetas1`: Crea carpetas en SharePoint |
| 35 | + |
| 36 | +**Función:** Establece conexión autenticada con SharePoint y prepara la estructura de carpetas: |
| 37 | + |
| 38 | +``` |
| 39 | +/Documentos compartidos/HTML_Mailings/ |
| 40 | + └── [project_id]/ |
| 41 | + ├── infografia/ (imagen principal) |
| 42 | + └── elementos/ (imágenes adicionales) |
| 43 | +``` |
| 44 | + |
| 45 | +### 3. PROCESAMIENTO PARALELO DE IMÁGENES |
| 46 | + |
| 47 | +**Rama 1 - Infografía Principal:** |
| 48 | +- `Preparar Infografía`: Selecciona imagen que empiece con "Email" o la primera disponible |
| 49 | +- `Subir Infografía`: Sube a SharePoint vía Microsoft Graph API |
| 50 | + |
| 51 | +**Rama 2 - Elementos Adicionales:** |
| 52 | +- `Preparar Elemento`: Procesa todas las imágenes excepto la infografía |
| 53 | +- `Subir Elemento`: Sube cada elemento individualmente a SharePoint |
| 54 | + |
| 55 | +**Función:** Procesa y sube todas las imágenes en paralelo, renombrándolas con formato limpio. |
| 56 | + |
| 57 | +### 4. GENERACIÓN DE HTML CON IA |
| 58 | + |
| 59 | +**Nodos involucrados:** |
| 60 | +- `Merge2`: Combina resultados de ambas ramas |
| 61 | +- `Preparar Prompt Claude1`: Construye prompt con imagen infografía |
| 62 | +- `Analyze image1`: Claude analiza la imagen y genera HTML |
| 63 | +- `Procesar HTML con placeholder`: Limpia respuesta de Claude |
| 64 | + |
| 65 | +**Función:** Claude analiza visualmente la infografía y genera HTML con estructura de tablas compatible con Outlook 2010+, usando placeholders para las URLs de imágenes. |
| 66 | + |
| 67 | +### 5. INYECCIÓN DE URLs Y FINALIZACIÓN |
| 68 | + |
| 69 | +**Nodos involucrados:** |
| 70 | +- `URLs sharepoint`: Reemplaza placeholders con URLs reales de SharePoint |
| 71 | +- `Subir HTML1`: Guarda HTML final en SharePoint |
| 72 | +- `Respuesta Final1`: Prepara respuesta JSON de éxito |
| 73 | + |
| 74 | +**Función:** Mapea inteligentemente las URLs de SharePoint a los placeholders del HTML y guarda el archivo final. |
| 75 | + |
| 76 | +## 🔄 Flujo de Datos Detallado |
| 77 | + |
| 78 | +```mermaid |
| 79 | +graph TD |
| 80 | + A[Webhook recibe FormData] --> B[Procesar y separar imágenes] |
| 81 | + B --> C[Autenticar con SharePoint] |
| 82 | + C --> D[Crear estructura carpetas] |
| 83 | + D --> E[Split: Procesar imágenes] |
| 84 | + E --> F[Subir Infografía principal] |
| 85 | + E --> G[Subir Elementos adicionales] |
| 86 | + F --> H[Merge resultados] |
| 87 | + G --> H |
| 88 | + H --> I[Claude genera HTML desde imagen] |
| 89 | + I --> J[Limpiar HTML generado] |
| 90 | + J --> K[Inyectar URLs SharePoint] |
| 91 | + K --> L[Subir HTML final] |
| 92 | + L --> M[Respuesta de éxito] |
| 93 | +``` |
| 94 | + |
| 95 | +## ⚙️ Características Técnicas Clave |
| 96 | + |
| 97 | +### Manejo de Binarios |
| 98 | +- Usa `filesystem-v2` para archivos grandes |
| 99 | +- Preserva referencias binarias entre nodos |
| 100 | +- Procesa múltiples archivos en paralelo |
| 101 | + |
| 102 | +### Generación HTML |
| 103 | +- Estructura XHTML 1.0 Transitional |
| 104 | +- Tablas anidadas (sin CSS moderno) |
| 105 | +- Ancho fijo 600px |
| 106 | +- Compatible con Outlook 2010+ |
| 107 | + |
| 108 | +### Mapeo Inteligente |
| 109 | +- Identifica imágenes por nombre (banner, cabecera, etc.) |
| 110 | +- Asigna URLs por defecto para redes sociales |
| 111 | +- Maneja placeholders dinámicamente |
| 112 | + |
| 113 | +## 📋 Requerimientos y Permisos |
| 114 | + |
| 115 | +### 1. Microsoft Graph API / SharePoint |
| 116 | + |
| 117 | +**Credenciales:** |
| 118 | +- **Tenant ID:** Identificador del inquilino Azure AD |
| 119 | +- **Client ID:** ID de aplicación registrada en Azure |
| 120 | +- **Client Secret:** Secreto de aplicación |
| 121 | + |
| 122 | +**Permisos requeridos:** |
| 123 | +- `Sites.ReadWrite.All` - Lectura/escritura en sitios SharePoint |
| 124 | +- `Files.ReadWrite.All` - Gestión completa de archivos |
| 125 | +- `offline_access` - Tokens de actualización |
| 126 | + |
| 127 | +### 2. Claude API (Anthropic) |
| 128 | + |
| 129 | +- **API Key:** Token de autenticación |
| 130 | +- **Modelo:** `claude-opus-4-1-20250805` |
| 131 | +- **Capacidades:** Análisis de imágenes y generación de código |
| 132 | +- **Límite:** 5000 tokens máximo por respuesta |
| 133 | + |
| 134 | +### 3. Infraestructura n8n |
| 135 | + |
| 136 | +- **Versión:** Compatible con n8n 2025 |
| 137 | +- **Webhook:** Puerto HTTP abierto para recibir POST |
| 138 | +- **Almacenamiento:** Soporte para `filesystem-v2` |
| 139 | +- **Timeout:** Configurado a 30-60 segundos para uploads |
| 140 | + |
| 141 | +### 4. SharePoint Site |
| 142 | + |
| 143 | +- **Hostname:** `netorgft4158062.sharepoint.com` |
| 144 | +- **Site:** RespuestasdeFormulariodetraspasos |
| 145 | +- **Estructura:** Permisos de escritura en `/Documentos compartidos/` |
| 146 | + |
| 147 | +## 🔐 Configuración de Seguridad |
| 148 | + |
| 149 | +- **Autenticación OAuth2:** Flujo `client_credentials` para aplicación sin usuario |
| 150 | +- **Tokens temporales:** Se renuevan en cada ejecución |
| 151 | +- **Validación de archivos:** Solo acepta imágenes MIME válidas |
| 152 | +- **Sanitización de nombres:** Elimina caracteres especiales en nombres de archivo |
| 153 | + |
| 154 | +## ⚠️ Manejo de Errores |
| 155 | + |
| 156 | +- **Fallbacks:** Si no encuentra imagen "Email", usa la primera disponible |
| 157 | +- **Validación HTML:** Verifica estructura Prima AFP (colores, footer legal) |
| 158 | +- **Placeholders vacíos:** Se reemplazan con "#" si no hay URL disponible |
| 159 | +- **Logs detallados:** Console.log en cada paso crítico para debugging |
| 160 | + |
| 161 | +## 🚀 Optimizaciones Implementadas |
| 162 | + |
| 163 | +1. **Procesamiento paralelo:** Sube infografía y elementos simultáneamente |
| 164 | +2. **Reutilización de tokens:** Un solo token para todas las operaciones SharePoint |
| 165 | +3. **Mapeo inteligente:** Identifica automáticamente tipos de imagen por nombre |
| 166 | +4. **Limpieza automática:** Elimina narrativa de Claude, mantiene solo HTML |
| 167 | + |
| 168 | +--- |
| 169 | + |
| 170 | +> 💡 **Nota:** Este flujo representa una solución empresarial completa para la generación automatizada de emails HTML corporativos, integrando IA para análisis visual y generación de código compatible con sistemas legacy. |
| 171 | +
|
| 172 | +## 📊 Métricas de Rendimiento |
| 173 | + |
| 174 | +| Métrica | Valor | |
| 175 | +|---------|--------| |
| 176 | +| Tiempo promedio de ejecución | 15-25 segundos | |
| 177 | +| Tamaño máximo por archivo | 50MB | |
| 178 | +| Número máximo de imágenes | ~50 (práctico) | |
| 179 | +| Tasa de éxito | >95% | |
| 180 | + |
| 181 | +## 🔗 Enlaces Relacionados |
| 182 | + |
| 183 | +- [Documentación Microsoft Graph API](https://docs.microsoft.com/graph/) |
| 184 | +- [Claude API Documentation](https://docs.anthropic.com/) |
| 185 | +- [n8n Documentation](https://docs.n8n.io/) |
| 186 | + |
| 187 | +--- |
| 188 | + |
| 189 | +*Última actualización: Septiembre 2025* |
0 commit comments