Skip to content

Latest commit

 

History

History
126 lines (104 loc) · 6.25 KB

File metadata and controls

126 lines (104 loc) · 6.25 KB

Конфигурация рассылок (Campaigns)

Управляется через переменные окружения. Значения по умолчанию указаны в скобках.

  • Производительность и батчи

    • CAMPAIGN_CONCURRENCY — параллелизм воркера очереди (5)
    • CAMPAIGN_MESSAGE_RATE — лимит сообщений в секунду, вводит задержку между письмами (10)
    • CAMPAIGN_BATCH_SIZE — размер батча получателей для поэтапной отправки (100)
  • Ретраи, задержки, бэкофф

    • CAMPAIGN_ATTEMPTS — количество попыток задачи очереди (5)
    • CAMPAIGN_DELAY_MS — дефолтная задержка задачи, мс (0)
    • CAMPAIGN_BACKOFF_TYPE — тип бэкоффа: fixed | exponential (exponential)
    • CAMPAIGN_BACKOFF_MS — задержка бэкоффа, мс (5000)
  • Очистка задач очереди

    • CAMPAIGN_REMOVE_ON_COMPLETE — сколько завершенных задач хранить (1000)
    • CAMPAIGN_REMOVE_ON_FAIL — удалять ли упавшие задачи (false)

Применение:

  • defaultJobOptions очереди campaigns берут attempts, backoff, delay, removeOnComplete, removeOnFail из env.
  • В CampaignSenderProcessor применяется CAMPAIGN_BATCH_SIZE и CAMPAIGN_MESSAGE_RATE (пауза между письмами), отправка идет батчами.

Пример .env

# Производительность/батчи
CAMPAIGN_CONCURRENCY=10
CAMPAIGN_MESSAGE_RATE=10
CAMPAIGN_BATCH_SIZE=100

# Ретраи/бэкофф/задержки
CAMPAIGN_ATTEMPTS=5
CAMPAIGN_DELAY_MS=0
CAMPAIGN_BACKOFF_TYPE=exponential
CAMPAIGN_BACKOFF_MS=5000

# Очистка очереди
CAMPAIGN_REMOVE_ON_COMPLETE=1000
CAMPAIGN_REMOVE_ON_FAIL=false

Engagement (очки вовлеченности)

  • Веса событий:

    • ENGAGEMENT_WEIGHT_SENT — за отправленное письмо (+1)
    • ENGAGEMENT_WEIGHT_OPEN — за первое открытие (+5)
    • ENGAGEMENT_WEIGHT_CLICK — за первый клик (+10)
    • ENGAGEMENT_WEIGHT_HARD_FAIL — за hard-fail (-30)
    • ENGAGEMENT_WEIGHT_SOFT_FAIL — за soft-fail (0)
    • ENGAGEMENT_WEIGHT_UNSUB — при отписке (-50)
    • ENGAGEMENT_UNSUB_RESET — при отписке сбрасывать счетчик в 0 (true). Если false — применяется штраф ENGAGEMENT_WEIGHT_UNSUB.
  • Периодический decay (плавное уменьшение):

    • ENGAGEMENT_DECAY_ENABLED — включить ночной decay (true)
    • ENGAGEMENT_DECAY_CRON — CRON расписание ("0 3 * * *" — ежедневно в 03:00)
    • ENGAGEMENT_DECAY_PERCENT — процент снижения от текущего |score| (5)
    • ENGAGEMENT_DECAY_MIN_SCORE — нижняя граница (0)
    • ENGAGEMENT_DECAY_MAX_DELTA — потолок снижения за один прогон (50)
    • ENGAGEMENT_DECAY_ACTIVE_ONLY — применять только к ACTIVE контактам (true)
    • ENGAGEMENT_DECAY_BATCH_SIZE — размер батча обновлений (5000)

Очередь engagement-decay создает повторяющуюся задачу по CRON и снижает engagementScore батчево, не затрагивая удаленные контакты. Время — по TZ (по умолчанию UTC).

Пример .env (Engagement)

ENGAGEMENT_WEIGHT_SENT=1
ENGAGEMENT_WEIGHT_OPEN=5
ENGAGEMENT_WEIGHT_CLICK=10
ENGAGEMENT_WEIGHT_HARD_FAIL=-30
ENGAGEMENT_WEIGHT_SOFT_FAIL=0
ENGAGEMENT_WEIGHT_UNSUB=-50
ENGAGEMENT_UNSUB_RESET=true

ENGAGEMENT_DECAY_ENABLED=true
ENGAGEMENT_DECAY_CRON=0 3 * * *
ENGAGEMENT_DECAY_PERCENT=5
ENGAGEMENT_DECAY_MIN_SCORE=0
ENGAGEMENT_DECAY_MAX_DELTA=50
ENGAGEMENT_DECAY_ACTIVE_ONLY=true
ENGAGEMENT_DECAY_BATCH_SIZE=5000

Tracking HMAC (клики/отписка)

  • Переменные окружения:
    • TRACKING_HMAC_ENABLED — включить проверку подписи (false)
    • TRACKING_HMAC_SECRET — секрет для HMAC (обязательно при включении)
    • TRACKING_HMAC_PARAM — имя параметра подписи (s)
    • TRACKING_HMAC_ALGO — алгоритм sha256 | sha512 (sha256)
  • Генерация подписи:
    • Клики: HMAC(algo, secret, ${logId}:${url})s
    • Отписка: HMAC(algo, secret, ${logId}:unsubscribe)s
  • В шаблонах поддерживается плейсхолдер {{unsubscribe_url}} — подставляется публичная ссылка /api/v1/track/u?... с подписью при включенном HMAC.

Пример .env (HMAC)

TRACKING_HMAC_ENABLED=true
TRACKING_HMAC_SECRET=supersecret
TRACKING_HMAC_PARAM=s
TRACKING_HMAC_ALGO=sha256

SMTP fine-tuning (диагностика и устойчивость)

  • Переменные окружения:
    • CAMPAIGN_SMTP_CONNECTION_TIMEOUT_MS — таймаут соединения (мс)
    • CAMPAIGN_SMTP_GREETING_TIMEOUT_MS — таймаут приветствия (мс)
    • CAMPAIGN_SMTP_SOCKET_TIMEOUT_MS — таймаут сокета (мс)
    • CAMPAIGN_SMTP_TLS_REJECT_UNAUTHORIZED — проверка TLS-сертификата (true)
    • CAMPAIGN_SMTP_TLS_MIN_VERSION — мин. версия TLS (например, TLSv1.2)
    • CAMPAIGN_SMTP_TLS_CIPHERS — список шифров (опционально)
    • CAMPAIGN_SMTP_DEBUG — подробные логи nodemailer (false)
  • Ошибки отправки классифицируются как [SOFT]/[HARD] в EmailLog.errorMessage для ускоренной диагностики.

Пример .env (SMTP)

CAMPAIGN_SMTP_CONNECTION_TIMEOUT_MS=15000
CAMPAIGN_SMTP_GREETING_TIMEOUT_MS=10000
CAMPAIGN_SMTP_SOCKET_TIMEOUT_MS=20000
CAMPAIGN_SMTP_TLS_REJECT_UNAUTHORIZED=true
CAMPAIGN_SMTP_TLS_MIN_VERSION=TLSv1.2
CAMPAIGN_SMTP_TLS_CIPHERS=ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256
CAMPAIGN_SMTP_DEBUG=false