╔════════════════════════════════════════════════════════════════════════════╗ ║ WABI v1.0.0 - ARQUITECTURA Y ESTRUCTURA DE PROYECTO ║ ╚════════════════════════════════════════════════════════════════════════════╝ 📁 ESTRUCTURA DE CARPETAS ═════════════════════════ Wabi/ ├── 📄 main.py ← PUNTO DE ENTRADA (ejecutar esto) ├── 📄 requirements.txt ← Dependencias Python ├── 📄 README.md ← Documentación completa ├── 📄 INSTALL.txt ← Guía de instalación paso a paso ├── 🔨 ejecutar.bat ← Script Windows para ejecutar fácil ├── 📄 generar_ejemplo.py ← Script para crear Excel de ejemplo ├── 📄 history.csv ← Historial de envíos (se genera automático) │ ├── 📁 config/ ← CONFIGURACIÓN GLOBAL │ ├── __init__.py │ └── settings.py ← Colores, fonts, paths, rutas, delays │ ├── 📁 src/ ← CÓDIGO PRINCIPAL │ ├── __init__.py │ │ │ ├── gui/ ← INTERFAZ GRÁFICA (CustomTkinter) │ │ ├── __init__.py │ │ ├── app.py ← Ventana principal y lógica UI │ │ └── styles.py ← Componentes y estilos personalizados │ │ │ ├── automation/ ← AUTOMATIZACIÓN (Selenium + Chrome) │ │ ├── __init__.py │ │ └── whatsapp_bot.py ← Driver de Chrome, envío de mensajes │ │ │ ├── data/ ← MANEJO DE DATOS │ │ ├── __init__.py │ │ ├── excel_handler.py ← Lectura/validación de Excel │ │ └── history_manager.py ← Gestión de historial CSV │ │ │ └── utils/ ← UTILIDADES │ ├── __init__.py │ ├── spintax.py ← Procesador de variaciones {opción1|opción2} │ └── logger.py ← Sistema de logging personalizado │ ├── 📁 data/ ← DATOS Y EXPORTACIONES │ ├── exports/ ← Reportes exportados (CSV) │ ├── user_data/ ← Sesión persistente de Chrome (auto-generado) │ └── logs/ ← Archivos .log de la aplicación (auto-generado) │ └── 📁 assets/ ← RECURSOS (iconos, imágenes) └── icons/ 🔄 FLUJO DE DATOS ═════════════════ 1. USUARIO CARGA EXCEL Excel (.xlsx) → ExcelHandler.load_excel() ↓ DataFrame con contactos validados ↓ Se almacena en self.excel_data 2. USUARIO CONFIGURA MENSAJE Texto con Spintax/Variables → SpintaxProcessor.validate_spintax() ↓ Valida sintaxis: {opción1|opción2}, {Variable} ↓ Se almacena en self.text_message 3. USUARIO INICIA CAMPAÑA Para cada fila del Excel: a) Obtener teléfono y nombre b) Saltear si ya fue enviado (history.csv) c) Procesar Spintax + Variables con SpintaxProcessor.process() d) Enviar con WhatsAppAutomator.send_message() e) Registrar en HistoryManager.add_record() f) Aplicar delay aleatorio (5-10s) 4. USUARIO EXPORTA REPORTE history.csv → HistoryManager.export_report() ↓ CSV en carpeta exports/ ↓ Timestamp en nombre: wabi_report_20240505_143022.csv 🎨 COMPONENTES PRINCIPALES ═══════════════════════════ ┌─ GUI (CustomTkinter) │ ├─ WabiApp (CTk) → Ventana principal │ ├─ StyledButton → Botones con tema Wabi │ ├─ StyledFrame → Frames con esquinas redondeadas │ ├─ StyledLabel → Labels con tipografía consistente │ └─ WabiTheme → Gestor del tema visual │ ├─ AUTOMATION (Selenium) │ ├─ WhatsAppAutomator → Control de Chrome + WhatsApp Web │ ├─ initialize_driver() → Inicia undetected-chromedriver │ ├─ navigate_to_whatsapp() → Abre web.whatsapp.com │ ├─ send_message() → Envía mensaje a teléfono │ ├─ random_delay() → Delay entre 5-10s │ └─ _attach_file() → Adjunta imagen/PDF │ ├─ DATA HANDLING │ ├─ ExcelHandler → Lee y valida Excel │ ├─ HistoryManager → Gestiona history.csv │ ├─ load_excel() → Importa contactos │ └─ add_record() → Registra envío en historial │ └─ UTILS ├─ SpintaxProcessor → Procesa variaciones │ ├─ process() → Expande Spintax + Variables │ ├─ _expand_spintax() → {opt1|opt2} → opt1 o opt2 aleatoriamente │ ├─ _replace_variables() → {Nombre} → valor real │ └─ validate_spintax() → Verifica sintaxis │ └─ LoggerWabi → Logging personalizado ├─ add_callback() → Actualiza consola en tiempo real ├─ log() → Registra mensaje └─ success/error/info() → Métodos de conveniencia ⚙️ CONFIGURACIÓN (config/settings.py) ═════════════════════════════════════ COLORS = { "accent": "#25D366", # Verde WhatsApp (principal) "error": "#E74C3C", # Rojo para errores "success": "#27AE60", # Verde para éxitos "bg_primary": "#FFFFFF", # Blanco "text_primary": "#000000", # Negro } FONTS = { "title": ("Segoe UI", 18, "bold"), # Títulos grandes "body": ("Segoe UI", 10), # Texto normal "mono": ("Courier New", 9), # Logs (monoespaciado) } DELAYS = { "MIN_DELAY": 5, # Mínimo entre envíos (segundos) "MAX_DELAY": 10, # Máximo entre envíos (segundos) } CHROME_OPTIONS = { # Opciones anti-detección "disable-background-networking": None, "disable-sync": None, "no-default-browser-check": None, ... } 📊 ARCHIVOS GENERADOS AUTOMÁTICAMENTE ═════════════════════════════════════ history.csv (Ejemplo): ┌────────────────┬──────────────┬────────────┬────────┬────────┬────────┐ │ Telefono │ Nombre │ Fecha │ Hora │ Estado │ Intento│ ├────────────────┼──────────────┼────────────┼────────┼────────┼────────┤ │ +34123456789 │ Juan García │ 2024-05-05 │ 14:30 │ Éxito │ 1 │ │ +34987654321 │ María López │ 2024-05-05 │ 14:31 │ Error │ 1 │ └────────────────┴──────────────┴────────────┴────────┴────────┴────────┘ logs/ (Archivos de log): wabi_20240505_143000.log ├─ 14:30:00 - INFO - Inicializando Chrome... ├─ 14:30:05 - INFO - Navegando a WhatsApp Web... ├─ 14:30:10 - SUCCESS - QR code visible ├─ 14:31:00 - INFO - Enviando a Juan García... └─ 14:31:08 - SUCCESS - Mensaje enviado a +34123456789 data/user_data/ (Sesión persistente): Profile/ (Datos de Chrome + sesión WhatsApp guardada) └─ Permite acceder directo sin QR en próximas ocasiones 🛡️ MANEJO DE ERRORES ═════════════════════ Try-except en: ├─ ExcelHandler.load_excel() → Validar archivo existe y tiene datos ├─ HistoryManager operaciones → Manejo de archivos CSV ├─ WhatsAppAutomator → Timeouts, elementos no encontrados ├─ SpintaxProcessor → Sintaxis malformada └─ Logger callbacks → Excepciones en UI updates 🔐 SEGURIDAD ════════════ 1. NO almacena contraseñas (usa sesión persistente de Chrome) 2. undetected-chromedriver previene detección de bots 3. Datos locales en PC, no en servidores 4. Delays aleatorios evitan patrones detectables 5. Headers de Chrome se preservan entre sesiones 🚀 PRÓXIMAS MEJORAS (Opcionales) ═════════════════════════════════ [ ] Base de datos SQLite en lugar de CSV [ ] Encriptación de history.csv [ ] Interfaz más avanzada con gráficos [ ] Soporte para cuentas múltiples de WhatsApp [ ] Programación automática de campañas [ ] Integración con APIs externas [ ] Versión web (FastAPI + React) ╔════════════════════════════════════════════════════════════════════════════╗ ║ ¡ARQUITECTURA LISTA PARA PRODUCCIÓN! ║ ╚════════════════════════════════════════════════════════════════════════════╝