ДАРА
Разделы документации

ДокументацияРуководства

Данные о пользователях

Профиль пользователя — поля, как они влияют на выдачу, что присылать нельзя, контрольная группа и советы по идентификаторам.

События показывают, что пользователь делал. Профиль — то, что ваш сайт знает о нём сам: интересы из анкеты, год рождения, город, подписки на авторов. С профилем пользователь получает персональную выдачу сразу, ещё до накопления истории.

Просмотры, лайки, корзина и покупки — это действия с объектами: их передают событиями и заказами, а не профилем.

Запись профиля: POST /users/profile

curl -X POST https://core.daratech.ru/api/v1/users/profile \
  -H "Authorization: Bearer $DARA_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "user": {"user_id": "u-501"},
    "birth_year": 1994,
    "city": "Казань",
    "country": "Россия",
    "interests": ["горные велосипеды", "походы", "фототехника"],
    "excluded_interests": ["азартные игры"],
    "followed_authors": ["channel-17", "channel-203"],
    "attributes": {"plan": "premium", "signup_source": "mobile"}
  }'
{"identity": "user", "updated_fields": ["birth_year", "city", "country", "interests", "excluded_interests", "followed_authors", "attributes"]}

Переданные поля заменяются, null очищает поле, непереданные не меняются.

Поле Тип Описание
gender male или female пол
birth_year int год рождения, от 1900 до текущего года
age int от 0 до 120 вместо birth_year: ДАРА пересчитает возраст в год рождения, чтобы он не устаревал
interests до 50 строк до 200 знаков интересы текстом на любом языке
excluded_interests до 50 строк до 200 знаков «не интересно»
followed_authors до 500 id авторы у вас: подписки, любимые каналы и бренды
hidden_authors до 500 id авторы, которых пользователь скрыл
city, country string до 100 знаков город и страна; хранятся в нижнем регистре без лишних пробелов
personalization bool false — пользователь отказался от персонализации
attributes object до 16 КБ любые ваши данные: хранятся и видны в кабинете, на выдачу пока не влияют

Правила:

  • Без user_id профиль записывается в анонимный профиль — даже если пользователь узнан без входа. На общем устройстве посторонний не должен менять данные аккаунта.
  • При склейке профиль анонима дополняет профиль пользователя: заполненные поля пользователя не перезаписываются.
  • Без подключения DARA Fingerprint профиль только с fingerprint_uuid отклоняется с кодом no_user.

Пакет — POST /users/profile/batch, до 500 профилей: {"profiles": [{"user": {...}, ...поля}]}. Ответ — {"results": [{"index", "ok", "error"}]}.

Как данные влияют на выдачу

Данные Влияние
interests каждый интерес превращается в вектор смысла в течение минуты и участвует в интересах профиля; перевод не нужен — модели многоязычные
excluded_interests объекты, близкие к исключённым интересам, опускаются в выдаче
followed_authors любимые авторы получают максимальную близость — их свежие объекты попадают в ленту
hidden_authors объекты этих авторов не показываются нигде, кроме переранжирования
birth_year, age при включённом фильтре по возрасту объект с отметкой N+ показывается только пользователю не младше N лет; объекты без отметки не фильтруются
city, country, gender и возраст сегменты пользователя: новым пользователям лента подмешивает популярное в их сегменте
personalization: false профиль не строится и не используется, узнавание без входа не работает, выдача неперсональная; события учитываются в статистике объектов и метриках
attributes не влияют на выдачу

Подробнее о заявленных интересах:

  • Лента становится персональной (mode: personal), когда сумма реальной истории и веса заявленных интересов достигает порога. Вес заявленных интересов — 2,0, этого хватает для персональной ленты сразу после записи профиля.
  • Вес заявленных интересов уменьшается вдвое за 180 дней с их обновления и падает по мере накопления реальных действий: история пользователя важнее анкеты.
  • Сегмент учитывается, когда в нём не меньше 100 пользователей с событиями за 30 дней. Сегменты — страна, город, пол вместе с возрастной группой: до 18, 18–24, 25–34, 35–44, 45–54, 55+.

Фильтр по возрасту и популярное в сегментах включены в проекте по умолчанию и выключаются в настройках выдачи.

Контрольная группа

Чтобы честно измерить, сколько дают данные о пользователях, часть пользователей попадает в контрольную группу: по умолчанию 10 %, в настройках проекта — от 0 до 50 %. Группа выбирается по хешу пользователя и не меняется.

  • Контрольная группа получает выдачу без заявленных интересов, любимых авторов и сегментов.
  • Скрытые авторы, возраст и отказ от персонализации соблюдаются всегда: это пожелания пользователя, а не улучшение выдачи.
  • Метрики — CTR и целевые события на 100 показов — считаются отдельно для основной и контрольной групп и только среди пользователей, о которых вы передали данные. Сравнение — в кабинете, на экране «Данные о пользователях».

Что присылать нельзя

Персональные данные не принимаются. Ключи email, phone, name, first_name, last_name, middle_name, address, birth_date, passport в attributes — без учёта регистра, на любой глубине — дают ответ 422 validation_failed: в details — путь до ключа, например attributes.contacts.email, и код pii_not_allowed. Профиль в этом случае не записывается.

Не кладите персональные данные и в другие поля: в user_id, интересы, id авторов. Для выдачи они не нужны.

Сверка: GET /users/profile

Параметр — user_id, anonymous_id или fingerprint_uuid. Ответ — поля профиля в том виде, в каком их хранит ДАРА, attributes и дата обновления каждого поля. Метод нужен для проверки интеграции.

Советы

  • user_id — внутренний id пользователя, а не email. Id из вашей базы не меняется, когда пользователь меняет почту, и не раскрывает её. Если других идентификаторов, кроме email, нет, передавайте хеш адреса с постоянной солью вашего сайта — например, sha256("ваша-соль:" + email.lower()).
  • Семейный аккаунт с несколькими профилями — составной user_id: u-501:anna, u-501:kids. У каждого профиля своя история, свои интересы и свой возраст, и детский профиль не получает рекомендации взрослого.
  • Гостевой заказ. На странице оформления передайте в заказе user с anonymous_id посетителя, а при подключённом DARA Fingerprint — и fingerprint_uuid. Если после заказа гость зарегистрируется, вызовите POST /users/link с новым user_id и теми же идентификаторами — заказ перейдёт в аккаунт.
  • Обновляйте профиль при изменении, а не перед каждым запросом выдачи: запись профиля сама пересчитывает всё нужное.