Skip to content

xdetre/mini_crm_project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Mini CRM — распределение лидов по операторам

Запуск проекта

python -m uvicorn app.main:app --reload

️Модель данных (кратко)

Operator

  • активен ли оператор (active)
  • максимальная нагрузка (load_limit)
  • связи: имеет много contacts и много весов (OperatorSourceWeight)

Lead

  • идентификатор лида (external_id)
  • один лид может иметь несколько contacts

Source

  • источник обращения (бот)
  • для каждого источника настраиваются веса операторов

OperatorSourceWeight

  • связь между оператором и источником
  • поле weight определяет долю распределения трафика

Contact

  • факт обращения
  • содержит lead_id, source_id, operator_id (может быть null, если нет подходящего оператора)

Алгоритм распределения

1. Определение лида

По external_id ищется существующий лид.
Если не найден — создаётся новый.
Это позволяет связать все обращения одного клиента.

2. Фильтрация доступных операторов

Выбираются операторы, у которых:

  • active = true
  • текущая нагрузка (число обращений) < load_limit

3. Учёт весов

Из подходящих операторов выбирается один:

random.choices(operators, weights)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages