# .env.example # Evolution API (requerido) EVOLUTION_API_URL="https://example-url.com" EVOLUTION_API_KEY="example-api-key" EVOLUTION_API_INSTANCE="example-instance" # WhatsApp (requerido) WHATSAPP_COMMUNITY_ID="example-community-id@g.us" # Comunidad principal para sincronizar grupos CHATBOT_PHONE_NUMBER="1234567890" # Número normalizado del bot; evita auto-respuestas # Webhook de este servicio (requerido) WEBHOOK_URL="http://your-service-internal-url:3007" # URL (idealmente interna) a la que Evolution API enviará webhooks PORT=3007 # Entorno NODE_ENV="production" # production | development | test TZ="Europe/Madrid" # Zona horaria usada para "hoy/mañana" y render de fechas WEB_BASE_URL="https://taskbot.server.brobert.net" # Host público de la web (p.ej. https://wtask.org en producción) # DB_PATH="./data/tasks.db" # Si se define, ignora DATA_DIR y usa esta ruta exacta ONBOARDING_FALLBACK_MIN_DIGITS=8 # A2: longitud mínima para conservar números en menciones/tokens; por defecto 8 # Onboarding A3 (prompts únicos por grupo) # Habilita/deshabilita la publicación (por defecto true fuera de test) # ONBOARDING_PROMPTS_ENABLED=true # Permite publicación durante tests específicos # ONBOARDING_ENABLE_IN_TEST=false # # Onboarding A4 (DM JIT y palabra clave) # Palabra clave de alta por DM: activar # En tests, los prompts JIT (A4) y los mensajes al grupo (A3) solo se envían si ONBOARDING_ENABLE_IN_TEST=true # Umbral de cobertura (publica si coverage < threshold). Por defecto 1.0 # ONBOARDING_COVERAGE_THRESHOLD=1 # Periodo de gracia tras la última verificación de miembros (segundos). Por defecto 90 # ONBOARDING_GRACE_SECONDS=90 # Cooldown entre publicaciones (días). Por defecto 7 # ONBOARDING_COOLDOWN_DAYS=7 # Sincronización de grupos (opcional) # Intervalo en milisegundos; por defecto 86400000 (24h). En desarrollo puede bajarse (mínimo recomendable 10000ms). # GROUP_SYNC_INTERVAL_MS=86400000 # Membresías (opcional) # Edad máxima (ms) para considerar "fresca" la snapshot de miembros de un grupo. Por defecto 86400000 (24h). # MAX_MEMBERS_SNAPSHOT_AGE_MS=86400000 # Si "true", se aplica validación estricta de membresía (solo con snapshot fresca). Por defecto false. # GROUP_MEMBERS_ENFORCE=false # Si "true", los recordatorios incluirán una sección de "sin responsable" filtrada por tus grupos con membresía activa (snapshot fresca). Por defecto false. # REMINDERS_INCLUDE_UNASSIGNED_FROM_MEMBERSHIP=false # Notificaciones (opcional) # Si se pone a "true", el bot enviará un breve resumen al grupo al crear una tarea (por defecto false). # NOTIFY_GROUP_ON_CREATE=false # Rate limiting por usuario (opcional; desactivado en tests) # Número de comandos por minuto por usuario (refill rate). Por defecto 15. # RATE_LIMIT_PER_MIN=15 # Capacidad del bucket (por defecto igual a RATE_LIMIT_PER_MIN). # RATE_LIMIT_BURST=15 # Cola de respuestas (opcional — avanzado) # Intentos máximos antes de marcar como failed (por defecto 6). # RQ_MAX_ATTEMPTS=6 # Backoff base en milisegundos para reintentos (por defecto 5000). # RQ_BASE_BACKOFF_MS=5000 # Backoff máximo en milisegundos (por defecto 3600000 = 1h). # RQ_MAX_BACKOFF_MS=3600000 # Limpieza y mantenimiento de la cola (opcional — avanzado) # Habilitar/deshabilitar limpieza automática (por defecto true). # RQ_CLEANUP_ENABLED=true # Días de retención para enviados (por defecto 14). # RQ_RETENTION_DAYS_SENT=14 # Días de retención para fallidos (por defecto 30). # RQ_RETENTION_DAYS_FAILED=30 # Intervalo del scheduler de limpieza en ms (por defecto 86400000 = 24h). # RQ_CLEANUP_INTERVAL_MS=86400000 # Tamaño de lote para borrar elementos en limpieza (por defecto 1000). # RQ_CLEANUP_BATCH=1000 # Ejecutar PRAGMA optimize tras limpieza (por defecto true). # RQ_OPTIMIZE_ENABLED=true # Ejecutar VACUUM cada N ejecuciones de limpieza (por defecto desactivado). # RQ_VACUUM_ENABLED=false # Frecuencia de VACUUM (solo si está habilitado). # RQ_VACUUM_EVERY_N_RUNS=28 # Métricas (opcional) # METRICS_ENABLED=true # METRICS_FORMAT=prom # prom|json # Migrador (opcional) # MIGRATIONS_LOG_LEVEL="silent" # Silencia logs del migrador (en test ya se silencian automáticamente) # Control de acceso por grupos (multicomunidad) # Modo: off|discover|enforce (por defecto off) # GROUP_GATING_MODE=discover # Lista de administradores (IDs/JIDs; se normalizan a dígitos) # ADMIN_USERS="34600123456, 5554443333" # Lista de grupos permitidos inicial (JIDs @g.us) # ALLOWED_GROUPS="12345-67890@g.us, 11111-22222@g.us" # Notificar a ADMIN_USERS cuando se descubra un grupo en modo discover # NOTIFY_ADMINS_ON_DISCOVERY=true