-
Notifications
You must be signed in to change notification settings - Fork 2
Rules User
Динамические правила позволяют настраивать условия выдачи рекомендаций клиентам без изменения кода.
Они проверяют поведение клиентов и определяют, какие банковские продукты могут быть им полезны.
- Система анализирует транзакции клиентов.
- Если все условия выполняются, клиент получает рекомендацию.
- Администраторы могут создавать, удалять и изменять правила через API.
Правила поддерживают четыре типа проверок:
| Тип запроса | Что проверяет? | Пример настройки |
|---|---|---|
| USER_OF | Клиент использует продукт указанного типа. |
"arguments": ["CREDIT"], "negate": true (Не должен иметь кредиты) |
| ACTIVE_USER_OF | Клиент совершил 5+ транзакций по продукту. |
"arguments": ["DEBIT"] (Активно пользуется дебетовой картой) |
| TRANSACTION_SUM_COMPARE | Сравнивает сумму транзакций с заданным числом. |
"arguments": ["DEBIT", "DEPOSIT", ">", "100000"] (Пополнил счет на 100 000 ₽) |
| TRANSACTION_SUM_COMPARE_DEPOSIT_WITHDRAW | Сравнивает доходы и расходы. |
"arguments": ["DEBIT", ">"] (Доходы превышают расходы) |
Все условия объединяются логическим "И", то есть если хотя бы одно не выполнено, рекомендация не выдается.
- Отправить POST-запрос на сервер.
- Указать название продукта, его ID и список условий.
Пример запроса для "Простого кредита":
POST /rule
{
"product_name": "Простой кредит",
"product_id": "ab138afb-f3ba-4a93-b74f-0fcee86d447f",
"product_text": "Откройте мир выгодных кредитов с нами!",
"rule": [
{
"query": "USER_OF",
"arguments": ["CREDIT"],
"negate": true
},
{
"query": "TRANSACTION_SUM_COMPARE_DEPOSIT_WITHDRAW",
"arguments": ["DEBIT", ">"],
"negate": false
},
{
"query": "TRANSACTION_SUM_COMPARE",
"arguments": ["DEBIT", "DEPOSIT", ">", "100000"],
"negate": false
}
]
}- Клиент не должен иметь кредиты.
- Клиент должен пополнять дебетовый счет больше, чем тратит.
- Клиент должен внести более 100 000 ₽.
Если все условия выполняются, система рекомендует клиенту кредитный продукт.
Если продукт больше не должен рекомендоваться, можно удалить правило:
DELETE /rule/<rule_id>Замените <rule_id> на ID правила, которое нужно удалить.
Чтобы получить список всех правил, выполните:
GET /ruleПример ответа:
{
"data": [
{
"id": "12345",
"product_name": "Простой кредит",
"product_id": "ab138afb-f3ba-4a93-b74f-0fcee86d447f",
"product_text": "Откройте мир выгодных кредитов с нами!",
"rule": [
{
"query": "USER_OF",
"arguments": ["CREDIT"],
"negate": true
},
{
"query": "TRANSACTION_SUM_COMPARE_DEPOSIT_WITHDRAW",
"arguments": ["DEBIT", ">"],
"negate": false
},
{
"query": "TRANSACTION_SUM_COMPARE",
"arguments": ["DEBIT", "DEPOSIT", ">", "100000"],
"negate": false
}
]
}
]
}Система записывает, сколько раз каждое правило было использовано.
Запрос:
GET /rule/statsПример ответа:
{
"stats": [
{
"rule_id": "12345",
"count": "150"
},
{
"rule_id": "67890",
"count": "45"
}
]
}- Если
count: 150, значит 150 пользователей получили эту рекомендацию. - Если
count: 0, значит никто не соответствует условиям.
Если изменения не применяются сразу, можно очистить кеш:
POST /management/clear-cachesПосле этого система заново пересчитает рекомендации.