Исходный код вики Рекомендации


Последние авторы
1 (% class="lead" %)
2 Функционал рекомендаций позволяет выводить в текст сообщений товары, подобранные по одному из поддерживаемых алгоритмов на основе прошлых действий данного клиента.
3
4 {{info}}
5 Функционал рекомендаций поддерживается только при настроенной интеграции с модулем Loymax AI.
6 {{/info}}
7
8 (% class="box" %)
9 (((
10 **Содержание:**
11
12 {{toc depth="3" start="2"/}}
13 )))
14
15 Общий процесс генерации рекомендаций выглядит следующим образом:
16
17 1. Маркетолог создаёт рекомендацию в АРМ.
18 1. Маркетолог вставляет код рекомендации в сообщение.
19 1. При генерации сообщения Loymax Smart Communications отправляет в Loymax AI запрос, содержащий:
20 1*. идентификатор клиента,
21 1*. название алгоритма рекомендации,
22 1*. параметры алгоритма (например, сколько продуктов рекомендовать).
23 1. Loymax AI возвращает массив продуктов, сформированный по указанному алгоритму.
24 1. Loymax Smart Communications отправляет сообщение с рекомендациями.
25
26 == Настройка рекомендаций ==
27
28 Чтобы просмотреть список созданных рекомендаций, на панели слева нажмите на узел **Рекомендации**.
29
30 |(% style="border-color:#ffffff; text-align:center" %){{lightbox image="recommendations.png" width="660"/}}
31
32 Вы можете совершать следующие действия с рекомендациями:
33
34 * Создать новую рекомендацию ([[image:1.png]]).
35 * Отсортировать таблицу по содержимому любого столбца ([[image:2.png]]).
36 * Редактировать, копировать или удалить рекомендацию ([[image:3.png]]). Вы также можете редактировать рекомендацию по клику на её код или наименование.
37
38 По нажатию кнопки создания новой или редактирования существующей рекомендации откроется окно редактирования рекомендации.
39
40 |(% style="border-color:white; width:70%" %)(((
41 Заполните обязательные поля рекомендации:
42
43 * **Код рекомендации** — короткий код, который будет использоваться для добавления рекомендаций в сообщения.
44 * **Наименование рекомендации** — человекочитаемое имя, которое будет отображаться в списке настроенных рекомендаций.
45 * **Алгоритм рекомендации** — выберите требуемый алгоритм из списка. Подробнее о поддерживаемых алгоритмах см. в [[отдельной статье>>doc:Main.General_information.Loymax_Loyalty.recommendation_systems.Commercial_recommendations.WebHome]].
46
47 Настройте параметры рекомендации. Набор доступных параметров зависит от выбранного алгоритма.
48
49 * **Количество рекомендаций** — количество продуктов, которые будет возвращать модуль Loymax AI.
50 * **Рассчитывать на основе** — источник, из которого Loymax Smart Communications будет брать продукты (для расчёта рекомендаций по алгоритмам //Совместные покупки//, //Похожие товары//) или категории (для расчёта рекомендаций по алгоритму //Популярные товары в категории//).
51 )))|(% style="border-color:white; text-align:center; width:30%" %){{lightbox image="recommendation_edit.png" width="400"/}}
52
53 === Настройка ручных рекомендаций ===
54
55 |(% style="border-color:white; width:70%" %)(((
56 Ручные рекомендации отличаются от всех остальных алгоритмов тем, что расчёт рекомендаций полностью осуществляется на стороне Loymax Smart Communications. Ручные рекомендации рассчитываются раз в сутки в соответствии с настроенными параметрами.
57
58 Для продуктов, относящихся к заданной **Целевой категории** и полученных из заданного источника (поле **Рассчитывать на основе**), подбираются продукты из **Рекомендованных категорий**, которые чаще всего присутствуют в чеках вместе с целевым продуктом. Алгоритм вернёт N наиболее популярных продуктов, где N — значение, заданное в поле **Количество**.
59
60 Рекомендации можно дополнительно ограничить: если заданы **Продвинутые настройки соответствия**, алгоритм будет предлагать только продукты, у которых значения заданных параметров соответствуют значениям параметров целевого продукта.
61
62 Для ручных рекомендаций доступны следующие настройки:
63
64 * **Период расчета** ([[image:1.png]]). Период, за который будут анализироваться чеки, чтобы определить продукты, чаще всего покупаемые вместе с целевыми.
65 * **Рассчитывать на основе** ([[image:2.png]]). Аналогично остальным алгоритмам, источник, из которого Loymax Smart Communications будет брать целевые продукты.
66 * **Целевая категория** ([[image:3.png]]). Категория, к продуктам из которой будут рассчитываться рекомендации. Чтобы добавить целевую категорию, нажмите **+ Добавить соответствие** в левом нижнем углу окна.
67 * **Рекомендуемая категория** ([[image:4.png]]). Категория, продукты из которой будут предлагаться в качестве рекомендаций. К одной целевой категории можно выбрать несколько рекомендуемых. Чтобы добавить рекомендуемую категорию, нажмите **+ Добавить категорию**.
68 * **Количество** ([[image:4.png]]). Количество продуктов из данной рекомендуемой категории, которое вернёт алгоритм. Количество задаётся отдельно для каждой рекомендуемой категории.
69 * **Продвинутые настройки соответствия** ([[image:5.png]]). Нажмите **+ Добавить соответствие** в правой части окна, чтобы добавить поле, по которому требуется отфильтровать выдачу алгоритма. Продвинутые настройки соответствия задаются отдельно для каждой целевой категории (т.е. распространяются на все рекомендуемые категории).
70
71 {{success}}
72 Для полей с числовыми типами данных, а также с типом данных "дата" доступен флажок **Точное соответствие**. Если он установлен, продукт будет рекомендован только при полном совпадении значения со значением соответствующего атрибута целевого продукта.
73
74 Для полей с типами данных "строка" и "логическое" всегда требуется точное соответствие.
75
76 Если флажок **Точное соответствие** снят, продукт попадёт в рекомендации, если он отличается от целевого продукта по значению атрибута не более чем на 15%.
77 {{/success}}
78 )))|(% style="border-color:white; text-align:center; width:30%" %){{lightbox image="recommendation_manual.png" width="400"/}}
79
80 == Подстановка рекомендаций в сообщение ==
81
82 Для отображения рекомендаций в сообщениях необходимо использовать конструкции [[шаблонизатора>>doc:Main.Using.Smart_Communications.Mass_mailings.Template_builder.WebHome]].
83
84 Рассмотрим пример добавления рекомендаций в сообщения. Мы хотим отправить клиентам email-рассылку с рекомендациями по алгоритму //Совместные покупки// (для этого в Системе создана рекомендация с кодом ##sov_pok##). У некоторых клиентов еще нет истории покупок, поэтому для них будем выдавать рекомендации по алгоритму //Популярные товары// (для этого в Системе создана рекомендация с кодом ##popular##).
85
86 Для удобства работы определим переменную и проверим, можем ли мы рекомендовать клиенту хотя бы три продукта по алгоритму //Совместные покупки//.
87
88 {{code}}
89 {% set Rec=client.recommendations.sov_pok %}
90 {% if not Rec or Rec|length < 3 %}
91 {% set Rec=client.recommendations.popular %}
92 {% endif %}
93
94 {{/code}}
95
96
97 {% set count_recs=0 %}{% set filteredRecommendation=[] %}
98 {% for recommendation in clientRecommendation %}
99 {% set item=recommendation %}
100 {% if item not in filteredRecommendation and item.eComAvailable=='Y' and count_recs < 9 %}
101 {% set filteredRecommendation=filteredRecommendation|merge([item]) %}
102 {% set count_recs=count_recs + 1 %}
103 {% endif %}
104 {% endfor %}
105 {% for batchrecommendation in filteredRecommendation|batch(3) %}##
106 (% style="font-family:Menlo,Monaco,Consolas,~"Courier New~",monospace; white-space:pre" %){% if batchrecommendation|length == 3 %}(%%)##
107
108 == Механизм получения товарных рекомендаций ==
109
110 (((
111 * (((
112 === Получение товарных рекомендаций целевым методом ===
113 )))
114 )))
115
116 Пример запроса с использованием целевого метода (Примечание: значение в кавычках отличается в зависимости от используемого метода):
117
118 (% class="box" %)
119 (((
120 ##{% set clientRecommendation=client.recommendations('RelatedPurchases') %}##
121 )))
122
123 * (((
124 === Получение товарных рекомендаций методом "Популярные" ===
125 )))
126
127 Если после обработки целевым методом товаров нет или недостаточно, то выполняется запрос по методу **Популярные**:
128
129 (% class="box" %)
130 (((
131 ##{% if not clientRecommendation or clientRecommendation|length < 3 %}
132 {% set clientRecommendation=client.recommendations('Popular') %}
133 {% endif %}##
134 )))
135
136 В результате создаётся массив отфильтрованных товаров, которые соответствуют условиям ниже:
137
138 (% class="box" %)
139 (((
140 ##{% set count_recs=0 %}
141 {% set filteredRecommendation=[] %}
142 {% for recommendation in clientRecommendation %}
143 {% set item=recommendation %}##
144 )))
145
146 Далее из массива товаров выбираются только те товары, в которых атрибут ##eComAvailable=='Y'##. Аналогичным образом товары добавляются в массив отсортированных до тех пор, пока не наберётся 9 штук:
147
148 (% class="box" %)
149 (((
150 ## {% if item not in filteredRecommendation and item.eComAvailable=='Y' and count_recs < 9 %}
151 {% set filteredRecommendation=filteredRecommendation|merge([item]) %}
152 {% set count_recs=count_recs + 1 %}
153 {% endif %}
154 {% endfor %}##
155 )))
156
157 * (((
158 === Вывод товаров ===
159 )))
160
161 Товары выводятся строго по 3 штуки на 1 строку:
162
163 (% class="box" %)
164 (((
165 ##{% for batchrecommendation in filteredRecommendation|batch(3) %}
166 {% if batchrecommendation|length==3 %}
167 {% for recommendation in batchrecommendation %}}##
168 )))
169
170 * (((
171 === Вывод цен ===
172 )))
173
174 Если заполнены атрибуты старой и новой цены и они отличаются друг от друга, то выводятся обе цены:
175
176 (% class="box" %)
177 (((
178 ##{% if recommendation.priceim and recommendation.oldprice_19 and recommendation.priceim != recommendation.oldprice_19 %}
179 ~{~{ recommendation.priceim }}
180 ~{~{ recommendation.oldprice_19 }}##
181 )))
182
183 Если заполнен атрибут цены Интернет-магазина (##priceim)##, выводится цена Интернет-магазина:
184
185 (% class="box" %)
186 (((
187 ##{% elseif recommendation.priceim %}
188 ~{~{ recommendation.priceim }}##
189 )))
190
191 Если нет данных, то отображается "n/a":
192
193 (% class="box" %)
194 (((
195 ##{% else %}
196 n/a
197 {% endif %}##
198 )))