940 lines
52 KiB
TypeScript
940 lines
52 KiB
TypeScript
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, '&')
|
||
.replace(/</g, '<')
|
||
.replace(/>/g, '>');
|
||
|
||
// *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;
|
||
}
|