CRM и Модуль Лидогенерации
CRM и Модуль Лидогенерации
Модуль интеграции с CRM (app/services/crm.py и app/services/crm_providers/) предназначен для автоматического экспорта контактов, ответов на лид-формы и саммари диалогов во внешние отделы продаж.
sequenceDiagram
autonumber
actor User as Пользователь (WebChat / TG)
participant Form as Лид-Форма / Диалог
participant Service as CRM Exporter (export_user_to_crm)
participant LLM as LLM Summarizer (_build_chat_summary)
participant Factory as CRM Provider Factory
participant CRM as AmoCRM / Bitrix24 / Custom Webhook
User->>Form: Заполнение контактов (Имя, Телефон, Email)
Form->>Form: Проверка согласия (user.crm_consent_granted)
alt Согласие Получено (crm_consent_granted = True)
Service->>LLM: Формирование саммари диалога (_build_chat_summary)
LLM-->>Service: Выжимка потребностей клиента
Service->>Factory: get_crm_provider(crm_config)
Factory->>CRM: Отправка CrmLeadPayload (Имя, Телефон, Email, CustomVars, Summary)
CRM-->>Service: Успешное создание сделки/контакта (200 OK)
else Согласие Не Предоставлено
Service->>Service: Запись события аудита (crm.export_refused_no_consent)
Note over Service: Экспорт отменяется (Fail-Safe Consent Gate)
end
Поддерживаемые Провайдеры CRM
| Провайдер | Класс | Способ Интеграции | Передаваемые Данные |
|---|---|---|---|
| AmoCRM | AmoCrmProvider |
OAuth API v4 / Lead Pipelines | Сделка, Контакт, Примечание с саммари диалога, Пользовательские поля |
| Bitrix24 | Bitrix24Provider |
REST API Webhook (crm.lead.add) |
Лид, Телефон, Email, Описание задачи |
| Custom Webhook | WebhookCrmProvider |
POST JSON Webhook | Полный payload CrmLeadPayload с HMAC-подписью |
Структура Передаваемых Данных (CrmLeadPayload)
class CrmLeadPayload(BaseModel):
name: str | None
phone: str | None
email: str | None
chat_summary: str | None
metric_score: int | None
referral_code: str | None
custom_vars: dict[str, Any] | None
Безопасность и Аудит
- Шифрование Ключей (
CrmConfig.api_key): API-ключи и вебхуки CRM хранятся в БД зашифрованными методом Fernet (EncryptedString). - Маскирование в Админ-Панели: В интерфейсе настройки CRM ключи скрыты маской
SECRET_MASK(******). - Журнал Аудита: Каждая попытка отправки или отказ из-за отсутствия согласия фиксируются в аудит-логе (
log_audit_event).