Añade env de ingesta, SMTP y webhooks + dependencia nodemailer

Variables nuevas (todas opcionales vía zod, sin romper build/demo):
- FUNNEL_API_KEY: clave Bearer del EP de ingesta.
- SMTP_* + EMAIL_FROM: envío de email del presupuesto/enlace.
- PERFIL/WHATSAPP/WHATSAPP_START webhook URLs: señales al flujo externo.
- APP_URL: base para enlaces absolutos.
Helpers emailConfigurado()/perfilWebhookConfigurado()/whatsappWebhookConfigurado()/
whatsappStartConfigurado(). nodemailer como dep directa (stack: Email SMTP).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Carlos Narro
2026-06-03 19:01:15 +02:00
parent b9dd90f4ef
commit 737496ed89
4 changed files with 88 additions and 0 deletions

View File

@@ -7,3 +7,26 @@ DATABASE_URL="postgresql://postgres:reformix@localhost:5432/reformix"
RETELL_API_KEY=""
RETELL_AGENT_ID=""
RETELL_FROM_NUMBER="" # número de origen en E.164, p. ej. +34910000000
# EP de ingesta del lead (/api/leads/:id/ingesta). Clave compartida que valida al llamante
# externo (Authorization: Bearer ...). Sin ella, el EP responde 401.
FUNNEL_API_KEY=""
# Email (SMTP) para enviar el presupuesto y el enlace al formulario. OPCIONALES: sin SMTP_HOST +
# EMAIL_FROM el envío degrada a no-op (la entrega queda marcada como simulada). Mailhog local:
# SMTP_HOST=localhost SMTP_PORT=1025 (sin user/pass).
SMTP_HOST=""
SMTP_PORT="587"
SMTP_USER=""
SMTP_PASS=""
EMAIL_FROM="" # remitente, p. ej. "Reformas Ejemplo <no-reply@reformix.es>"
# Webhooks salientes hacia el flujo externo (n8n/generador). OPCIONALES: sin URL la señal no se
# manda. PERFIL = perfil completo (generar renders/agente); WHATSAPP = entrega del PDF;
# WHATSAPP_START = arrancar la conversación de WhatsApp con el lead.
PERFIL_WEBHOOK_URL=""
WHATSAPP_WEBHOOK_URL=""
WHATSAPP_START_WEBHOOK_URL=""
# Base pública de la app, para construir enlaces absolutos (enlace al formulario en el email).
APP_URL="http://localhost:3000"