almeira-web/dripzone-app/src/lib/templates-service.ts

940 lines
52 KiB
TypeScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { MessageTemplate, MessageTemplateCategory } from '@/types';
export const TEMPLATE_CATEGORIES: {
key: MessageTemplateCategory;
name: string;
emoji: string;
description: string;
colorBadge: string;
}[] = [
{
key: 'customer_sales',
name: 'Clientes & Ventas',
emoji: '🛍️',
description: 'Confirmaciones de pedido, mensajes de checkout, consultas de zapatillas y tallas especiales.',
colorBadge: 'bg-emerald-500/20 text-emerald-300 border-emerald-500/30',
},
{
key: 'logistics_dispatch',
name: 'Logística & Despachos',
emoji: '🚚',
description: 'Avisos de mensajero en ruta, confirmación de entrega y novedades de dirección.',
colorBadge: 'bg-blue-500/20 text-blue-300 border-blue-500/30',
},
{
key: 'suppliers_warehouses',
name: 'Proveedores & Bodegas',
emoji: '🏭',
description: 'Separación individual de pares, manifiesto consolidado por lote y cotizaciones.',
colorBadge: 'bg-purple-500/20 text-purple-300 border-purple-500/30',
},
{
key: 'security_auth',
name: 'Seguridad & Accesos (OTP)',
emoji: '🔐',
description: 'Códigos de seguridad por WhatsApp para inicio de sesión, registro y contacto administrativo.',
colorBadge: 'bg-amber-500/20 text-amber-300 border-amber-500/30',
},
{
key: 'guarantees_policies',
name: 'Garantías & Políticas',
emoji: '🛡️',
description: 'Explicación de garantías de flete/anticipo, políticas contraentrega y cambios de talla.',
colorBadge: 'bg-rose-500/20 text-rose-300 border-rose-500/30',
},
{
key: 'catalog_marketing',
name: 'Catálogo & Textos Comerciales',
emoji: '🏷️',
description: 'Descripciones de producto, textos para catálogo de WhatsApp (Meta), mensajes del asesor y respuestas del bot.',
colorBadge: 'bg-indigo-500/20 text-indigo-300 border-indigo-500/30',
},
];
export const DEFAULT_MESSAGE_TEMPLATES: MessageTemplate[] = [
// 1. CLIENTES & VENTAS
{
id: 'order_confirmation_customer',
title: 'Confirmación de Pedido al Cliente',
description: 'Mensaje oficial enviado al cliente tras registrar exitosamente su pedido en la tienda.',
category: 'customer_sales',
channel: 'whatsapp',
isActive: true,
content: `🎉 *¡GRACIAS POR TU PEDIDO EN {tienda_nombre}!* 🎉
📌 *No. de Orden:* #{orden_id}
👤 *Cliente:* {cliente_nombre}
📱 *Teléfono:* {cliente_telefono}
📍 *Dirección:* {cliente_direccion}
🏙️ *Ciudad:* {cliente_ciudad}
📦 *DETALLE DE TU COMPRA:*
{articulos_resumen}
💵 *Subtotal:* {subtotal}
🚚 *Envío:* {costo_envio}
💰 *VALOR TOTAL:* {total}
{condicion_pago_resumen}
💳 *Método de Pago:* {metodo_pago}
Estamos alistando tu paquete. Te enviaremos el número de guía o notificación de entrega. ¡Muchas gracias por tu confianza! ✨`,
defaultContent: `🎉 *¡GRACIAS POR TU PEDIDO EN {tienda_nombre}!* 🎉
📌 *No. de Orden:* #{orden_id}
👤 *Cliente:* {cliente_nombre}
📱 *Teléfono:* {cliente_telefono}
📍 *Dirección:* {cliente_direccion}
🏙️ *Ciudad:* {cliente_ciudad}
📦 *DETALLE DE TU COMPRA:*
{articulos_resumen}
💵 *Subtotal:* {subtotal}
🚚 *Envío:* {costo_envio}
💰 *VALOR TOTAL:* {total}
{condicion_pago_resumen}
💳 *Método de Pago:* {metodo_pago}
Estamos alistando tu paquete. Te enviaremos el número de guía o notificación de entrega. ¡Muchas gracias por tu confianza! ✨`,
availableVariables: [
{ key: 'tienda_nombre', label: 'Nombre de Tienda', example: 'DripZone Luxury', description: 'Nombre comercial configurado' },
{ key: 'orden_id', label: 'No. de Orden', example: 'ORD-9842', description: 'Identificador único del pedido' },
{ key: 'cliente_nombre', label: 'Nombre del Cliente', example: 'Cliente DripZone', description: 'Nombre registrado' },
{ key: 'cliente_telefono', label: 'Teléfono Cliente', example: '3167455877', description: 'Celular del comprador' },
{ key: 'cliente_direccion', label: 'Dirección de Entrega', example: 'Calle 5 # 24-80, Apto 302', description: 'Dirección física' },
{ key: 'cliente_ciudad', label: 'Ciudad Destino', example: 'Cali', description: 'Municipio de despacho' },
{ key: 'articulos_resumen', label: 'Lista de Artículos', example: '👟 Nike Air Force 1 (Talla 40) x1 - $125.000 COP', description: 'Pares solicitados' },
{ key: 'subtotal', label: 'Subtotal COP', example: '$125.000 COP', description: 'Monto antes de flete' },
{ key: 'costo_envio', label: 'Costo de Envío', example: 'GRATIS', description: 'Flete de la ciudad' },
{ key: 'total', label: 'Total COP', example: '$125.000 COP', description: 'Monto total final' },
{ key: 'condicion_pago_resumen', label: 'Resumen Anticipo / Saldo', example: '🤝 Pago 100% Contraentrega al recibir en tu casa.', description: 'Detalle de pago en puerta' },
{ key: 'metodo_pago', label: 'Método de Pago', example: 'Pago Contraentrega', description: 'Pasarela o método seleccionado' },
{ key: 'saldo_contraentrega', label: 'Saldo en Puerta', example: '$115.000 COP', description: 'Valor a cobrar al entregar' },
{ key: 'anticipo', label: 'Valor Separación', example: '$10.000 COP', description: 'Anticipo si aplica' },
],
},
{
id: 'order_checkout_wa',
title: 'Pedido Web hacia WhatsApp de Tienda',
description: 'Texto que el cliente abre en WhatsApp al finalizar su compra en el carrito o checkout web.',
category: 'customer_sales',
channel: 'whatsapp',
isActive: true,
content: `🎉 *CONFIRMACIÓN DE PEDIDO EN {tienda_nombre} #{orden_id}* 🎉
👤 *Cliente:* {cliente_nombre}
📱 *Teléfono:* {cliente_telefono}
📍 *Dirección:* {cliente_direccion}
🏙️ *Ciudad:* {cliente_ciudad}
📦 *Artículos:*
{articulos_resumen}
💰 *Total:* {total}
{condicion_pago_resumen}
💳 *Método de Pago:* {metodo_pago}
¡Hola {tienda_nombre}! Acabo de registrar mi pedido en la web. ¿Me confirman despacho por favor?`,
defaultContent: `🎉 *CONFIRMACIÓN DE PEDIDO EN {tienda_nombre} #{orden_id}* 🎉
👤 *Cliente:* {cliente_nombre}
📱 *Teléfono:* {cliente_telefono}
📍 *Dirección:* {cliente_direccion}
🏙️ *Ciudad:* {cliente_ciudad}
📦 *Artículos:*
{articulos_resumen}
💰 *Total:* {total}
{condicion_pago_resumen}
💳 *Método de Pago:* {metodo_pago}
¡Hola {tienda_nombre}! Acabo de registrar mi pedido en la web. ¿Me confirman despacho por favor?`,
availableVariables: [
{ key: 'tienda_nombre', label: 'Nombre de Tienda', example: 'DripZone', description: 'Nombre de la marca' },
{ key: 'orden_id', label: 'No. Orden', example: 'ORD-9842', description: 'ID de la orden' },
{ key: 'cliente_nombre', label: 'Nombre Cliente', example: 'Cliente DripZone', description: 'Nombre' },
{ key: 'cliente_telefono', label: 'Teléfono', example: '3167455877', description: 'Teléfono' },
{ key: 'cliente_direccion', label: 'Dirección', example: 'Av 6N # 28N-12', description: 'Dirección' },
{ key: 'cliente_ciudad', label: 'Ciudad', example: 'Cali', description: 'Ciudad' },
{ key: 'articulos_resumen', label: 'Artículos', example: '• Jordan 4 Retro (Talla 41) x1 = $140.000 COP', description: 'Lista' },
{ key: 'total', label: 'Total', example: '$140.000 COP', description: 'Total' },
{ key: 'condicion_pago_resumen', label: 'Condición Pago', example: '🤝 Pago 100% Contraentrega.', description: 'Condición' },
{ key: 'metodo_pago', label: 'Método', example: 'Contraentrega', description: 'Método' },
],
},
{
id: 'product_direct_inquiry',
title: 'Pedido Directo de Zapatilla (Modal de Producto)',
description: 'Mensaje generado cuando el cliente pulsa "Pedir por WhatsApp" desde la ficha de una zapatilla.',
category: 'customer_sales',
channel: 'whatsapp',
isActive: true,
content: `Hola {tienda_nombre}! 👋 Quiero pedir las zapatillas:
👟 *{zapatilla_nombre}*
🎨 Color: *{color_nombre}*
📏 Talla: *{talla}* (Horma Nacional)
💎 Precio: *{precio} COP*
🚚 Entrega en: *{ciudad}* (Pago Contraentrega)
⚡ Deseo separar con $10.000 COP y cancelar el saldo en mi casa.
¿Me confirman disponibilidad para despacho por favor?`,
defaultContent: `Hola {tienda_nombre}! 👋 Quiero pedir las zapatillas:
👟 *{zapatilla_nombre}*
🎨 Color: *{color_nombre}*
📏 Talla: *{talla}* (Horma Nacional)
💎 Precio: *{precio} COP*
🚚 Entrega en: *{ciudad}* (Pago Contraentrega)
⚡ Deseo separar con $10.000 COP y cancelar el saldo en mi casa.
¿Me confirman disponibilidad para despacho por favor?`,
availableVariables: [
{ key: 'tienda_nombre', label: 'Nombre Tienda', example: 'DripZone', description: 'Nombre de la tienda' },
{ key: 'zapatilla_nombre', label: 'Modelo Zapatilla', example: 'Nike Air Force 1 White Low', description: 'Nombre de la referencia' },
{ key: 'color_nombre', label: 'Color / Variante', example: 'Blanco Clásico', description: 'Color seleccionado' },
{ key: 'talla', label: 'Talla Seleccionada', example: '41', description: 'Talla' },
{ key: 'precio', label: 'Precio COP', example: '$125.000', description: 'Precio' },
{ key: 'ciudad', label: 'Ciudad Destino', example: 'Cali', description: 'Ciudad' },
{ key: 'marca', label: 'Marca', example: 'Nike', description: 'Marca del calzado' },
],
},
{
id: 'product_request_size',
title: 'Solicitud de Talla Bajo Pedido (Sin Stock Inmediato)',
description: 'Mensaje cuando el cliente solicita una talla no disponible en stock inmediato.',
category: 'customer_sales',
channel: 'whatsapp',
isActive: true,
content: `Hola {tienda_nombre}! 👋 Estaba revisando la tienda y me gustaron mucho estas zapatillas:
👟 *{zapatilla_nombre}*
🎨 Color: *{color_nombre}*
📏 Talla que necesito: *{talla}* (Actualmente no aparece disponible en stock inmediato)
📍 Ciudad de entrega: *{ciudad}*
¿Es posible conseguir esta talla bajo pedido con sus bodegas aliadas para despacho contraentrega? Quedo muy atento, ¡muchas gracias!`,
defaultContent: `Hola {tienda_nombre}! 👋 Estaba revisando la tienda y me gustaron mucho estas zapatillas:
👟 *{zapatilla_nombre}*
🎨 Color: *{color_nombre}*
📏 Talla que necesito: *{talla}* (Actualmente no aparece disponible en stock inmediato)
📍 Ciudad de entrega: *{ciudad}*
¿Es posible conseguir esta talla bajo pedido con sus bodegas aliadas para despacho contraentrega? Quedo muy atento, ¡muchas gracias!`,
availableVariables: [
{ key: 'tienda_nombre', label: 'Nombre Tienda', example: 'DripZone', description: 'Nombre de la tienda' },
{ key: 'zapatilla_nombre', label: 'Modelo Zapatilla', example: 'Adidas Bad Bunny Campus Brown', description: 'Modelo' },
{ key: 'color_nombre', label: 'Color', example: 'Café Gamuza', description: 'Color' },
{ key: 'talla', label: 'Talla Solicitada', example: '43', description: 'Talla' },
{ key: 'ciudad', label: 'Ciudad', example: 'Cali', description: 'Ciudad' },
{ key: 'marca', label: 'Marca', example: 'Adidas', description: 'Marca' },
],
},
{
id: 'general_store_inquiry',
title: 'Consulta General a la Tienda (Botón Flotante / Menú)',
description: 'Mensaje predeterminado de contacto inicial desde el botón flotante de WhatsApp o footer.',
category: 'customer_sales',
channel: 'whatsapp',
isActive: true,
content: `Hola {tienda_nombre}! 👋 Quiero consultar la disponibilidad de unas zapatillas para despacho contraentrega en 24 horas.`,
defaultContent: `Hola {tienda_nombre}! 👋 Quiero consultar la disponibilidad de unas zapatillas para despacho contraentrega en 24 horas.`,
availableVariables: [
{ key: 'tienda_nombre', label: 'Nombre Tienda', example: 'DripZone', description: 'Nombre' },
{ key: 'telefono_tienda', label: 'Teléfono Tienda', example: '573167455877', description: 'WhatsApp oficial' },
{ key: 'ciudad_tienda', label: 'Ciudad Sede', example: 'Cali, Colombia', description: 'Ubicación' },
],
},
// 2. LOGÍSTICA & DESPACHOS
{
id: 'order_on_the_way',
title: 'Pedido en Camino con Mensajero',
description: 'Notificación enviada al cliente cuando el mensajero sale en ruta a entregar su paquete.',
category: 'logistics_dispatch',
channel: 'whatsapp',
isActive: true,
content: `👋 ¡Hola *{cliente_nombre}*!
🛵 Tu pedido #{orden_id} ya va *EN CAMINO* con nuestro mensajero.
📍 *Dirección de Entrega:* {cliente_direccion}
🏙️ *Ciudad:* {cliente_ciudad}
💵 *Saldo a Pagar Contraentrega:* *{saldo_contraentrega}*
💳 *Medio de Pago:* {metodo_pago} (Efectivo o mediante Bold al recibir)
Por favor estar atento a la portería o celular. ¡Gracias por tu compra en {tienda_nombre}! 🔥`,
defaultContent: `👋 ¡Hola *{cliente_nombre}*!
🛵 Tu pedido #{orden_id} ya va *EN CAMINO* con nuestro mensajero.
📍 *Dirección de Entrega:* {cliente_direccion}
🏙️ *Ciudad:* {cliente_ciudad}
💵 *Saldo a Pagar Contraentrega:* *{saldo_contraentrega}*
💳 *Medio de Pago:* {metodo_pago} (Efectivo o mediante Bold al recibir)
Por favor estar atento a la portería o celular. ¡Gracias por tu compra en {tienda_nombre}! 🔥`,
availableVariables: [
{ key: 'cliente_nombre', label: 'Nombre Cliente', example: 'Cliente DripZone', description: 'Nombre' },
{ key: 'orden_id', label: 'No. Orden', example: 'ORD-9842', description: 'ID de la orden' },
{ key: 'cliente_direccion', label: 'Dirección', example: 'Carrera 100 # 16-20', description: 'Dirección' },
{ key: 'cliente_ciudad', label: 'Ciudad', example: 'Cali', description: 'Ciudad' },
{ key: 'saldo_contraentrega', label: 'Saldo a Cobrar', example: '$125.000 COP', description: 'Monto a recibir' },
{ key: 'metodo_pago', label: 'Medio de Pago', example: 'Contraentrega', description: 'Forma de pago' },
{ key: 'tienda_nombre', label: 'Nombre Tienda', example: 'DripZone', description: 'Nombre' },
],
},
{
id: 'order_delivered',
title: 'Pedido Entregado con Éxito y Garantía',
description: 'Agradecimiento al cliente tras confirmar la entrega y recordatorio de política de cambio de talla.',
category: 'logistics_dispatch',
channel: 'whatsapp',
isActive: true,
content: `🌟 ¡Hola *{cliente_nombre}*! Tu orden #{orden_id} ha sido *ENTREGADA CON ÉXITO*.
👟 Esperamos que disfrutes al máximo tus zapatillas.
💬 Si tienes cualquier consulta sobre garantía o cambio de talla (sujeto a cobertura y políticas según tu ciudad), estamos a tu disposición por este canal oficial.
¡Muchas gracias por elegir {tienda_nombre}! ✨`,
defaultContent: `🌟 ¡Hola *{cliente_nombre}*! Tu orden #{orden_id} ha sido *ENTREGADA CON ÉXITO*.
👟 Esperamos que disfrutes al máximo tus zapatillas.
💬 Si tienes cualquier consulta sobre garantía o cambio de talla (sujeto a cobertura y políticas según tu ciudad), estamos a tu disposición por este canal oficial.
¡Muchas gracias por elegir {tienda_nombre}! ✨`,
availableVariables: [
{ key: 'cliente_nombre', label: 'Nombre Cliente', example: 'Cliente DripZone', description: 'Nombre' },
{ key: 'orden_id', label: 'No. Orden', example: 'ORD-9842', description: 'ID orden' },
{ key: 'tienda_nombre', label: 'Nombre Tienda', example: 'DripZone', description: 'Marca' },
],
},
{
id: 'order_incident_delayed',
title: 'Novedad de Entrega / Dirección No Encontrada',
description: 'Mensaje cuando el mensajero no localiza al cliente o requiere re-coordinación de horario.',
category: 'logistics_dispatch',
channel: 'whatsapp',
isActive: true,
content: `⚠️ Hola *{cliente_nombre}*, te escribimos de {tienda_nombre} respecto a tu orden #{orden_id}.
🛵 Nuestro mensajero intentó realizar la entrega en *{cliente_direccion}*, pero no fue posible completar la recepción.
🤝 ¿Nos confirmas en qué horario o con qué persona podemos coordinar el reintento de entrega hoy? Quedamos muy atentos.`,
defaultContent: `⚠️ Hola *{cliente_nombre}*, te escribimos de {tienda_nombre} respecto a tu orden #{orden_id}.
🛵 Nuestro mensajero intentó realizar la entrega en *{cliente_direccion}*, pero no fue posible completar la recepción.
🤝 ¿Nos confirmas en qué horario o con qué persona podemos coordinar el reintento de entrega hoy? Quedamos muy atentos.`,
availableVariables: [
{ key: 'cliente_nombre', label: 'Nombre Cliente', example: 'Cliente DripZone', description: 'Nombre' },
{ key: 'orden_id', label: 'No. Orden', example: 'ORD-9842', description: 'ID orden' },
{ key: 'cliente_direccion', label: 'Dirección', example: 'Calle 9 # 44-12', description: 'Dirección' },
{ key: 'cliente_ciudad', label: 'Ciudad', example: 'Cali', description: 'Ciudad' },
{ key: 'tienda_nombre', label: 'Nombre Tienda', example: 'DripZone', description: 'Nombre' },
],
},
// 3. PROVEEDORES & BODEGAS
{
id: 'supplier_single_separation',
title: 'Separación Individual de Par a Proveedor',
description: 'Mensaje enviado a la bodega para separar un par específico para una orden de cliente.',
category: 'suppliers_warehouses',
channel: 'whatsapp',
isActive: true,
content: `👋 Hola *{proveedor_nombre}*!
Por favor *sepárame este par* para despacho inmediato:
👟 *Modelo:* {zapatilla_nombre}
📏 *Talla:* {talla}
📦 *Cantidad:* {cantidad} par(es)
💵 *Costo Base:* {costo_proveedor}
🏷️ *Orden Interna:* #{orden_id}
📍 *Ciudad Destino:* {ciudad_destino}
¿Me confirmas si lo tienes listo para recoger / enviar? ¡Muchas gracias!`,
defaultContent: `👋 Hola *{proveedor_nombre}*!
Por favor *sepárame este par* para despacho inmediato:
👟 *Modelo:* {zapatilla_nombre}
📏 *Talla:* {talla}
📦 *Cantidad:* {cantidad} par(es)
💵 *Costo Base:* {costo_proveedor}
🏷️ *Orden Interna:* #{orden_id}
📍 *Ciudad Destino:* {ciudad_destino}
¿Me confirmas si lo tienes listo para recoger / enviar? ¡Muchas gracias!`,
availableVariables: [
{ key: 'proveedor_nombre', label: 'Nombre Proveedor', example: 'DIFUSIÓN JOVIC STORE', description: 'Bodega' },
{ key: 'zapatilla_nombre', label: 'Modelo Zapatilla', example: 'Nike Vomero 5 Silver', description: 'Modelo' },
{ key: 'talla', label: 'Talla', example: '40', description: 'Talla' },
{ key: 'cantidad', label: 'Cantidad Pares', example: '1', description: 'Unidades' },
{ key: 'costo_proveedor', label: 'Costo Base Mayorista', example: '$90.000 COP', description: 'Costo' },
{ key: 'orden_id', label: 'No. Orden Interna', example: 'ORD-9842', description: 'Orden' },
{ key: 'ciudad_destino', label: 'Ciudad Destino', example: 'Cali', description: 'Destino' },
],
},
{
id: 'supplier_batch_manifest',
title: 'Manifiesto Consolidado de Separación por Lote',
description: 'Listado completo de todos los pares pendientes agrupados para un mismo proveedor.',
category: 'suppliers_warehouses',
channel: 'whatsapp',
isActive: true,
content: `📦 *MANIFIESTO CONSOLIDADO DE SEPARACIÓN*
🏢 *Proveedor:* {proveedor_nombre}
📅 *Fecha:* {fecha} | *Total Pares:* {total_pares}
💰 *Valor Total a Pagar Proveedor:* {total_costo_proveedor}
👟 *DETALLE DE PARES A SEPARAR:*
{lista_pares_separacion}
🤝 *Por favor confirmar disponibilidad y empaque para recogida del mensajero.* ¡Muchas gracias!`,
defaultContent: `📦 *MANIFIESTO CONSOLIDADO DE SEPARACIÓN*
🏢 *Proveedor:* {proveedor_nombre}
📅 *Fecha:* {fecha} | *Total Pares:* {total_pares}
💰 *Valor Total a Pagar Proveedor:* {total_costo_proveedor}
👟 *DETALLE DE PARES A SEPARAR:*
{lista_pares_separacion}
🤝 *Por favor confirmar disponibilidad y empaque para recogida del mensajero.* ¡Muchas gracias!`,
availableVariables: [
{ key: 'proveedor_nombre', label: 'Nombre Proveedor', example: 'EXCLUSIVE CC MÍO 3B', description: 'Bodega' },
{ key: 'fecha', label: 'Fecha Actual', example: '29/08/2026', description: 'Fecha' },
{ key: 'total_pares', label: 'Total de Pares', example: '5', description: 'Pares totales' },
{ key: 'total_costo_proveedor', label: 'Total a Pagar Bodega', example: '$450.000 COP', description: 'Costo total' },
{ key: 'lista_pares_separacion', label: 'Listado Numerado de Pares', example: '1. Nike Dunk Low Panda (Talla 39) x1 - $90.000\n2. Jordan 4 Retro Military Black (Talla 42) x1 - $110.000', description: 'Detalle' },
],
},
{
id: 'supplier_general_contact',
title: 'Contacto General con Bodega Proveedora',
description: 'Mensaje rápido de contacto desde el panel de proveedores.',
category: 'suppliers_warehouses',
channel: 'whatsapp',
isActive: true,
content: `👋 Hola {proveedor_contacto}! Te escribo desde el panel de control y logística de {tienda_nombre}.`,
defaultContent: `👋 Hola {proveedor_contacto}! Te escribo desde el panel de control y logística de {tienda_nombre}.`,
availableVariables: [
{ key: 'proveedor_contacto', label: 'Persona de Contacto', example: 'Asesor Jovic Store', description: 'Nombre asesor' },
{ key: 'proveedor_nombre', label: 'Nombre Bodega', example: 'DIFUSIÓN JOVIC STORE', description: 'Bodega' },
{ key: 'tienda_nombre', label: 'Nombre Tienda', example: 'DripZone', description: 'Nombre' },
],
},
{
id: 'supplier_product_inquiry',
title: 'Consulta de Stock de Producto a Proveedor',
description: 'Consulta rápida de inventario desde la ficha del catálogo de productos hacia el proveedor.',
category: 'suppliers_warehouses',
channel: 'whatsapp',
isActive: true,
content: `Hola {proveedor_nombre}! 👋 Consulta sobre disponibilidad del modelo *{zapatilla_nombre}* (Costo base: {costo_proveedor}). ¿Tienen disponibilidad en todas las tallas?`,
defaultContent: `Hola {proveedor_nombre}! 👋 Consulta sobre disponibilidad del modelo *{zapatilla_nombre}* (Costo base: {costo_proveedor}). ¿Tienen disponibilidad en todas las tallas?`,
availableVariables: [
{ key: 'proveedor_nombre', label: 'Nombre Bodega', example: 'Bodega Central Mayorista', description: 'Bodega' },
{ key: 'zapatilla_nombre', label: 'Modelo Zapatilla', example: 'Nike Dunk Low Grey Fog', description: 'Modelo' },
{ key: 'costo_proveedor', label: 'Costo Mayorista', example: '$85.000 COP', description: 'Costo' },
{ key: 'marca', label: 'Marca', example: 'Nike', description: 'Marca' },
],
},
// 4. SEGURIDAD & ACCESOS (OTP)
{
id: 'auth_login_otp',
title: 'Código OTP de Seguridad para Iniciar Sesión',
description: 'Código de 6 dígitos enviado por WhatsApp al usuario para autenticación sin contraseña.',
category: 'security_auth',
channel: 'whatsapp',
isActive: true,
content: `🔐 *{tienda_nombre} - Código de Seguridad*
Hola {usuario_nombre}, tu código de verificación para iniciar sesión es:
👉 *{codigo_otp}*
⏱️ _Válido por 5 minutos. No compartas este código con nadie._`,
defaultContent: `🔐 *{tienda_nombre} - Código de Seguridad*
Hola {usuario_nombre}, tu código de verificación para iniciar sesión es:
👉 *{codigo_otp}*
⏱️ _Válido por 5 minutos. No compartas este código con nadie._`,
availableVariables: [
{ key: 'tienda_nombre', label: 'Nombre Tienda', example: 'DripZone Sneakers', description: 'Marca' },
{ key: 'usuario_nombre', label: 'Nombre Usuario', example: 'Cliente DripZone', description: 'Usuario' },
{ key: 'codigo_otp', label: 'Código de 6 Dígitos', example: '849201', description: 'Código OTP' },
],
},
{
id: 'auth_register_otp',
title: 'Código OTP para Verificación de Nueva Cuenta',
description: 'Código enviado por WhatsApp al nuevo cliente tras registrar su cuenta en la plataforma.',
category: 'security_auth',
channel: 'whatsapp',
isActive: true,
content: `🔐 *{tienda_nombre} - Verificación de Cuenta*
Hola {usuario_nombre}! Tu código de seguridad para validar tu cuenta es:
👉 *{codigo_otp}*
⏱️ _Válido por 5 minutos._`,
defaultContent: `🔐 *{tienda_nombre} - Verificación de Cuenta*
Hola {usuario_nombre}! Tu código de seguridad para validar tu cuenta es:
👉 *{codigo_otp}*
⏱️ _Válido por 5 minutos._`,
availableVariables: [
{ key: 'tienda_nombre', label: 'Nombre Tienda', example: 'DripZone Sneakers', description: 'Marca' },
{ key: 'usuario_nombre', label: 'Nombre Usuario', example: 'Andrés Lasso', description: 'Usuario' },
{ key: 'codigo_otp', label: 'Código de 6 Dígitos', example: '392018', description: 'Código OTP' },
],
},
{
id: 'admin_customer_contact',
title: 'Contacto Administrativo con Usuario',
description: 'Saludo institucional enviado desde el panel de control de usuarios hacia un cliente.',
category: 'security_auth',
channel: 'whatsapp',
isActive: true,
content: `Hola {usuario_nombre}! Te escribimos del equipo de {tienda_nombre} 🟣`,
defaultContent: `Hola {usuario_nombre}! Te escribimos del equipo de {tienda_nombre} 🟣`,
availableVariables: [
{ key: 'usuario_nombre', label: 'Nombre Usuario', example: 'Cliente DripZone', description: 'Nombre del usuario' },
{ key: 'tienda_nombre', label: 'Nombre Tienda', example: 'DripZone', description: 'Nombre' },
{ key: 'ciudad', label: 'Ciudad Usuario', example: 'Cali', description: 'Ciudad' },
],
},
// 5. GARANTÍAS & POLÍTICAS
{
id: 'shipping_deposit_alert',
title: 'Requerimiento de Garantía de Flete por Historial',
description: 'Mensaje para clientes con cobro de flete/anticipo obligatorio debido a devoluciones previas.',
category: 'guarantees_policies',
channel: 'whatsapp',
isActive: true,
content: `🛡️ *Garantía de Despacho Requerida - {tienda_nombre}*
Hola {cliente_nombre}, para procesar tu orden #{orden_id} hacia {cliente_ciudad}, se requiere la separación del flete por valor de *{costo_envio}* (100% descontable al recibir en tu puerta).
💡 Motivo: {motivo_garantia}
💳 Puedes realizar el pago en línea de forma 100% segura por Bold: {link_pago_bold}
¡Una vez confirmado tu comprobante, tu despacho saldrá de inmediato!`,
defaultContent: `🛡️ *Garantía de Despacho Requerida - {tienda_nombre}*
Hola {cliente_nombre}, para procesar tu orden #{orden_id} hacia {cliente_ciudad}, se requiere la separación del flete por valor de *{costo_envio}* (100% descontable al recibir en tu puerta).
💡 Motivo: {motivo_garantia}
💳 Puedes realizar el pago en línea de forma 100% segura por Bold: {link_pago_bold}
¡Una vez confirmado tu comprobante, tu despacho saldrá de inmediato!`,
availableVariables: [
{ key: 'tienda_nombre', label: 'Nombre Tienda', example: 'DripZone', description: 'Tienda' },
{ key: 'cliente_nombre', label: 'Nombre Cliente', example: 'Cliente DripZone', description: 'Cliente' },
{ key: 'orden_id', label: 'No. Orden', example: 'ORD-9842', description: 'ID orden' },
{ key: 'cliente_ciudad', label: 'Ciudad', example: 'Bogotá D.C.', description: 'Ciudad' },
{ key: 'costo_envio', label: 'Costo Flete', example: '$12.000 COP', description: 'Valor del flete' },
{ key: 'motivo_garantia', label: 'Motivo de Garantía', example: 'Pedido anterior no recibido en domicilio', description: 'Motivo' },
{ key: 'link_pago_bold', label: 'Enlace Pago Bold', example: 'https://bold.co/p/dripzone', description: 'Pasarela oficial Bold' },
],
},
{
id: 'cod_policy_notice',
title: 'Aviso de Políticas de Entrega y Cambio de Talla',
description: 'Resumen de políticas contraentrega y condiciones de cambio de talla para soporte al cliente.',
category: 'guarantees_policies',
channel: 'whatsapp',
isActive: true,
content: `📋 *Políticas de Compra y Entrega - {tienda_nombre}*
✅ *Pago Contraentrega:* Separas tu pedido con solo $10.000 por Bold oficial y pagas el saldo al recibir en tu domicilio (en efectivo o mediante Bold).
👟 *Garantía y Cambio de Talla:* Garantía directa de fábrica. Cambio de talla garantizado según la ciudad de destino (cobertura local con mensajero en Cali y logística de reenvío en otras ciudades).
🚚 *Envíos Nacionales:* Tiempos de entrega y valor del flete varían de acuerdo a tu ciudad.
Cualquier duda o asesoría adicional, ¡estamos para servirte con todo el gusto!`,
defaultContent: `📋 *Políticas de Compra y Entrega - {tienda_nombre}*
✅ *Pago Contraentrega:* Separas tu pedido con solo $10.000 por Bold oficial y pagas el saldo al recibir en tu domicilio (en efectivo o mediante Bold).
👟 *Garantía y Cambio de Talla:* Garantía directa de fábrica. Cambio de talla garantizado según la ciudad de destino (cobertura local con mensajero en Cali y logística de reenvío en otras ciudades).
🚚 *Envíos Nacionales:* Tiempos de entrega y valor del flete varían de acuerdo a tu ciudad.
Cualquier duda o asesoría adicional, ¡estamos para servirte con todo el gusto!`,
availableVariables: [
{ key: 'tienda_nombre', label: 'Nombre Tienda', example: 'DripZone', description: 'Nombre' },
{ key: 'ciudad_tienda', label: 'Ciudad Sede', example: 'Cali', description: 'Ciudad' },
],
},
{
id: 'customer_request_received',
title: 'Confirmación de Encargo Especial al Cliente',
description: 'Notificación enviada al cliente por WhatsApp cuando registra una solicitud de calzado por encargo.',
category: 'customer_sales',
channel: 'whatsapp',
isActive: true,
content: `👋 ¡Hola *{cliente_nombre}*!\n\nRecibimos con éxito tu solicitud por encargo para las *{marca} {modelo}* en talla *{talla}*. 👟🔥\n\nNuestro equipo en {tienda_nombre} ya está verificando disponibilidad y mejor precio con nuestras bodegas y proveedores mayoristas. Te responderemos a este mismo chat con la cotización exacta en el menor tiempo posible.\n\n¡Gracias por confiar en {tienda_nombre}! 🚀`,
defaultContent: `👋 ¡Hola *{cliente_nombre}*!\n\nRecibimos con éxito tu solicitud por encargo para las *{marca} {modelo}* en talla *{talla}*. 👟🔥\n\nNuestro equipo en {tienda_nombre} ya está verificando disponibilidad y mejor precio con nuestras bodegas y proveedores mayoristas. Te responderemos a este mismo chat con la cotización exacta en el menor tiempo posible.\n\n¡Gracias por confiar en {tienda_nombre}! 🚀`,
availableVariables: [
{ key: 'tienda_nombre', label: 'Nombre Tienda', example: 'DripZone', description: 'Nombre' },
{ key: 'cliente_nombre', label: 'Nombre Cliente', example: 'Cliente DripZone', description: 'Nombre' },
{ key: 'marca', label: 'Marca', example: 'Nike', description: 'Marca calzado' },
{ key: 'modelo', label: 'Modelo', example: 'Air Jordan 4', description: 'Modelo' },
{ key: 'talla', label: 'Talla', example: '41', description: 'Talla' },
],
},
{
id: 'customer_deposit_confirmed',
title: 'Confirmación de Anticipo Bold al Cliente',
description: 'Notificación enviada al cliente por WhatsApp cuando su pago de anticipo de separación es acreditado por Bold.',
category: 'customer_sales',
channel: 'whatsapp',
isActive: true,
content: `🎉 *¡Tu anticipo de separación fue confirmado con éxito!*\n\nHola *{cliente_nombre}*, recibimos correctamente tu pago de *{valor_anticipo}* a través de Bold.\n\n📦 Tu orden *#{orden_id}* ya se encuentra en alistamiento y empaque para despacho a *{cliente_ciudad}*.\n🤝 *Saldo restante a pagar contraentrega:* *{saldo_contraentrega}* al recibir en tu puerta.\n\nPuedes consultar el estado de tu pedido en cualquier momento desde la app oficial de {tienda_nombre}.\n\n¡Muchas gracias por tu compra en {tienda_nombre}!`,
defaultContent: `🎉 *¡Tu anticipo de separación fue confirmado con éxito!*\n\nHola *{cliente_nombre}*, recibimos correctamente tu pago de *{valor_anticipo}* a través de Bold.\n\n📦 Tu orden *#{orden_id}* ya se encuentra en alistamiento y empaque para despacho a *{cliente_ciudad}*.\n🤝 *Saldo restante a pagar contraentrega:* *{saldo_contraentrega}* al recibir en tu puerta.\n\nPuedes consultar el estado de tu pedido en cualquier momento desde la app oficial de {tienda_nombre}.\n\n¡Muchas gracias por tu compra en {tienda_nombre}!`,
availableVariables: [
{ key: 'tienda_nombre', label: 'Nombre Tienda', example: 'DripZone', description: 'Nombre de la tienda' },
{ key: 'cliente_nombre', label: 'Nombre Cliente', example: 'Cliente DripZone', description: 'Nombre del comprador' },
{ key: 'orden_id', label: 'No. de Orden', example: 'ORD-9842', description: 'ID de la orden' },
{ key: 'valor_anticipo', label: 'Valor Anticipo', example: '$10.000 COP', description: 'Monto anticipo pagado' },
{ key: 'cliente_ciudad', label: 'Ciudad Destino', example: 'Cali', description: 'Municipio de entrega' },
{ key: 'saldo_contraentrega', label: 'Saldo Contraentrega', example: '$115.000 COP', description: 'Saldo en puerta' },
],
},
// 6. CATÁLOGO & TEXTOS COMERCIALES
{
id: 'catalog_product_desc',
title: 'Descripción de Producto para Catálogo WhatsApp y Feeds',
description: 'Texto oficial que acompaña cada producto en el catálogo de WhatsApp Business (Meta Commerce), feeds XML y CSV.',
category: 'catalog_marketing',
channel: 'whatsapp',
isActive: true,
content: `Colección: {coleccion_icono} *{coleccion_nombre} {tienda_nombre}*
{descripcion_producto}
📏 Tallas disponibles: {tallas} (Horma Nacional)
💎 Precio oficial: {precio} COP
🚚 Envíos a toda Colombia (el valor del flete y tiempo de entrega varían según la ciudad de destino)
💵 Pago contraentrega sujeto a cobertura de tu ciudad
🛡️ Garantía de fábrica y cambio de talla (sujeto a políticas de cobertura según ciudad)
🛒 ¿CÓMO REALIZAR TU PEDIDO Y PAGO SEGURO?
La atención comercial y asesoría es por este WhatsApp. Para garantizar tu despacho con factura y seguimiento en línea, el pedido y pago del anticipo ($10.000 únicamente por Bold oficial) se procesan a través de nuestra plataforma:
👉 Enlace directo de compra: {enlace_compra}
📱 O descarga la App Móvil oficial: {enlace_app}
💬 ¿Dudas con tu talla o envío? Escríbenos a este chat y un asesor te atenderá al instante.`,
defaultContent: `Colección: {coleccion_icono} *{coleccion_nombre} {tienda_nombre}*
{descripcion_producto}
📏 Tallas disponibles: {tallas} (Horma Nacional)
💎 Precio oficial: {precio} COP
🚚 Envíos a toda Colombia (el valor del flete y tiempo de entrega varían según la ciudad de destino)
💵 Pago contraentrega sujeto a cobertura de tu ciudad
🛡️ Garantía de fábrica y cambio de talla (sujeto a políticas de cobertura según ciudad)
🛒 ¿CÓMO REALIZAR TU PEDIDO Y PAGO SEGURO?
La atención comercial y asesoría es por este WhatsApp. Para garantizar tu despacho con factura y seguimiento en línea, el pedido y pago del anticipo ($10.000 únicamente por Bold oficial) se procesan a través de nuestra plataforma:
👉 Enlace directo de compra: {enlace_compra}
📱 O descarga la App Móvil oficial: {enlace_app}
💬 ¿Dudas con tu talla o envío? Escríbenos a este chat y un asesor te atenderá al instante.`,
availableVariables: [
{ key: 'tienda_nombre', label: 'Nombre Tienda', example: 'DripZone', description: 'Nombre de la marca' },
{ key: 'coleccion_icono', label: 'Ícono Colección', example: '👟', description: 'Emoji de categoría' },
{ key: 'coleccion_nombre', label: 'Nombre Colección', example: 'Zapatillas Urbanas', description: 'Categoría WhatsApp' },
{ key: 'descripcion_producto', label: 'Descripción Base', example: 'Zapatillas exclusivas en horma nacional...', description: 'Detalle del modelo' },
{ key: 'tallas', label: 'Tallas Disponibles', example: '37 al 43', description: 'Curva de tallas' },
{ key: 'precio', label: 'Precio COP', example: '$125.000', description: 'Precio de venta' },
{ key: 'enlace_compra', label: 'Enlace Directo Checkout', example: 'https://drip-zone.online/checkout?productId=...', description: 'Link de compra' },
{ key: 'enlace_app', label: 'Enlace Descarga App', example: 'https://drip-zone.online/app-dripzone.apk', description: 'Descarga APK' },
],
},
{
id: 'catalog_order_message',
title: 'Mensaje de Asesor con Enlace de Compra y Cotización',
description: 'Mensaje comercial que el asesor copia o envía al cliente desde el catálogo de WhatsApp con el enlace de compra.',
category: 'catalog_marketing',
channel: 'whatsapp',
isActive: true,
content: `{saludo} Qué gusto saludarte de parte de *{tienda_nombre} Colombia* 🇨🇴
Para confirmar tu pedido de las *{producto_nombre}* en talla *{talla}* (Horma Nacional) y despacharlo con total garantía y factura:
💎 *Precio Oficial:* {precio} COP
🚚 *Pago Contraentrega:* Separas con solo *$10.000* a través de Bold oficial (PSE o tarjetas) y el saldo restante lo cancelas contraentrega (en efectivo o mediante Bold) al recibir en tu puerta.
📦 *Envío:* El valor del flete y tiempos de entrega varían según tu ciudad de destino.
🛡️ *Garantía:* Garantía directa y cambio de talla según políticas de cobertura en tu ciudad.
🛒 *Por favor completa tus datos de entrega y anticipo seguro aquí:*
👉 {enlace_checkout}
📱 *O si prefieres, descárgate nuestra App Móvil oficial:*
{enlace_app}
{nota_asesor}
Cualquier inquietud con tu dirección o el pago, ¡aquí estamos para ayudarte!`,
defaultContent: `{saludo} Qué gusto saludarte de parte de *{tienda_nombre} Colombia* 🇨🇴
Para confirmar tu pedido de las *{producto_nombre}* en talla *{talla}* (Horma Nacional) y despacharlo con total garantía y factura:
💎 *Precio Oficial:* {precio} COP
🚚 *Pago Contraentrega:* Separas con solo *$10.000* a través de Bold oficial (PSE o tarjetas) y el saldo restante lo cancelas contraentrega (en efectivo o mediante Bold) al recibir en tu puerta.
📦 *Envío:* El valor del flete y tiempos de entrega varían según tu ciudad de destino.
🛡️ *Garantía:* Garantía directa y cambio de talla según políticas de cobertura en tu ciudad.
🛒 *Por favor completa tus datos de entrega y anticipo seguro aquí:*
👉 {enlace_checkout}
📱 *O si prefieres, descárgate nuestra App Móvil oficial:*
{enlace_app}
{nota_asesor}
Cualquier inquietud con tu dirección o el pago, ¡aquí estamos para ayudarte!`,
availableVariables: [
{ key: 'saludo', label: 'Saludo Personalizado', example: '¡Hola Carlos! 👋', description: 'Saludo con nombre' },
{ key: 'tienda_nombre', label: 'Nombre Tienda', example: 'DripZone', description: 'Nombre comercial' },
{ key: 'producto_nombre', label: 'Nombre Producto', example: 'Nike Dunk Low Grey Fog', description: 'Modelo' },
{ key: 'talla', label: 'Talla', example: '41', description: 'Talla seleccionada' },
{ key: 'precio', label: 'Precio COP', example: '$135.000', description: 'Precio' },
{ key: 'enlace_checkout', label: 'Enlace Checkout Directo', example: 'https://drip-zone.online/checkout?...', description: 'Link de compra' },
{ key: 'enlace_app', label: 'Enlace Descarga App', example: 'https://drip-zone.online/app-dripzone.apk', description: 'Link App' },
{ key: 'nota_asesor', label: 'Nota Asesor (Opcional)', example: '📝 *Nota del Asesor:* Incluye cordones extra.', description: 'Nota personalizada' },
],
},
{
id: 'product_copy_generator',
title: 'Plantilla de Texto Comercial de Producto (Copy Automático)',
description: 'Estructura base para generar la descripción atractiva de nuevos modelos al importarlos o publicarlos en la tienda.',
category: 'catalog_marketing',
channel: 'whatsapp',
isActive: true,
content: `{gancho}
✨ *¿Por qué elegir este modelo?*
• 💎 *Materiales Seleccionados:* Construcción de alta resistencia, acabados prémium y silueta impecable.
• ☁️ *Máximo Confort:* Plantilla ergonómica acolchada para máxima suavidad y comodidad al caminar.
• 🚚 *Envíos a Nivel Nacional:* Despachos a toda Colombia (el valor del envío y tiempos de entrega varían según la ciudad de destino).
• 💵 *Pago Contraentrega:* Separas tu pedido con anticipo por Bold oficial y cancelas el saldo restante en efectivo o con Bold al recibir en tu puerta.
• 🛡️ *Garantía Directa:* Respaldo de fábrica y cambio de talla (sujeto a cobertura y políticas según tu ciudad).
⚠️ *Disponibilidad:* Pocas unidades por talla en inventario nacional. ¡Asegura tu par ahora!`,
defaultContent: `{gancho}
✨ *¿Por qué elegir este modelo?*
• 💎 *Materiales Seleccionados:* Construcción de alta resistencia, acabados prémium y silueta impecable.
• ☁️ *Máximo Confort:* Plantilla ergonómica acolchada para máxima suavidad y comodidad al caminar.
• 🚚 *Envíos a Nivel Nacional:* Despachos a toda Colombia (el valor del envío y tiempos de entrega varían según la ciudad de destino).
• 💵 *Pago Contraentrega:* Separas tu pedido con anticipo por Bold oficial y cancelas el saldo restante en efectivo o con Bold al recibir en tu puerta.
• 🛡️ *Garantía Directa:* Respaldo de fábrica y cambio de talla (sujeto a cobertura y políticas según tu ciudad).
⚠️ *Disponibilidad:* Pocas unidades por talla en inventario nacional. ¡Asegura tu par ahora!`,
availableVariables: [
{ key: 'gancho', label: 'Frase de Entrada (Gancho)', example: '🔥 ¡Lleva tu outfit al siguiente nivel con...', description: 'Introducción del producto' },
{ key: 'producto_nombre', label: 'Nombre Producto', example: 'Adidas Campus 00s', description: 'Modelo' },
{ key: 'marca', label: 'Marca', example: 'Adidas', description: 'Marca comercial' },
{ key: 'categoria', label: 'Categoría', example: 'Zapatillas', description: 'Tipo de producto' },
],
},
{
id: 'whatsapp_bot_inquiry',
title: 'Respuesta Automática del Bot ante Consulta de Producto',
description: 'Mensaje enviado por el bot de WhatsApp cuando un cliente consulta por un modelo del catálogo.',
category: 'customer_sales',
channel: 'whatsapp',
isActive: true,
content: `👟 *{producto_nombre}*
━━━━━━━━━━━━━━━━━━━━━━
📏 *Tallas Disponibles:* {tallas} (Horma Nacional)
💵 *Precio Oficial:* *{precio} COP*
🚚 *Pago Contraentrega:* Pagas un anticipo de *$10.000* por Bold oficial para despacho garantizado y el saldo restante al recibir (en efectivo o mediante Bold).
📦 *Envío:* El costo del flete depende de la ciudad de destino.
🛡️ *Garantía:* Garantía de fábrica y cambio de talla según políticas de cobertura en tu ciudad.
🛒 *¿Cómo procesar tu pedido y pago seguro?*
Para tu seguridad, asignación de factura y reserva de tu talla, el pedido y pago del anticipo ($10.000 únicamente por Bold / PSE / Tarjetas) se procesan a través de nuestra plataforma:
👉 *Enlace directo de compra:* {enlace_checkout}
📱 *O pide en nuestra App Móvil:* {enlace_app}
Diligencia tus datos de envío en el enlace y hoy mismo programamos tu despacho. Si necesitas ayuda con tu talla habitual, ¡aquí estamos para asesorarte!`,
defaultContent: `👟 *{producto_nombre}*
━━━━━━━━━━━━━━━━━━━━━━
📏 *Tallas Disponibles:* {tallas} (Horma Nacional)
💵 *Precio Oficial:* *{precio} COP*
🚚 *Pago Contraentrega:* Pagas un anticipo de *$10.000* por Bold oficial para despacho garantizado y el saldo restante al recibir (en efectivo o mediante Bold).
📦 *Envío:* El costo del flete depende de la ciudad de destino.
🛡️ *Garantía:* Garantía de fábrica y cambio de talla según políticas de cobertura en tu ciudad.
🛒 *¿Cómo procesar tu pedido y pago seguro?*
Para tu seguridad, asignación de factura y reserva de tu talla, el pedido y pago del anticipo ($10.000 únicamente por Bold / PSE / Tarjetas) se procesan a través de nuestra plataforma:
👉 *Enlace directo de compra:* {enlace_checkout}
📱 *O pide en nuestra App Móvil:* {enlace_app}
Diligencia tus datos de envío en el enlace y hoy mismo programamos tu despacho. Si necesitas ayuda con tu talla habitual, ¡aquí estamos para asesorarte!`,
availableVariables: [
{ key: 'producto_nombre', label: 'Nombre Producto', example: 'Nike Air Force 1 07', description: 'Nombre' },
{ key: 'tallas', label: 'Tallas Disponibles', example: '38, 39, 40, 41, 42', description: 'Tallas' },
{ key: 'precio', label: 'Precio COP', example: '$125.000', description: 'Precio' },
{ key: 'enlace_checkout', label: 'Enlace Compra', example: 'https://drip-zone.online/checkout?...', description: 'Link checkout' },
{ key: 'enlace_app', label: 'Enlace Descarga App', example: 'https://drip-zone.online/app-dripzone.apk', description: 'Link App' },
],
},
{
id: 'whatsapp_bot_greeting',
title: 'Bienvenida Comercial Automática del Bot de WhatsApp',
description: 'Respuesta comercial del bot ante saludos o preguntas generales de compra en WhatsApp.',
category: 'customer_sales',
channel: 'whatsapp',
isActive: true,
content: `¡Hola! 👋 Te damos la bienvenida a *{tienda_nombre} Colombia* 🇨🇴
Tu tienda oficial de sneakers, zapatillas y streetwear con horma nacional.
━━━━━━━━━━━━━━━━━━━━━━
👀 *Puedes consultar nuestro catálogo y modelos aquí en WhatsApp o en nuestra tienda online:*
🌐 *Catálogo Completo:* {enlace_tienda}
🛒 *Procesar Pedido:* {enlace_checkout}
📱 *Descargar App Android:* {enlace_app}
💡 *¿Cómo funciona tu compra?*
1️⃣ Elige tu modelo y talla en el catálogo.
2️⃣ Los pedidos y anticipos se procesan en la web o app para asegurar tu factura y despacho inmediato.
3️⃣ Realizas un anticipo de *$10.000* únicamente por Bold oficial (PSE o tarjetas) y cancelas el saldo restante *contraentrega* al recibir en tu puerta (en efectivo o mediante Bold).
4️⃣ Envíos a todo el país con tiempos y flete según tu ciudad de destino.
5️⃣ Garantía directa y cambio de talla según políticas y cobertura de tu ciudad.
💬 *¿Te gustó algún modelo de nuestro catálogo de WhatsApp?* Indícanos el nombre o tu talla y con gusto te asesoramos y enviamos el enlace directo.`,
defaultContent: `¡Hola! 👋 Te damos la bienvenida a *{tienda_nombre} Colombia* 🇨🇴
Tu tienda oficial de sneakers, zapatillas y streetwear con horma nacional.
━━━━━━━━━━━━━━━━━━━━━━
👀 *Puedes consultar nuestro catálogo y modelos aquí en WhatsApp o en nuestra tienda online:*
🌐 *Catálogo Completo:* {enlace_tienda}
🛒 *Procesar Pedido:* {enlace_checkout}
📱 *Descargar App Android:* {enlace_app}
💡 *¿Cómo funciona tu compra?*
1️⃣ Elige tu modelo y talla en el catálogo.
2️⃣ Los pedidos y anticipos se procesan en la web o app para asegurar tu factura y despacho inmediato.
3️⃣ Realizas un anticipo de *$10.000* únicamente por Bold oficial (PSE o tarjetas) y cancelas el saldo restante *contraentrega* al recibir en tu puerta (en efectivo o mediante Bold).
4️⃣ Envíos a todo el país con tiempos y flete según tu ciudad de destino.
5️⃣ Garantía directa y cambio de talla según políticas y cobertura de tu ciudad.
💬 *¿Te gustó algún modelo de nuestro catálogo de WhatsApp?* Indícanos el nombre o tu talla y con gusto te asesoramos y enviamos el enlace directo.`,
availableVariables: [
{ key: 'tienda_nombre', label: 'Nombre Tienda', example: 'DripZone', description: 'Tienda' },
{ key: 'enlace_tienda', label: 'Enlace Web', example: 'https://drip-zone.online', description: 'Página web' },
{ key: 'enlace_checkout', label: 'Enlace Checkout', example: 'https://drip-zone.online/checkout', description: 'Link compra' },
{ key: 'enlace_app', label: 'Enlace App Android', example: 'https://drip-zone.online/app-dripzone.apk', description: 'Descarga APK' },
],
},
{
id: 'shipping_city_policy_notice',
title: 'Política Oficial de Envíos y Fletes por Ciudad',
description: 'Texto explicativo para clientes informando que los envíos varían según la ciudad.',
category: 'guarantees_policies',
channel: 'whatsapp',
isActive: true,
content: `🚚 *Información de Envíos y Despachos - {tienda_nombre}*
📍 El costo de flete y el tiempo estimado de entrega dependen de la ciudad de destino:
• *Cali y Área Metropolitana:* Despacho express en 24 horas hábiles con mensajería local.
• *Otras Ciudades Principales e Intermedias:* De 2 a 4 días hábiles mediante transportadora nacional con seguimiento en línea.
💵 *Forma de Pago:* Separación con $10.000 por Bold oficial y saldo restante contraentrega en efectivo o mediante Bold al recibir.
¡Consulta la tarifa y tiempo exacto seleccionando tu ciudad en el checkout!`,
defaultContent: `🚚 *Información de Envíos y Despachos - {tienda_nombre}*
📍 El costo de flete y el tiempo estimado de entrega dependen de la ciudad de destino:
• *Cali y Área Metropolitana:* Despacho express en 24 horas hábiles con mensajería local.
• *Otras Ciudades Principales e Intermedias:* De 2 a 4 días hábiles mediante transportadora nacional con seguimiento en línea.
💵 *Forma de Pago:* Separación con $10.000 por Bold oficial y saldo restante contraentrega en efectivo o mediante Bold al recibir.
¡Consulta la tarifa y tiempo exacto seleccionando tu ciudad en el checkout!`,
availableVariables: [
{ key: 'tienda_nombre', label: 'Nombre Tienda', example: 'DripZone', description: 'Nombre marca' },
],
},
{
id: 'exchange_city_policy_notice',
title: 'Política de Garantía y Cambio de Talla según Ciudad',
description: 'Mensaje claro para clientes indicando que la cobertura de cambio de talla depende de la ciudad.',
category: 'guarantees_policies',
channel: 'whatsapp',
isActive: true,
content: `🛡️ *Políticas de Garantía y Cambio de Talla - {tienda_nombre}*
👟 *Horma Nacional:* Todos nuestros modelos cuentan con horma nacional colombiana estándar.
🔄 *Cambios de Talla:* La posibilidad y condiciones del cambio de talla dependen de la cobertura logística de cada ciudad:
• *Cali y cobertura metropolitana:* Primer cambio de talla coordinado con nuestro mensajero local.
• *Nivel Nacional:* Cambio de talla garantizado sujeto a disponibilidad de inventario; el flete logístico del reenvío se coordina según la ciudad de destino.
✅ *Garantía de Fábrica:* Respaldo total por defectos de manufactura en todos los envíos.`,
defaultContent: `🛡️ *Políticas de Garantía y Cambio de Talla - {tienda_nombre}*
👟 *Horma Nacional:* Todos nuestros modelos cuentan con horma nacional colombiana estándar.
🔄 *Cambios de Talla:* La posibilidad y condiciones del cambio de talla dependen de la cobertura logística de cada ciudad:
• *Cali y cobertura metropolitana:* Primer cambio de talla coordinado con nuestro mensajero local.
• *Nivel Nacional:* Cambio de talla garantizado sujeto a disponibilidad de inventario; el flete logístico del reenvío se coordina según la ciudad de destino.
✅ *Garantía de Fábrica:* Respaldo total por defectos de manufactura en todos los envíos.`,
availableVariables: [
{ key: 'tienda_nombre', label: 'Nombre Tienda', example: 'DripZone', description: 'Nombre marca' },
],
},
];
/**
* Reemplaza todas las variables {variable_key} en el texto de la plantilla.
*/
export function interpolateVariables(
templateContent: string,
variables: Record<string, string | number | undefined | null>
): string {
if (!templateContent) return '';
return templateContent.replace(/\{([a-zA-Z0-9_]+)\}/g, (match, key) => {
const val = variables[key];
if (val !== undefined && val !== null) {
return String(val);
}
return match; // Mantener la etiqueta si no se provee valor
});
}
/**
* Convierte el formato de WhatsApp (*negrita*, _cursiva_, ~tachado~, saltos de línea) a HTML seguro para la vista previa
*/
export function formatWhatsAppPreviewToHTML(text: string): string {
if (!text) return '';
let html = text
.replace(/&/g, '&amp;')
.replace(/</g, '&lt;')
.replace(/>/g, '&gt;');
// *negrita*
html = html.replace(/\*([^\*]+)\*/g, '<strong class="font-bold text-white">$1</strong>');
// _cursiva_
html = html.replace(/_([^_]+)_/g, '<em class="italic text-neutral-300">$1</em>');
// ~tachado~
html = html.replace(/~([^~]+)~/g, '<del class="line-through text-neutral-400">$1</del>');
// saltos de línea
html = html.replace(/\n/g, '<br/>');
return html;
}