Динамический коллтрекинг

Пул из нескольких DID-ов, ротируется между посетителями. Стандартный режим.

Стратегия выбора DID

На каждый запрос посетителя сервер пробует следующие фильтры по порядку (FOR UPDATE SKIP LOCKED):

  1. Static (если включён static_mode) → первый DID пула.
  2. Sticky (если включён sticky_enabled + есть pin для uid_view) → тот же DID что и в прошлый визит.
  3. Per-UTM (если у посетителя utm_cmp = calltr_utm_campaign на DID) → точное совпадение.
  4. A/B (если в пуле есть DID с calltr_ab_variant) → hash(uid_view) % count выбирает вариант.
  5. Перебор стратегий: city+utm_group → region+utm_group → utm_group → city+any → region+any → any.
  6. В каждой стратегии — LRU (наиболее давно не использованный DID).
  7. Fallback 1 — reserve_number источника.
  8. Fallback 2 — capacity guard: первый DID тенанта.

Освобождение DID

DID помечен busy на default_timeout минут (по умолчанию 10). По истечении возвращается в available. Чужие просроченные брони чистятся при каждом запросе.