# Импорт транзакций

Данные по покупкам пользователей используются рекомендательной платформой в работе ряда стратегий и влияют на большинство рекомендательных алгоритмов. Исторические данные нужны для обеспечения полноценного объёма данных для рекомендатульных алгоритмов и избежания “холодного старта”, данные о продажах из офлайн магазинов необходимы для обеспечения данных о покупательском поведении за пределами сайта.

  1. Уточнение популярности товаров — в ранжировании по популярности будут принимать участие и данные из событий и загруженные данные.
  2. Данные для алгоритма “Purchased Together” — в расчёте скоров для товаров, покупаемых в рамках одного чека будут учитываться и данные из событий и загруженные данные.
  3. Персональные рекомендации в рамках алгоритма “Affinity” — при формировании рекомендаций для пользователя будут использоваться как его поведение на сайте / в приложении, так и покупки, загруженные в платформу (требуются идентификаторы пользователя).
  4. Исключение товаров, купленных пользователем в офлайн магазинах или до интеграции платформы, если загружаются исторические данные (требуются идентификаторы пользователя).
  5. Создание пользовательских сегментов на основании данных о покупках пользователей (требуются идентификаторы пользователя).

При загрузке идентификаторы в событиях “Login” / “Signup”, должны совпадать с идентификаторами в загружаемых данных. В расчётах участвуют только товары, присутствующие в фиде на момент загрузки данных. Также к загруженным данным применяются все правила применяемые к исходным стратегиям (например диапазон данных). Описание рекомендательных стратегий

# Процедура загрузки данных

Процедура состоит из следующих шагов:

  1. Обсудить с менеджером по персонализации кейсы, в которых планируется использование загруженных данных.
  2. Определить период загружаемых данных (для исторических данных) или периодичность загрузки данных (для данных об оффлайн продажах).
  3. Подготовить выгрузку в соответствии с форматом ниже и обеспечить возможность загрузить файл с выгрузкой по прямой ссылке.
  4. Передать ссылку коллегам из Gravity Field.
  5. Первичная загрузка данных и обновление профилей пользователей может занимать до недели.

# Структура данных

Каждый товар передаётся отдельной строкой, товары, купленные в рамках одной транзакции объединяются через идентификатор транзакции transactionId.

Десятичный разделитель - точка

Параметры со звёздочкой (*) обязательны для заполнения

Во избежание фрагментации профилей рекомендуется использовать единый идентификатор пользователя во всех каналах (Web, мобильные SDK, Server-Side API и импорт офлайн-данных) — SHA-256 хеш нормализованного мобильного телефона с типом phone_hash.

Чаще всего данные об офлайн‑покупках формируются из CDP или DWH. В этом случае:

  • при построении CSV для Gravity Field на стороне CDP должен использоваться ровно тот же алгоритм нормализации и хеширования, что и во фронтенде/мобильных SDK;
  • в CDP рекомендуется хранить “золотой” ключ (Golden Record) в виде нормализованного телефона и/или его хеша и использовать его как источник поля cuid для всех выгрузок в Gravity Field.

Перед построением хеша:

  • Удалите все символы, кроме цифр.
  • Для РФ/КЗ приводите номер к формату 7XXXXXXXXXX (без +, пробелов, скобок и дефисов).
  • Для других стран используйте международный формат без + и разделителей.
  • Считайте SHA-256 по строке в UTF-8 и передавайте результат в виде lowercase hex.
Field Type Value Example Description
*cuidType string phone_hash Тип идентификатора пользователя. Для стандартизированных интеграций должен быть phone_hash и совпадать с значением, передаваемым в событиях Login с сайта / из приложения
*cuid string b642b4217b34b1e8d3bd915fc65c4452 Идентификатор пользователя: SHA-256 хеш нормализованного номера телефона (тот же, что в Login с cuidType = phone_hash)
*transactionId string 344778231777174 Идентификатор транзакции
transactionSource string Store 1521 Идентификатор канала для оффлайн покупок
*transactionDatetime date, ISO 8601 2019-08-05T09:45:23+03:00 Дата и время транзакции в формате dateTtime+offset
*value float 4583.18 Общая стоимость корзины в фактической валюте платежа
*currency sting, ISO 4217 KZT Буквенный код валюты в соответствии со стандартом ISO 4217
*productId string 124350 Идентификатор товара
*quantity integer, positive only 2 Количество единиц productId купленных в рамках транзакции
*itemPrice float 548.20 Ценность одной единицы товара до применения акций и скидок

# Проверка корректности загрузки данных

  1. Логи каждой загрузки доступны в выделенной папке на нашем сервере с парольным доступом (доступ предоставляется по запросу). Формат имени файла лога: offline_purchase_upload_log_YYYY-MM-DD-HH-MM-SS.csv.
  2. После первичной загрузки данных рекомендуется проверить, что данные появились в аудиториях при выборе условия “Products purchased offline”.

# Образец файла

offline_purchases_data_example.csv