|
|
@@ -1,13 +1,13 @@
|
|
|
|
|
|
|
|
|
REGISTER_MAIL = {
|
|
|
- "subject": "Welcome to Pedidos Express",
|
|
|
+ "subject": "Bienvenido a Pedidos Express",
|
|
|
"body": """
|
|
|
<html>
|
|
|
<head>
|
|
|
<meta charset="UTF-8">
|
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
|
- <title>¡Bienvenido a KlowApp!</title>
|
|
|
+ <title>¡Bienvenido a {app_name}!</title>
|
|
|
<style>
|
|
|
body {{
|
|
|
margin: 0;
|
|
|
@@ -258,5 +258,258 @@ REGISTER_MAIL = {
|
|
|
PRINTER_DISCONNECTED_MAIL = {
|
|
|
"subject": "Printer Disconnected",
|
|
|
"body": """
|
|
|
+<!DOCTYPE html>
|
|
|
+<html>
|
|
|
+<head>
|
|
|
+ <meta charset="UTF-8">
|
|
|
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
|
+ <title>Alerta: Impresora Desconectada - KlowApp</title>
|
|
|
+</head>
|
|
|
+<body style="margin: 0; padding: 0; font-family: Arial, sans-serif; background-color: #f3f4f6;">
|
|
|
+ <table width="100%" cellpadding="0" cellspacing="0" style="background-color: #f3f4f6; padding: 20px;">
|
|
|
+ <tr>
|
|
|
+ <td align="center">
|
|
|
+ <table width="600" cellpadding="0" cellspacing="0" style="max-width: 600px; background-color: #ffffff; border-radius: 12px; overflow: hidden; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);">
|
|
|
+
|
|
|
+ <!-- Header -->
|
|
|
+ <tr>
|
|
|
+ <td style="background-color: #dc2626; color: white; padding: 32px; text-align: center;">
|
|
|
+ <h1 style="margin: 0; font-size: 28px; font-weight: bold;">🚨 Alerta del Sistema</h1>
|
|
|
+ <p style="margin: 8px 0 0 0; font-size: 16px; opacity: 0.9;">Notificación para Desarrolladores</p>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+
|
|
|
+ <!-- Content -->
|
|
|
+ <tr>
|
|
|
+ <td style="padding: 32px;">
|
|
|
+
|
|
|
+ <!-- Alert Message -->
|
|
|
+ <table width="100%" cellpadding="0" cellspacing="0">
|
|
|
+ <tr>
|
|
|
+ <td style="text-align: center; margin-bottom: 32px;">
|
|
|
+ <h2 style="color: #dc2626; font-size: 24px; margin: 0 0 12px 0; font-weight: bold;">Impresora Desconectada</h2>
|
|
|
+ <p style="color: #6b7280; font-size: 16px; line-height: 1.6; margin: 0;">Se ha detectado una desconexión en el sistema de impresión de {restaurant_name}.</p>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ </table>
|
|
|
+
|
|
|
+ <!-- Alert Details -->
|
|
|
+ <table width="100%" cellpadding="0" cellspacing="0" style="margin: 24px 0;">
|
|
|
+ <tr>
|
|
|
+ <td style="background-color: #fef2f2; border-radius: 8px; padding: 24px; border-left: 4px solid #dc2626;">
|
|
|
+ <h3 style="color: #dc2626; font-size: 18px; font-weight: 600; margin: 0 0 16px 0;">Detalles del Problema</h3>
|
|
|
+ <ul style="list-style: none; padding: 0; margin: 0;">
|
|
|
+ <li style="color: #374151; font-size: 14px; line-height: 1.5; margin-bottom: 8px; padding-left: 20px; position: relative;">
|
|
|
+ <span style="color: #dc2626; font-weight: bold; position: absolute; left: 0;">🖨️</span>
|
|
|
+ <strong>Impresora:</strong> {printer_name}
|
|
|
+ </li>
|
|
|
+ <li style="color: #374151; font-size: 14px; line-height: 1.5; margin-bottom: 8px; padding-left: 20px; position: relative;">
|
|
|
+ <span style="color: #dc2626; font-weight: bold; position: absolute; left: 0;">⏰</span>
|
|
|
+ <strong>Hora de desconexión:</strong> {timestamp}
|
|
|
+ </li>
|
|
|
+ </ul>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ </table>
|
|
|
+
|
|
|
+ <!-- Priority Section -->
|
|
|
+ <table width="100%" cellpadding="0" cellspacing="0">
|
|
|
+ <tr>
|
|
|
+ <td style="background: linear-gradient(135deg, #dc2626 0%, #b91c1c 100%); border-radius: 12px; padding: 32px; text-align: center; margin: 32px 0; color: white;">
|
|
|
+ <p style="font-size: 18px; margin: 0 0 16px 0; opacity: 0.95;">Estado del Sistema</p>
|
|
|
+ <div style="font-size: 32px; font-weight: bold; margin: 16px 0; border: 3px solid white; border-radius: 8px; padding: 16px; display: inline-block; min-width: 200px; background-color: rgba(255,255,255,0.1);">
|
|
|
+ 🔴 CRÍTICO
|
|
|
+ </div>
|
|
|
+ <p style="font-size: 16px; margin: 16px 0 0 0; opacity: 0.9;">Requiere atención inmediata</p>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ </table>
|
|
|
+
|
|
|
+ <!-- Impact Assessment -->
|
|
|
+ <table width="100%" cellpadding="0" cellspacing="0" style="margin: 32px 0;">
|
|
|
+ <tr>
|
|
|
+ <td style="background-color: #fff7ed; border-radius: 8px; padding: 24px; border-left: 4px solid #f59e0b;">
|
|
|
+ <h3 style="color: #92400e; font-size: 16px; font-weight: 600; margin: 0 0 12px 0;">Impacto Potencial</h3>
|
|
|
+ <p style="color: #374151; font-size: 14px; line-height: 1.5; margin: 0;">
|
|
|
+ ⚠️ Los pedidos no se están imprimiendo automáticamente<br>
|
|
|
+ ⚠️ El restaurante puede estar perdiendo órdenes<br>
|
|
|
+ ⚠️ Se requiere intervención manual inmediata<br>
|
|
|
+ ⚠️ Posible pérdida de ingresos y experiencia del cliente
|
|
|
+ </p>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ </table>
|
|
|
+
|
|
|
+ <!-- Action Items -->
|
|
|
+ <table width="100%" cellpadding="0" cellspacing="0" style="margin: 32px 0;">
|
|
|
+ <tr>
|
|
|
+ <td style="background-color: #f0f9ff; border-radius: 8px; padding: 24px; border-left: 4px solid #3b82f6;">
|
|
|
+ <h3 style="color: #1e40af; font-size: 16px; font-weight: 600; margin: 0 0 12px 0;">Acciones Requeridas</h3>
|
|
|
+ <p style="color: #374151; font-size: 14px; line-height: 1.5; margin: 0;">
|
|
|
+ 1. <strong>Verificar</strong> la conexión de red de la impresora<br>
|
|
|
+ 2. <strong>Contactar</strong> al restaurante para confirmar el estado<br>
|
|
|
+ 3. <strong>Reiniciar</strong> el servicio de impresión si es necesario<br>
|
|
|
+ 4. <strong>Monitorear</strong> la reconexión y funcionalidad<br>
|
|
|
+ 5. <strong>Documentar</strong> la resolución en el sistema
|
|
|
+ </p>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ </table>
|
|
|
+
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+
|
|
|
+ <!-- Footer -->
|
|
|
+ <tr>
|
|
|
+ <td style="background-color: #f9fafb; padding: 24px 32px; text-align: center; border-top: 1px solid #e5e7eb;">
|
|
|
+ <p style="color: #6b7280; font-size: 14px; margin: 0; line-height: 1.5;">
|
|
|
+ <strong>Express Klein - Sistema de Monitoreo</strong><br>
|
|
|
+ Alerta automática generada el {timestamp}<br>
|
|
|
+ Este es un email automático del sistema de monitoreo.<br>
|
|
|
+ © 2025 Express Klein. Todos los derechos reservados.
|
|
|
+ </p>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+
|
|
|
+ </table>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ </table>
|
|
|
+</body>
|
|
|
+</html>
|
|
|
"""
|
|
|
+}
|
|
|
+
|
|
|
+PIN_RECOVERTY_MAIL = {
|
|
|
+ "subject": "Recuperación de PIN | Pedidos Express",
|
|
|
+ "body": """
|
|
|
+ <!DOCTYPE html>
|
|
|
+<html>
|
|
|
+<head>
|
|
|
+ <meta charset="UTF-8">
|
|
|
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
|
+ <title>Recupera tu PIN </title>
|
|
|
+</head>
|
|
|
+<body style="margin: 0; padding: 0; font-family: Arial, sans-serif; background-color: #f3f4f6;">
|
|
|
+ <table width="100%" cellpadding="0" cellspacing="0" style="background-color: #f3f4f6; padding: 20px;">
|
|
|
+ <tr>
|
|
|
+ <td align="center">
|
|
|
+ <table width="600" cellpadding="0" cellspacing="0" style="max-width: 600px; background-color: #ffffff; border-radius: 12px; overflow: hidden; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);">
|
|
|
+
|
|
|
+ <!-- Header -->
|
|
|
+ <tr>
|
|
|
+ <td style="background-color: #101419; color: white; padding: 32px; text-align: center;">
|
|
|
+ <h1 style="margin: 0; font-size: 28px; font-weight: bold;">¡Hola {name}!</h1>
|
|
|
+ <p style="margin: 8px 0 0 0; font-size: 16px; opacity: 0.9;">Recuperación de PIN</p>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+
|
|
|
+ <!-- Content -->
|
|
|
+ <tr>
|
|
|
+ <td style="padding: 32px;">
|
|
|
+
|
|
|
+ <!-- Welcome Message -->
|
|
|
+ <table width="100%" cellpadding="0" cellspacing="0">
|
|
|
+ <tr>
|
|
|
+ <td style="text-align: center; margin-bottom: 32px;">
|
|
|
+ <h2 style="color: #101419; font-size: 24px; margin: 0 0 12px 0; font-weight: bold;">¿Olvidaste tu PIN?</h2>
|
|
|
+ <p style="color: #6b7280; font-size: 16px; line-height: 1.6; margin: 0;">No te preocupes, puedes crear un nuevo PIN de acceso a {app_name}.</p>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ </table>
|
|
|
+
|
|
|
+ <!-- Security Info -->
|
|
|
+ <table width="100%" cellpadding="0" cellspacing="0" style="margin: 24px 0;">
|
|
|
+ <tr>
|
|
|
+ <td style="background-color: #f9fafb; border-radius: 8px; padding: 24px;">
|
|
|
+ <h3 style="color: #101419; font-size: 18px; font-weight: 600; margin: 0 0 16px 0; text-align: center;">Información Importante</h3>
|
|
|
+ <ul style="list-style: none; padding: 0; margin: 0;">
|
|
|
+ <li style="color: #374151; font-size: 14px; line-height: 1.5; margin-bottom: 8px; padding-left: 20px; position: relative;">
|
|
|
+ <span style="color: #10b981; font-weight: bold; position: absolute; left: 0;">✓</span>
|
|
|
+ Este enlace es válido por 24 horas
|
|
|
+ </li>
|
|
|
+ <li style="color: #374151; font-size: 14px; line-height: 1.5; margin-bottom: 8px; padding-left: 20px; position: relative;">
|
|
|
+ <span style="color: #10b981; font-weight: bold; position: absolute; left: 0;">✓</span>
|
|
|
+ Podrás elegir tu nuevo PIN
|
|
|
+ </li>
|
|
|
+ <li style="color: #374151; font-size: 14px; line-height: 1.5; margin-bottom: 8px; padding-left: 20px; position: relative;">
|
|
|
+ <span style="color: #10b981; font-weight: bold; position: absolute; left: 0;">✓</span>
|
|
|
+ Si no solicitaste este cambio, ignora este correo
|
|
|
+ </li>
|
|
|
+ </ul>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ </table>
|
|
|
+
|
|
|
+ <!-- Reset PIN Section -->
|
|
|
+ <table width="100%" cellpadding="0" cellspacing="0">
|
|
|
+ <tr>
|
|
|
+ <td style="background: linear-gradient(135deg, #101419 0%, #37404a 100%); border-radius: 12px; padding: 32px; text-align: center; margin: 32px 0; color: white;">
|
|
|
+ <p style="font-size: 18px; margin: 0 0 16px 0; opacity: 0.95;">Haz clic en el botón para crear tu nuevo PIN</p>
|
|
|
+ <div style="font-size: 24px; font-weight: bold; margin: 16px 0; border: 3px solid white; border-radius: 8px; padding: 16px; display: inline-block; min-width: 200px; background-color: rgba(255,255,255,0.1);">
|
|
|
+ 🔐 Restablecer PIN
|
|
|
+ </div>
|
|
|
+ <p style="font-size: 16px; margin: 16px 0 0 0; opacity: 0.9;">Podrás elegir un nuevo PIN de tu preferencia</p>
|
|
|
+ <table width="100%" cellpadding="0" cellspacing="0" style="margin-top: 20px;">
|
|
|
+ <tr>
|
|
|
+ <td align="center">
|
|
|
+ <a href="{reset_pin_url}" style="background-color: white; color: #101419; padding: 16px 32px; border-radius: 8px; text-decoration: none; font-weight: 600; font-size: 16px; display: inline-block;">
|
|
|
+ Crear Nuevo PIN
|
|
|
+ </a>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ </table>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ </table>
|
|
|
+
|
|
|
+ <!-- Next Steps -->
|
|
|
+ <table width="100%" cellpadding="0" cellspacing="0" style="margin: 32px 0;">
|
|
|
+ <tr>
|
|
|
+ <td style="background-color: #f0f9ff; border-radius: 8px; padding: 24px; border-left: 4px solid #3b82f6;">
|
|
|
+ <h3 style="color: #101419; font-size: 16px; font-weight: 600; margin: 0 0 12px 0;">¿Qué sigue?</h3>
|
|
|
+ <p style="color: #374151; font-size: 14px; line-height: 1.5; margin: 0;">
|
|
|
+ 1. Haz clic en "Crear Nuevo PIN"<br>
|
|
|
+ 2. Elige un PIN fácil de recordar pero seguro<br>
|
|
|
+ 3. Ingresa a {app_name} con tu nuevo PIN<br>
|
|
|
+ 4. ¡Disfruta de todos nuestros beneficios!
|
|
|
+ </p>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ </table>
|
|
|
+
|
|
|
+ <!-- Website Section -->
|
|
|
+ <table width="100%" cellpadding="0" cellspacing="0">
|
|
|
+ <tr>
|
|
|
+ <td style="text-align: center; margin: 32px 0; padding: 24px; background-color: #f9fafb; border-radius: 8px;">
|
|
|
+ <p style="color: #6b7280; margin: 0 0 12px 0;">Visita nuestra plataforma:</p>
|
|
|
+ <a href="https://www.expressklein.com" style="color: #101419; font-size: 20px; font-weight: 600; text-decoration: none; border-bottom: 2px solid #101419; padding-bottom: 4px;">
|
|
|
+ www.expressklein.com
|
|
|
+ </a>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ </table>
|
|
|
+
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+
|
|
|
+ <!-- Footer -->
|
|
|
+ <tr>
|
|
|
+ <td style="background-color: #f9fafb; padding: 24px 32px; text-align: center; border-top: 1px solid #e5e7eb;">
|
|
|
+ <p style="color: #6b7280; font-size: 14px; margin: 0; line-height: 1.5;">
|
|
|
+ <strong>Express Klein</strong> - Tu aplicación de pedidos favorita<br>
|
|
|
+ Este enlace de restablecimiento expira en 24 horas.<br>
|
|
|
+ Si no solicitaste este cambio, puedes ignorar este correo.<br>
|
|
|
+ © 2025 Express Klein. Todos los derechos reservados.
|
|
|
+ </p>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+
|
|
|
+ </table>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ </table>
|
|
|
+</body>
|
|
|
+</html>
|
|
|
+ """
|
|
|
}
|