Skip to content

Rules User

Roman Kuzmin edited this page Feb 17, 2025 · 2 revisions

Инструкция по программированию динамических правил в StarBank

Что такое динамические правила?

Динамические правила позволяют настраивать условия выдачи рекомендаций клиентам без изменения кода.
Они проверяют поведение клиентов и определяют, какие банковские продукты могут быть им полезны.

Как работают правила?

  1. Система анализирует транзакции клиентов.
  2. Если все условия выполняются, клиент получает рекомендацию.
  3. Администраторы могут создавать, удалять и изменять правила через 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", ">"] (Доходы превышают расходы)

Все условия объединяются логическим "И", то есть если хотя бы одно не выполнено, рекомендация не выдается.


Как создать новое правило?

  1. Отправить POST-запрос на сервер.
  2. Указать название продукта, его 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

После этого система заново пересчитает рекомендации.

Clone this wiki locally