02. Пользователь¶
| Версия | 1.28.0 |
|---|---|
| Количество листов |
Оглавление¶
- История изменений
- 1. Пользователи системы
- 2. Пользователь
- 2.1 Данные Пользователя
- 2.2 Авторизация пользователя
- 2.3 CRUD Пользователя
- 02_2.3_1 Процедура получение кода верификации email при авторизации
- 02_2.3_2 Процедура cоздания кода верификации email
- 02_2.3_3 Процедура получение кода верификации email при регистрации
- 02_2.3_4 Процедура верификации email
- 02_2.3_4_1 Процедура генерации токена авторизации и обновления
- 02_2.3_5 Процедура сохранения данных Представителя бизнеса при регистрации
- 02_2.3_6 Процедура создания Локаций при регистрации
- 02_2.3_7 Процедура сохранения данных Инфлюэнсера при регистрации
- 02_2.3_8 Процедура сохранения информации об аудитории Инфлюэнсера при регистрации
- 02_2.3_9 Процедура блокировки Пользователя
- 02_2.3_10 Процедура разблокировки Пользователя
- 02_2.3_11 Процедура удаления Пользователя
- 02_2.3_12 Процедура деавторизации Пользователя
- 02_2.3_13 Процедура получения информации о профиле пользователя
- 02_2.3_14 Процедура обновления информации о пользователе
- 02_2.3_15 Процедура создания контакта уведомления внешним методом
- 02_2.3_16 Процедура аутентификации пользователя через Firebase
- 02_2.3_17 Процедура изменения настроек уведомления
- 02_2.3_18 Процедура регистрации FCM токена
- 02_2.3_19 Процедура удаления FCM токена
- 2.4 Имперсонация
- 2.5 Сессия пользователя
- 3. Инфлюэнсер
- 3.1 Данные Аккаунта
- 3.1.1 Параметры Аккаунта пользователя(accounts)
- 3.1.2 Параметры Данных аккаунта(account_data)
- 3.1.3 Параметры Интересы аккаунта(account_interests)
- 3.1.4 Параметры Аудитории аккаунта по языку(account_audience_languages)
- 3.1.5 Параметры Аудитории аккаунта по стране(account_audience_countries)
- 3.1.6 Параметры Аудитории аккаунта по городу(account_audience_cities)
- 3.1.7 Параметры Аудитории аккаунта по полу(account_audience_genders)
- 3.1.8 Параметры Аудитории аккаунта по возрастной группе(account_audience_age_ranges)
- 3.1.9 Параметры Поста аккаунта(account_posts)
- 3.2 CRUD Аккаунта
- 02_3.2_3 Процедура получения данных аккаунта инфлюэнсера из источника данных
- 02_3.2_4 Процедура верификации Аккаунта пользователя
- 02_3.2_5 Процедура приостановки Аккаунта пользователя
- 02_3.2_6 Процедура импорта списка инфлюэнсеров
- 02_3.2_7 Процедура импорта списка инфлюэнсеров с созданием профилей
- 02_3.2_8 Процедура получения инфлюэнсера
- 02_3.2_9 Процедура скрытия контактных данных
- 02_3.2_10 Процедура получения инфлюэнсера публичным методом
- 02_3.2_11 Процедура установки ограничения откликов инфлюэнсера
- 02_3.2_12 Процедура снятия ограничения откликов инфлюэнсера
- 02_3.2_13 Проверка возможности снятия ограничения по контенту с инфлюэнсера
- 02_3.2_14 Процедура определения имени в сервисе Instagram
- 3.2.1 Очередь синхронизации данных аккаунта(influencer_data_sync)
- 3.3 Список инфлюэнсеров для отображения в интерфейсе Бизнес представителя
- 3.1 Данные Аккаунта
- 3. Администратор
История изменений¶
| №1 | Дата: 25.08.25 | Автор:Демкович Александр | RFC: RPL-1051 | Версия: 0.1.0 |
|---|---|---|---|---|
| Добавлено: • Параметр “Предпочитаемая локаль” пользователя • Локали для “02_2.2_1.1 Ошибки при выполнении процедуры 02_2.2_1” • Локали для “02_2.2_3.1 Ошибки при выполнении процедуры 02_2.2_3” • Локали для “02_2.2_4.1 Ошибки при выполнении процедуры 02_2.2_4” • Локали для “02_2.2_5.1 Ошибки при выполнении процедуры 02_2.2_5” • Локали для “02_2.2_6.1 Ошибки при выполнении процедуры 02_2.2_6” • Локали для “02_2.3_7.1 Ошибки при выполнении процедуры 02_2.3_7” • Локали для “02_2.2_8.2 Ошибки при выполнении процедуры 02_2.2_8”. Изменено: • В “02_2.3_9 Процедуре блокировки Пользователя” изменены параметры “Сообщения коллаборации” • В “02_2.3_10 Процедуре разблокировки Пользователя” изменены параметры “Сообщения коллаборации” • В “02_2.3_11 Процедуре удаления Пользователя” изменены параметры “Сообщения коллаборации” • В “02_3.2_4 Процедуре верификации Аккаунта пользователя” изменены параметры “Сообщения коллаборации” • В “02_3.2_5 Процедура приостановки Аккаунта пользователя” изменены параметры “Сообщения коллаборации”. |
||||
| №2 | Дата: 04.09.25 | Автор:Демкович Александр | RFC: RPL-1092 | Версия: 0.2.0 |
| Добавлено: • Параметр “Аккаунты” пользователя • Параметры “Аккаунта пользователя”: Дата обновления в источнике данных • Является ли верифицированным в источнике данных • Тип аккаунта в источнике данных • Возрастная группа • Среднее количество просмотров reels • Среднее количество публикаций, которыми поделились • Email. Источник данных “OnSocial” для “Данных аккаунта” • Параметр “Обработанные данные” данных аккаунта • 3.2.1 Очередь синхронизации данных аккаунта(influencer_data_sync) • 02_3.2.1_1.1_1 Processed data • 02_3.2.1_1.1_2 Соответствие названий возрастных групп. Изменено: • 02_3.2_3 Процедура получения данных аккаунта инфлюэнсера из источника данных • В “02_3.2.1_1 Процедура обработки сообщения “Аккаунт для обновления данных” • 02_3.2.1_1.1 Процедура обработки исходных данных • Исключено 3.2.1 Очередь синхронизации данных аккаунта(influencer_data_sync)с Yoloco(yoloco_sync) • “Идентификатор аккаунта” из “3.2.1.1 Параметры сообщения “Аккаунт для обновления данных”. |
||||
| №3 | Дата: 11.09.25 | Автор:Ляшук Андрей | RFC: RPL-1288 | Версия: 0.3.0 |
| Добавлена: • Португальская локаль для “02_2.2_1.1 Ошибки при выполнении процедуры 02_2.2_1” • Португальская локаль для “02_2.2_3.1 Ошибки при выполнении процедуры 02_2.2_3” • Португальская локаль для “02_2.2_4.1 Ошибки при выполнении процедуры 02_2.2_4” • Португальская локаль для “02_2.2_5.1 Ошибки при выполнении процедуры 02_2.2_5” • Португальская локаль для “02_2.2_6.1 Ошибки при выполнении процедуры 02_2.2_6” • Португальская локаль для “02_2.3_7.1 Ошибки при выполнении процедуры 02_2.3_7” • Португальская локаль для “02_2.2_8.2 Ошибки при выполнении процедуры 02_2.2_8”. |
||||
| №4 | Дата: 11.09.25 | Автор:Ляшук Андрей | RFC: RPL-1317 | Версия: 0.4.0 |
| Добавлена: • Испанская локаль для “02_2.2_1.1 Ошибки при выполнении процедуры 02_2.2_1” • Испанская локаль для “02_2.2_3.1 Ошибки при выполнении процедуры 02_2.2_3” • Испанская локаль для “02_2.2_4.1 Ошибки при выполнении процедуры 02_2.2_4” • Испанская локаль для “02_2.2_5.1 Ошибки при выполнении процедуры 02_2.2_5” • Испанская локаль для “02_2.2_6.1 Ошибки при выполнении процедуры 02_2.2_6” • Испанская локаль для “02_2.3_7.1 Ошибки при выполнении процедуры 02_2.3_7” • Испанская локаль для “02_2.2_8.2 Ошибки при выполнении процедуры 02_2.2_8”. |
||||
| №5 | Дата: 24.09.25 | Автор:Ляшук Андрей | RFC: RPL-1262 | Версия: 1.0.0 |
| Добавлена: 02_2.3_14 Процедура обновления информации о пользователе. Изменено: • В “02_2.3_2 Процедуру создания кода верификации email” добавлена отправка параметра “locale” в процедуру “01_3.1.2_1 Процедура отправки email-уведомлений через сервис Sendgrid” • В “02_2.3_3 Процедуру получения кода верификации email при регистрации” добавлена отправка параметра “locale” в процедуру “02_2.3_2 Процедура создания кода верификации email” • При создании пользователя в “02_2.3_4 Процедуре верификации email” добавлен параметр “Предпочитаемая локаль”. |
||||
| №6 | Дата: 24.09.25 | Автор:Ляшук Андрей | RFC: RPL-1086 | Версия: 1.1.0 |
| Изменено: В “02_2.3_6 Процедура создания Локаций при регистрации” в этапе “3” добавлена инициация “06_5_4 Процедура обработки ссылки web_link”. |
||||
| №7 | Дата: 25.09.25 | Автор:Ляшук Андрей | RFC: RPL-1330 | Версия: 1.2.0 |
| Изменено: В “02_2.3_6 Процедуре создания Локаций при регистрации” в ответ на запрос “Create locations on registration” добавлен “Фильтр настроек для инфлюенсера”. |
||||
| №8 | Дата: 25.09.25 | Автор:Ляшук Андрей | RFC: RPL-1208 | Версия: 1.3.0 |
| Изменено: • В “02_2.3_6 Процедуре создания Локаций при регистрации”: Добавлено создание “Уведомления” • Добавлена отправка созданного “Уведомления” в очередь “Отправка email-уведомлений через сервис Sendgrid” • Добавлено сохранение в LocalStorage ключа “filter_settings_for_influencers”, который пришел в ответе на запрос “Create locations on registration”. |
||||
| №9 | Дата: 30.09.25 | Автор:Ляшук Андрей | RFC: RPL-1324 | Версия: 1.4.0 |
| Изменено: • В “02_2.3_4 Процедуре верификации email” добавлено создание сообщения “Webhook event” • В “02_2.3_6 Процедуре создания Локаций при регистрации” добавлено создание сообщения “Webhook event”. |
||||
| №10 | Дата: 30.09.25 | Автор:Ляшук Андрей | RFC: RPL-1419 | Версия: 1.5.0 |
| Добавлено: • 02_3.2_6 Процедура импорта списка инфлюэнсеров • 02_3.2_7 Процедура импорта списка инфлюэнсеров с созданием профилей. |
||||
| №11 | Дата: 30.09.25 | Автор:Ляшук Андрей | RFC: RPL-1295 | Версия: 1.6.0 |
| Изменено: В “02_3.3.2_1 Процедура получения Списка инфлюэнсеров” подписка пользователя изменена на “Активную подписку пользователя”. |
||||
| №18 | Дата: 01.10.25 | Автор:Ляшук Андрей | RFC: RPL-1341 | Версия: 1.7.0 |
| Добавлено: “2.4 Имперсонация”. |
||||
| №19 | Дата: 03.10.25 | Автор:Ляшук Андрей | RFC: RPL-420 | Версия: 1.8.0 |
| Изменено: Формат логирования в 02_3.2.1_1 Процедура обработки сообщения “Аккаунт для обновления данных”. |
||||
| №20 | Дата: 07.10.25 | Автор:Ляшук Андрей | RFC: RPL-1417 | Версия: 1.9.0 |
| Изменено: • Параметр “Является ли системным” заменен на “Тип” в: “02_2.3_9 Процедура блокировки Пользователя” • “02_2.3_10 Процедура разблокировки Пользователя” • “02_2.3_11 Процедура удаления Пользователя” • “02_3.2_4 Процедура верификации Аккаунта пользователя” • “02_3.2_5 Процедура приостановки Аккаунта пользователя”. |
||||
| №21 | Дата: 07.10.25 | Автор:Ляшук Андрей | RFC: RPL-1423 | Версия: 1.10.0 |
| Изменено: В “3.1.2 Параметры Данных аккаунта(account_data)” добавлен новый “Источник данных” - “Other”. |
||||
| №22 | Дата: 08.10.25 | Автор:Ляшук Андрей | RFC: RPL-1514 | Версия: 1.11.0 |
| Изменено: В “02_3.3.2_1 Процедура получения Списка инфлюэнсеров” добавлена фильтрация по параметру “data_sources”. |
||||
| №23 | Дата: 10.10.25 | Автор:Ляшук Андрей | RFC: RPL-1550 | Версия: 1.12.0 |
| Изменено: В “02_2.3_6 Процедура создания Локаций при регистрации” сохранения в LocalStorage ключа “is_default_influencers_filters”. |
||||
| №24 | Дата: 13.10.25 | Автор:Ляшук Андрей | RFC: RPL-1480 | Версия: 1.13.0 |
| Изменено: • Добавлена отправка сообщения в веб-сокет в процедурах: “02_2.3_9 Процедура блокировки Пользователя” • “02_2.3_10 Процедура разблокировки Пользователя” • “02_2.3_11 Процедура удаления Пользователя” • “02_3.2_4 Процедура верификации Аккаунта пользователя” • “02_3.2_5 Процедура приостановки Аккаунта пользователя”. |
||||
| №24 | Дата: 13.10.25 | Автор:Ляшук Андрей | RFC: RPL-1314 | Версия: 1.14.0 |
| Изменено: В “02_2.3_13 Процедура получения информации о профиле пользователя” добавлен переход клиентской части сервиса к экрану согласно состоянию пользователя. |
||||
| №25 | Дата: 15.10.25 | Автор:Ляшук Андрей | RFC: RPL-1552 | Версия: 1.15.0 |
| Изменено: В “02_2.3_6 Процедура создания Локаций при регистрации” добавлено изменение “Кода страны плательщика” бизнеса. |
||||
| №26 | Дата: 17.10.25 | Автор:Ляшук Андрей | RFC: RPL-1540 | Версия: 1.16.0 |
| Изменено: • При создании системного сообщения добавлен параметр “Инициатор” в процедурах: “02_2.3_9 Процедура блокировки Пользователя” • “02_2.3_10 Процедура разблокировки Пользователя” • “02_2.3_11 Процедура удаления Пользователя” • “02_3.2_4 Процедура верификации Аккаунта пользователя” • “02_3.2_5 Процедура приостановки Аккаунта пользователя”. Удалена отправка сообщения в веб-сокет для инфлюэнсера в процедурах: “02_3.2_4 Процедура верификации Аккаунта пользователя”; “02_3.2_5 Процедура приостановки Аккаунта пользователя”. |
||||
| №27 | Дата: 17.10.25 | Автор:Ляшук Андрей | RFC: RPL-1597 | Версия: 1.17.0 |
| Добавлено: • “02_3.2_8 Процедура получения инфлюэнсера” • “02_3.2_9 Процедура скрытия контактных данных”. Изменено: В “02_3.3.2_1 Процедура получения Списка инфлюэнсеров” добавлена инициации “02_3.2_9 Процедура скрытия контактных данных”, если для “Представителя бизнеса” не имеется “Активной подписки пользователя” и “Возможности использования бесплатной коллаборации”. |
||||
| №27 | Дата: 27.10.25 | Автор:Ляшук Андрей | RFC: RPL-1667 | Версия: 1.18.0 |
| Изменено: • В “3.1.1 Параметры Аккаунта пользователя(accounts)” добавлен параметр “verification_reject_reason” • В “02_3.2_5 Процедура приостановки Аккаунта пользователя”: Добавлен параметр “verification_reject_reason” • Изменена логика определения “Идентификатора динамического шаблона” при создании уведомления в зависимости от значение параметра “verification_reject_reason”. |
||||
| №28 | Дата: 28.10.25 | Автор:Ляшук Андрей | RFC: RPL-1657 | Версия: 1.19.0 |
| Добавлено: “2.1.2 Параметры контакта уведомления(notification_contact)”. Изменено: В “02_2.3_11 Процедура удаления Пользователя” добавлено удаление “Контакта уведомления”. |
||||
| №29 | Дата: 07.11.25 | Автор:Ляшук Андрей | RFC: RPL-1781 | Версия: 1.20.0 |
| Изменено: В “02_3.3.2_1 Процедура получения Списка инфлюэнсеров” удалено условие отображения первых “8” аккаунтов при отсутствии подписки. |
||||
| №30 | Дата: 07.11.25 | Автор:Ляшук Андрей | RFC: RPL-1789 | Версия: 1.21.0 |
| Изменено: • В “02_3.3.2_1 Процедура получения Списка инфлюэнсеров” добавлено условие вызова “02_3.2_9 Процедура скрытия контактных данных” • В “02_3.3.2_1 Процедура получения Списка инфлюэнсеров” добавлено условие вызова “02_3.2_9 Процедура скрытия контактных данных”. |
||||
| №31 | Дата: 18.11.25 | Автор:Ляшук Андрей | RFC: RPL-1810 | Версия: 1.22.0 |
| Изменено: В “02_3.2.1_1.1 Процедура обработки исходных данных” добавлено сообщения “File” в очередь “Загрузки файлов в Cloudflare”. |
||||
| №32 | Дата: 19.11.25 | Автор:Ляшук Андрей | RFC: RPL-1866 | Версия: 1.23.0 |
| Изменено: “02_2.3_15 Процедура создания контакта уведомления внешним методом”. |
||||
| №33 | Дата: 25.11.25 | Автор:Ляшук Андрей | RFC: RPL-1871 | Версия: 1.24.0 |
| Изменено: • Добавлена инициация процедуры “07_3.3.2_6 Процедура отправки сообщений коллаборации в веб-сокет” в процедурах: “02_2.3_9 Процедура блокировки Пользователя” • “02_3.2_4 Процедура верификации Аккаунта пользователя” • “02_3.2_5 Процедура приостановки Аккаунта пользователя” • “02_2.3_10 Процедура разблокировки Пользователя” • “02_2.3_11 Процедура удаления Пользователя”. |
||||
| №34 | Дата: 12.12.25 | Автор:Ляшук Андрей | RFC: RPL-1876 | Версия: 1.25.0 |
| Добавлено: • “02_2.3_16 Процедура аутентификации пользователя через Firebase” • “02_2.3_4_1 Процедура генерации токена авторизации и обновления”. Изменено: • “2.1.1 Параметры Пользователя” добавлен параметр “Идентификатор Firebase” • “02_2.3_4 Процедура верификации email” добавлен вызов процедуры “02_2.3_4_1 Процедура генерации токена авторизации и обновления”. |
||||
| №35 | Дата: 15.12.25 | Автор:Ляшук Андрей | RFC: RPL-2000 | Версия: 1.26.0 |
| Добавлено: “3.2.1_1.1.5 Процедура создания Тега аккаунта”. Изменено: В “02_3.2.1_1.1 Процедура обработки исходных данных” добавлена инциация “3.2.1_1.1.5 Процедура создания Тега аккаунта”. |
||||
| №36 | Дата: 16.12.25 | Автор:Ляшук Андрей | RFC: RPL-1675 | Версия: 1.27.0 |
| Изменено: • В “3.1.1 Параметры Аккаунта пользователя(accounts)” добавлены параметры: “avg_ratings” • “count_ratings”. |
||||
| №37 | Дата: 23.12.25 | Автор:Ляшук Андрей | RFC: RPL-2097 | Версия: 1.28.0 |
| Отменены: изменения, которые были добавлены в рамках RPL-2000. |
||||
| №38 | Дата: 14.01.26 | Автор:Ляшук Андрей | RFC: RPL-2091 | Версия: 1.29.0 |
| Изменено: • В “2.1.1 Параметры Пользователя” добавлен параметр “user_uuid_for_create_notification_contact” • Добавлено создания параметра “user_uuid_for_create_notification_contact” в процедурах: “02_2.3_4 Процедура верификации email” • “02_2.3_16 Процедура аутентификации пользователя через Firebase”. В “02_2.3_15 Процедура создания контакта уведомления внешним методом” добавлена обработка параметра “user_uuid_for_create_notification_contact”. |
||||
| №39 | Дата: 19.01.26 | Автор:Ляшук Андрей | RFC: RPL-2178 | Версия: 1.30.0 |
| Изменено: • В “02_2.2.1_1” удалены параметры: “service” • “username”. Удалена обработка параметра “username” в процедурах: “02_2.2.1_3 Процедура добавления записи в буфер проверки email-ов”; “02_2.3_3 Процедура получение кода верификации email при регистрации”. В “02_2.3_2 Процедура создания кода верификации email” удалена обработка параметров: “service”; “username”. “02_2.3_4 Процедура верификации email” удалена обработка аккаунта; “02_2.3_7 Процедура сохранения данных Инфлюэнсера при регистрации” добавлена обработка параметра username. |
||||
| №40 | Дата: 20.01.26 | Автор:Ляшук Андрей | RFC: RPL-2216 | Версия: 1.31.0 |
| Изменено: • В “02_2.3_6 Процедура создания Локаций при регистрации” добавлена обработка параметров: “map_link” • “instagram_username”. |
||||
| №41 | Дата: 04.02.26 | Автор:Ляшук Андрей | RFC: RPL-2315 | Версия: 1.32.0 |
| Изменено: В “02_3.2_8 Процедура получения инфлюэнсера” и “02_3.3.2_1 Процедура получения Списка инфлюэнсеров” добавлено условие, что если для коллабы имеется результат, также является завершенной. |
||||
| №42 | Дата: 05.02.26 | Автор:Ляшук Андрей | RFC: RPL-2204 | Версия: 1.33.0 |
| Изменено: В “02_3.3.2_1 Процедура получения Списка инфлюэнсеров” добавлено условие для “Группы городов”. |
||||
| №43 | Дата: 05.02.26 | Автор:Ляшук Андрей | RFC: RPL-2002 | Версия: 1.34.0 |
| Изменено: В “02_2.3_6 Процедура создания Локаций при регистрации” добавлена инициация “01.1.10_1.7_2 Процедура добавления записи в буфер отслеживания локаций, для которых генерируется ответ от ИИ-модели”, при успешной записи в буфер выполняется добавление сообщения в буфер “Создания описания локации для кампании ИИ-моделью OpenAI”. |
||||
| №43 | Дата: 05.02.26 | Автор:Ляшук Андрей | RFC: RPL-2002 | Версия: 1.34.0 |
| Добавлено: • “2.1.3 Параметры сессии пользователя(user_sessions)” • “2.5 Сессия пользователя” • “02_2.3_6 Процедура создания Локаций при регистрации” добавлена инициации “02_2.5_1 Процедура создания и обновления сессии пользователя”. |
||||
| №44 | Дата: 21.02.26 | Автор:Ляшук Андрей | RFC: RPL-2358 | Версия: 1.35.0 |
| Изменено: В "02_2.3_13 Процедура получения информации о профиле пользователя" добавлено определение параметров "collaborations_max", "collaborations_left" и "collaborations_refresh_at". |
||||
| №45 | Дата: 21.02.26 | Автор:Ляшук Андрей | RFC: RPL-2043 | Версия: 1.36.0 |
| Изменено: • Добавлено “Свойство доступности” при создание системного сообщения в: 02_2.3_9 Процедура блокировки Пользователя • 02_2.3_10 Процедура разблокировки Пользователя • 02_2.3_11 Процедура удаления Пользователя • 02_3.2_4 Процедура верификации Аккаунта пользователя • 02_3.2_5 Процедура приостановки Аккаунта пользователя. |
||||
| №46 | Дата: 23.02.26 | Автор:Ляшук Андрей | RFC: RPL-2439 | Версия: 1.37.0 |
| Изменено: • Добавлен параметр “phone” в: 02_2.3_5 Процедура сохранения данных Представителя бизнеса при регистрации • 02_2.3_7 Процедура сохранения данных Инфлюэнсера при регистрации. |
||||
| №47 | Дата: 25.02.26 | Автор:Ляшук Андрей | RFC: RPL-2444 | Версия: 1.38.0 |
| Изменено: В "2.1.1 Параметры Пользователя" добавлен параметр accompanying_message. |
||||
| №48 | Дата: 26.02.26 | Автор:Ляшук Андрей | RFC: RPL-2458 | Версия: 1.39.0 |
| Изменено: “02_2.5_1 Процедура создания и обновления сессии пользователя” добавлена обработка события, если не имеется идентификатора сессии. |
||||
| №49 | Дата: 10.03.26 | Автор:Ляшук Андрей | RFC: RPL-2491 | Версия: 1.40.0 |
| Добавлено: “02_3.2_10 Процедура получения инфлюэнсера публичным методом”. |
||||
| №50 | Дата: 18.03.26 | Автор:Ляшук Андрей | RFC: RPL-2531 | Версия: 1.41.0 |
| Изменено: • В “3.1.1 Параметры Аккаунта пользователя(accounts)” добавлены параметры: auto_verification_result • verification_comment. |
||||
| №51 | Дата: 27.03.26 | Автор:Ляшук Андрей | RFC: RPL-2569 | Версия: 1.42.0 |
| Добавлено: “02_2.3_17 Процедура изменения настроек уведомления”. Изменено: • В “2.1.1 Параметры пользователя(users)” добавлен параметр “notification_settings” • В “2.1.2 Параметры контакта уведомления(notification_contact)” добавлен параметр “interval”. |
||||
| №52 | Дата: 31.03.26 | Автор:Ляшук Андрей | RFC: RPL-2468 | Версия: 1.43.0 |
| Добавлено: “2.1.4 Параметры подписки на уведомления(user_subscription_on_notification)”. Изменено: • В “02_2.3_12 Процедура деавторизации Пользователя” добавлено изменение счетчика непрочитанных сообщений в иконке приложения • В “02_2.3_13 Процедура получения информации о профиле пользователя” добавлено изменение счетчика непрочитанных сообщений в иконке приложения. |
||||
| №53 | Дата: 07.04.26 | Автор:Ляшук Андрей | RFC: RPL-2626 | Версия: 1.44.0 |
| Изменено: В “02_2.3_13 Процедура получения информации о профиле пользователя” добавлено определение параметров “campaigns_left” и “campaigns_max”. |
||||
| №54 | Дата: 17.04.26 | Автор:Ляшук Андрей | RFC: RPL-2683 | Версия: 1.45.0 |
| Изменено: В “02_2.3_15 Процедура создания контакта уведомления внешним методом” добавлена проверка на необходимость изменения статуса кампании. |
||||
| №55 | Дата: 25.05.26 | Автор:Ляшук Андрей | RFC: | Версия: 1.46.0 |
| Изменено: В “02_2.3_13 Процедура получения информации о профиле пользователя” добавлена проверка на “Демо-аккаунт”: если пользователь является “Демо-аккаунтом”, параметры collaborations_max, collaborations_left, campaigns_max и campaigns_left возвращаются равными 999 вне зависимости от наличия активной подписки. |
||||
| №56 | Дата: 15.06.26 | Автор:Ляшук Андрей | RFC: RPL-2776 | Версия: 1.47.0 |
| Изменено: В “02_3.2.1_1.1 Процедура обработки исходных данных” добавлено применение маппинга “Настройки нормализации названий стран” при определении “Кода страны” для “Аудитории аккаунта по стране”. |
||||
| №57 | Дата: 30.06.26 | Автор:Ляшук Андрей | RFC: RPL-2794 | Версия: 1.48.0 |
| Изменено: • В “02_2.3_7 Процедуру сохранения данных Инфлюэнсера при регистрации” добавлен запуск получения данных аккаунта из источника по настройке “6.5 Источник данных для аккаунтов инфлюэнсеров”, если у аккаунта нет ни одной “Данных аккаунта”; в неё же перенесены создание “Уведомления” (шаблон 11) и сообщение “Конверсия пользователя” в очередь “Запросы к сервису Trackdesk”, ранее выполнявшиеся в “02_2.3_8” • “02_2.3_8 Процедура сохранения информации об аудитории Инфлюэнсера при регистрации” больше не вызывается в рамках регистрации Инфлюэнсера, эндпоинт и процедура оставлены без изменений. |
||||
| №58 | Дата: 07.07.26 | Автор:Ляшук Андрей | RFC: RPL-2825 | Версия: 1.49.0 |
| Добавлено: • “02_3.2_11 Процедура установки ограничения откликов инфлюэнсера внешним методом” • “02_3.2_12 Процедура снятия ограничения откликов инфлюэнсера внешним методом”. Изменено: В “02_2.3_13 Процедура получения информации о профиле пользователя” добавлено определение параметров active_collaborations_max и active_collaborations_left для Инфлюэнсера и Представителя бизнеса с учетом “Персонального количества бесплатных откликов”. |
||||
| №59 | Дата: 21.07.26 | Автор:Ляшук Андрей | RFC: RPL-2825 | Версия: 1.50.0 |
| Добавлено: “02_3.2_13 Проверка возможности снятия ограничения по контенту с инфлюэнсера”. Изменено: “02_3.2_12 Процедура снятия ограничения откликов инфлюэнсера внешним методом” переименована в “02_3.2_12 Процедура снятия ограничения откликов инфлюэнсера” и обобщена — инициация процедуры отвязана от конкретного запроса, чтобы процедуру можно было выполнять как внешним методом, так и внутренним вызовом из других процедур. |
||||
| №60 | Дата: 13.08.26 | Автор:Ляшук Андрей | RFC: RPL-2859 | Версия: 1.51.0 |
| Изменено: • В “02_2.3_13 Процедура получения информации о профиле пользователя” добавлено определение параметра is_content_upload_locked для Инфлюэнсера • В “02_3.2_11 Процедура установки ограничения откликов инфлюэнсера внешним методом” и “02_3.2_12 Процедура снятия ограничения откликов инфлюэнсера” добавлена отправка socket-сообщения “content_upload_restriction”. |
||||
| №61 | Дата: 31.08.26 | Автор:Ляшук Андрей | RFC: RPL-2888 | Версия: 1.52.0 |
| Изменено: “02_3.2_11 Процедура установки ограничения откликов инфлюэнсера внешним методом” переименована в “02_3.2_11 Процедура установки ограничения откликов инфлюэнсера” и обобщена — инициация процедуры отвязана от конкретного запроса, чтобы процедуру можно было выполнять как внешним методом, так и внутренним вызовом из других процедур. |
||||
| №61 | Дата: 31.08.26 | Автор:Ляшук Андрей | RFC: RPL-2885 | Версия: 1.52.0 |
| Изменено: В “02_2.3_6 Процедура создания Локаций при регистрации” добавлено изменение параметра “Отель” Бизнеса при создании Локации с Типом локации “Отель”. |
||||
| №62 | Дата: 08.09.26 | Автор:Ляшук Андрей | RFC: RPL-2897 | Версия: 1.53.0 |
| Добавлено: • “02_2.3_18 Процедура регистрации FCM токена” • “02_2.3_19 Процедура удаления FCM токена” • Ошибка “0233” в “02_2.2_4.1 Ошибки при выполнении процедуры 02_2.2_4” • “FR_02_2.3_17_1”, “FR_02_2.3_17_2”, “FR_02_2.3_18_1”. Изменено: • В “02_2.3_17 Процедура изменения настроек уведомления” добавлена инициация “02_2.3_18 Процедура регистрации FCM токена” при изменении “Статуса активности” push на “true” • В “02_2.3_11 Процедура удаления Пользователя” добавлено удаление “FCM токенов” пользователя • “2.1.4 Параметры подписки на уведомления(user_subscription_on_notification)” заменена на “2.1.4 Параметры FCM токена(fcm_tokens)” • В “02_2.3_4 Процедура верификации email” добавлен этап “4” — отказ в авторизации “Представителя бизнеса” при значении заголовка “X-Platform” “ios” или “android” • В “02_2.3_12 Процедура деавторизации Пользователя” отписка от push-уведомлений заменена на “02_2.3_19 Процедура удаления FCM токена”. |
||||
| №63 | Дата: 14.09.26 | Автор:Ляшук Андрей | RFC: RPL-2901 | Версия: 1.54.0 |
| Добавлено: В “2.1.1 Параметры пользователя(users)” параметры “Свойство установки приложения iOS” (is_ios_app_installed) и “Свойство установки приложения Android” (is_android_app_installed). |
||||
| №64 | Дата: 24.09.26 | Автор:Ляшук Андрей | RFC: RPL-2921 | Версия: 1.55.0 |
| Изменено: В “02_2.3_6 Процедура создания Локаций при регистрации” ranges_quantity_followers фильтра настроек для инфлюенсера формируется согласно “FR_03_9_1”. |
||||
| №65 | Дата: 29.09.26 | Автор:Ляшук Андрей | RFC: RPL-2929 | Версия: 1.56.0 |
| Добавлено: “02_3.2_14 Процедура определения имени в сервисе Instagram”. Изменено: • “02_2.3_7 Процедура сохранения данных Инфлюэнсера при регистрации” - “username” определяется согласно “02_3.2_14” • “02_3.2_6 Процедура импорта списка инфлюэнсеров”, “02_3.2_7 Процедура импорта списка инфлюэнсеров с созданием профилей” - нормализация записей согласно “02_3.2_14”. |
1. Пользователи системы¶
Пользователем системы является лицо, использующее сервис Rippla.
В рамках системы определяются следующие классы пользователей:
| Класс | Описание |
|---|---|
| Администратор | Пользователь панели администратора. |
| Инфлюенсер | Пользователь который выполнил процедуру аутентификации в web-приложении и был авторизован как Инфлюэнсер. |
| Представитель бизнеса | Пользователь который выполнил процедуру аутентификации в web-приложении и был авторизован как Представитель бизнеса. |
| Сотрудник поддержки | Пользователь который выполнил процедуру аутентификации в web-приложении и был авторизован как Сотрудник поддержки. |
2. Пользователь¶
2.1 Данные Пользователя¶
2.1.1 Параметры пользователя(users)¶
| Название | Параметр | Формат | Обяз. | Уник. | Примечание |
|---|---|---|---|---|---|
| Идентификатор | id | bigserial | да | да | |
| Дата создания | created_at | timestamp | да | нет | |
| Дата обновления | updated_at | timestamp | нет | нет | |
| Дата удаления | deleted_at | timestamp | нет | нет | |
| Роль | role | enum | да | нет | Возможны следующие роли: 1 - influencer; 2 - business_representative; 3 - support. |
| Статус блокировки | is_blocked | boolean | да | нет | |
| varchar(255) | нет | нет | Уникален для пользователей, для которых не имеется “Даты удаления”. Допустимы символы только в нижнем регистре. | ||
| Полное имя | full_name | varchar(255) | нет | нет | |
| Номер телефона | phone | varchar(255) | нет | нет | |
| Мессенджеры | messengers | json | нет | нет | Структура данных в формате JSON "2.1.1_1 Мессенджеры” |
| Описание | description | text | нет | нет | |
| Аккаунты | accounts | json | нет | нет | |
| Идентификатор пользователя в stripe | stripe_customer_id | varchar(255) | нет | да | |
| Параметры строки запроса при первой регистрации | query_params | json | нет | нет | |
| Предпочитаемая локаль | preferred_locale | enum | нет | нет | Согласно “NFR_01_2.1.7_1 Возможные локали”. |
| Идентификатор аккаунта в Firebase | firebase_uid | varchar(255) | нет | да | |
| Идентификатор пользователя для создания контакта уведомления | user_uuid_for_create_notification_contact | uuid | да | да | |
| Сопроводительное сообщение | accompanying_message | text | нет | нет | |
| Настройки уведомлений | notification_settings | json | да | нет | Структура данных в формате JSON "2.1.1_2 Уведомления” |
| Свойство установки pwa | is_pwa_installed | boolean | да | нет | По умолчанию false. |
| Свойство установки приложения iOS | is_ios_app_installed | boolean | да | нет | По умолчанию false. |
| Свойство установки приложения Android | is_android_app_installed | boolean | да | нет | По умолчанию false. |
2.1.1_1 Мессенджеры
| Параметр | Описание | Значение |
|---|---|---|
| messengers | Массив который содержит аккаунты мессенджеров пользователя | Элемент массива представляет собой объект “2.1.1.1_1.1 Messenger”. |
2.1.1_1.1 Messenger
| Параметр | Описание | Значение |
|---|---|---|
| service_id | Идентификатор сервиса | |
| account | Username указанный пользователем |
Пример:
{
"messengers": [
{
"service_id": 1,
"account": "username"
}
]
}
2.1.1_2 Notification settings
| Параметр | Описание | Значение |
|---|---|---|
| notification_settings | Массив который содержит настройки уведомлений | Элемент массива представляет собой объект “2.1.1_2.1 Notification setting”. |
2.1.1_2.1 Notification setting
| Параметр | Описание | Значение |
|---|---|---|
| push | Объект который содержит настройки для push-уведомления | Структура и состав параметров приведены в “2.1.1_2.1_1”. |
| Объект который содержит настройки для push-уведомления | Структура и состав параметров приведены в “2.1.1_2.1_2”. |
2.1.1_2.1_1
| Параметр | Описание | Значение |
|---|---|---|
| is_active | Статус активности | Возможны следующие значения: true; false. По умолчанию true. |
2.1.1_2.1_2
| Параметр | Описание | Значение |
|---|---|---|
| is_active | Статус активности | Возможны следующие значения: true; false. По умолчанию true. |
| interval | Интервал | Возможны следующие значения: 1 - once_an_hour; 2 - every_4_hours; 3 - once_a_day. По умолчанию once_a_day. |
2.1.2 Параметры контакта уведомления(notification_contact)¶
| Название | Параметр | Формат | Обяз. | Уник. | Примечание |
|---|---|---|---|---|---|
| Идентификатор | id | bigserial | да | да | |
| Дата создания | created_at | timestamp | да | нет | |
| Дата обновления | updated_at | timestamp | нет | нет | |
| Дата удаления | deleted_at | timestamp | нет | нет | |
| Идентификатор сервиса | service_id | smallint | да | нет | |
| Идентификатор контакта | service_contact_id | varchar(255) | да | нет | |
| Статус активности | is_active | boolean | да | нет | По умолчанию true. |
| Интервал | interval | enum | да | нет | Возможны следующие значения: 1 - once_an_hour; 2 - every_4_hours; 3 - once_a_day. По умолчанию once_a_day. |
| Идентификатор пользователя | user_id | bigint | да | нет | |
| Индексы | Параметры | ||||
| Уникальный индекс | service_id, service_contact_id |
2.1.3 Параметры сессии пользователя(user_sessions)¶
| Название | Параметр | Формат | Обяз. | Уник. | Примечание |
|---|---|---|---|---|---|
| Идентификатор | id | varchar(255) | да | да | |
| Дата создания | created_at | timestamp | да | нет | |
| Дата обновления | updated_at | timestamp | нет | нет | |
| Идентификатор пользователя | user_id | bigint | да | нет | |
| Свойство создания кампании | is_campaign_created | boolean | да | нет | По умолчанию false. |
| Свойство создания локации | is_location_created | boolean | да | нет | По умолчанию false. |
| Свойство просмотра коллаборации | is_collaboration_viewed | boolean | да | нет | По умолчанию false. |
| Свойство просмотра сообщения коллаборации | is_collaboration_message_viewed | boolean | да | нет | По умолчанию false. |
| Свойство создания сообщения | is_message_created | boolean | да | нет | По умолчанию false. |
| Свойство создания коллаборации | is_collaboration_created | boolean | да | нет | По умолчанию false. |
2.1.4 Параметры FCM токена(fcm_tokens)¶
«FCM токен» является уникальным идентификатором устройства, на которое должны отправляться push-уведомления.
2.2 Авторизация пользователя¶
Для авторизации Пользователя используется JWT (Json Web Token).
2.2.1 Буфер проверки email-ов¶
Буфер проверки email-ов предназначен аутентификации пользователя при выполнении авторизации в сервисе.
Запись в буфере проверки email-ов представляет собой запись в формате “Ключ”:”Значение” где:
- Ключ - email, который был указан пользователем;
- Значение - Структура данных в формате JSON “02_2.2.1_1”.
02_2.2.1_1
| Параметр | Описание | Значение |
|---|---|---|
| code_hash | Хэш кода верификации.Обязательно. | |
| role | Роль пользователя. Обязательна при регистрации. | |
| query_params | Объект который содержит все параметры которые содержатся в URL страницы. |
Пример:
{
"code_hash": "code_hash",
"service" : "Instagram",
"role" : "influencer",
"username": "username",
"query_params": {
"utm_id" : "example",
"utm_source" : "example"
}
}
FR_02_2.2.1_2 Срок хранения записи в буфере проверки email-ов
Срок хранения записи в буфере проверки email-ов - 1 час.
02_2.2.1_3 Процедура добавления записи в буфер проверки email-ов
- Инициируется процедура добавления записи в буфер проверки email-ов с параметрами:
- email;
- role;
- service;
- query_params.
- Генерируется “Код верификации” email согласно следующим требованиям:
- Случайное число из 6 символов.
- Выполняется хэширования “Кода верификации”.
- Если в Буфере проверки email-ов, имеется запись, значение ключа которой соответствует значению параметра “email”, выполняется изменение значения данной записи согласно:
- code_hash - “Хэш кода верификации”, который был сгенерирован на этапе “2_а” данной процедуры;
- role - указанная при инициации данной процедуры;
- service - указанный при инициации данной процедуры;
- query_params - указанный при инициации данной процедуры.
- Если в Буфере проверки email-ов, не имеется записи, значение ключа которой соответствует значению параметра “email”, выполняется создание записи в “Буфере проверки email-ов”, с параметрами:
- Ключ - email, который был указан при инициации данной процедуры и приведенный к нижнему регистру;
- Значение:
- code_hash - “Хэш кода верификации”, который был сгенерирован на этапе “2_а” данной процедуры;
- role - указанная при инициации данной процедуры;
- service - указанный при инициации данной процедуры;
- username - указанный при инициации данной процедуры;
- query_params - указанный при инициации данной процедуры.
- Инициатору процедуры возвращается “Код верификации” который был сгенерирован на этапе “2_а” данной процедуры.
2.2.2 Токен авторизации¶
Параметры для генерации токена:
| Параметр | Название | Описание |
|---|---|---|
| Секретный ключ | secret_key | Указывается в конфигурации системы. |
| Время жизни токена | token_ttl: | Значение в секундах: 7776000. |
| Алгоритм шифрования | signature_algorithm | HS256 |
| ID Пользователя | user_id | Используется для генерации токена пользователя с ролью “Сотрудник поддержки” для использования сервиса под учетной записью другого пользователя с ролью: Инфлюэнсер; Представитель бизнеса. |
2.2.3 Токен обновления¶
Параметры для генерации токена:
| Параметр | Название | Описание |
|---|---|---|
| Время жизни токена | token_ttl: | Значение в секундах: 15638400. |
2.2.3.1 Параметры Токена обновления(refresh_tokens)¶
| Название | Параметр | Формат | Обяз. | Уник. | Примечание |
|---|---|---|---|---|---|
| Идентификатор | id | bigserial | да | да | |
| Токен обновления | refresh_token | varchar(255) | да | нет | |
| Пользователь | user_id | bigint | да | нет | |
| Срок действия | valid | timestamp | да | нет |
2.2.3.2 Процедура удаления просроченных Токенов обновления¶
Процедура должна выполняться каждый день в 00:01 UTC+0.
Процедура:
- Выполняется определение Токенов обновления которые должны быть удалены. Токен обновления должен быть удален если “Срок действия” токена обновления ранее текущей даты и времени.
- Удаляется каждый Токен обновления, который был определен на этапе “1” данной процедуры.
2.3 CRUD Пользователя¶
02_2.3_1 Процедура получение кода верификации email при авторизации¶
- Клиентской частью сервиса выполняется запрос “Request an email confirmation code for a registered user” с параметрами:
- email - email который был указан пользователем;
- Если email не соответствует требованиям валидации email:
- На запрос “Request an email confirmation code for a registered user” возвращается ошибка “0201”;
- Дальнейшие этапы процедуры не выполняются.
- Если email соответствует требованиям валидации email выполняется этап “3” данной процедуры.
- Если не имеется “Пользователя”, “email” которого соответствует значению параметра “email” который был указан при инициации данной процедуры:
- На запрос “Request an email confirmation code for a registered user” возвращается ошибка “0202”;
- Дальнейшие этапы процедуры не выполняются.
- Если имеется “Пользователь”, “email” которого соответствует значению параметра “email” который был указан при инициации данной процедуры, и “Роль” данного “Пользователя” - “Представитель бизнеса”, а значение заголовка “X-Platform” - “ios” или “android”:
- На запрос “Request an email confirmation code for a registered user” возвращается ошибка “0234”;
- Дальнейшие этапы процедуры не выполняются.
- Если имеется “Пользователь”, “email” которого соответствует значению параметра “email” который был указан при инициации данной процедуры и выполняется “02_2.2_2 Процедура создания кода верификации email” с параметрами:
- Идентификатор пользователя - Идентификатор пользователя, который был определен на этапе “3_c” данной процедуры.
- Идентификатор динамического шаблона. Если “Роль” пользователя, который был определен на этапе “3_c” данной процедуры:
- “Инфлюэнсер” - 1;
- “Представитель бизнеса” - 2.
-
- Если “02_2.2_2 Процедура создания кода верификации email” не выполнена и:
- Причина не выполнения процедуры “Проблема с созданием кода верификации” на запрос “Request an email confirmation code for a registered user” возвращается ошибка “0203”;
- Причина не выполнения процедуры “Email-сервис не доступен” на запрос “Request an email confirmation code for a registered user” возвращается ошибка “0204”;
- Причина не выполнения процедуры “Email-сервис ответил некорректно” на запрос “Request an email confirmation code for a registered user” возвращается ошибка “0205”;
- Если “02_2.2_2 Процедура создания кода верификации email” выполнена успешно на запрос “Request an email confirmation code for a registered user” возвращается информация об успешном выполнении запроса.
- Если “02_2.2_2 Процедура создания кода верификации email” не выполнена и:
02_2.2_1.1 Ошибки при выполнении процедуры 02_2.2_1
| Код ошибки | Этап | Локаль | Текст ошибки |
|---|---|---|---|
| 0201 | 2_a | en | “Please input correct email” |
| es | “Introduce un correo electrónico válido” | ||
| pt | “Introduza o e-mail correto” | ||
| fr | |||
| 0234 | 3_b | en | “Business accounts are managed on the web (code 0234)” |
| es | “Las cuentas de empresa se gestionan en la versión web (código 0234)” | ||
| pt | “As contas de empresa são geridas na versão web (código 0234)” | ||
| de | „Geschäftskonten werden in der Web-Version verwaltet (Code 0234)“ | ||
| 0202 | 3_a | en | “We couldn’t find a user with that email. Please check if you’ve entered a valid email or sign up if you don’t have an account” |
| es | “No hemos encontrado usuario alguno con ese correo electrónico. Comprueba que sea válido o regístrate si no tienes cuenta” | ||
| pt | "Não foi possível encontrar um utilizador com esse e-mail. Verifique se introduziu um e-mail válido ou registe-se se não tiver uma conta" | ||
| fr | |||
| 0203 | 3_d_i_1 | en | “Internal error, please try again (code 0203)” |
| es | "Error interno, inténtalo de nuevo más tarde (código: 0203)" | ||
| pt | “Erro interno, tente novamente (código 0203)” | ||
| fr | |||
| 0204 | 3_d_i_2 | en | “The email service is unavailable, please try again (code 0204)” |
| es | “El servicio de correo electrónico no está disponible, inténtalo de nuevo más tarde (código: 0204)” | ||
| pt | “O serviço de e-mail não está disponível, tente novamente (código 0204)” | ||
| fr | |||
| 0205 | 3_d_i_3 | en | “The email service is unavailable, please try again (code 0205)” |
| es | “El servicio de correo electrónico no está disponible, inténtalo de nuevo más tarde (código: 0205)” | ||
| pt | “O serviço de e-mail não está disponível, tente novamente (código 0205)” | ||
| fr |
02_2.3_2 Процедура cоздания кода верификации email¶
- Инициируется процедура cоздания кода верификации email с параметрами:
- Идентификатор динамического шаблона;
- Идентификатор пользователя;
- email;
- role;
- query_params;
- locale.
- Выполняется “02_2.2.1_3 Процедура добавления записи в буфер проверки email-ов” с параметрами:
- email - email, который был указан при инициации данной процедуры;
- role - role, которая была указана при инициации данной процедуры;
- query_params - query_params, который был указан при инициации данной процедуры.
- Если “02_2.2.1_3 Процедура добавления записи в буфер проверки email-ов” не выполнена процедура является не выполненной, причина невыполнения: “Проблема с созданием кода верификации”. Дальнейшие этапы процедуры не выполняются;
- Если “02_2.2.1_3 Процедура добавления записи в буфер проверки email-ов” выполнена успешно, выполняется этап “4” данной процедуры;
- Выполняется создание “Уведомления” с параметрами:
- Дата создания - согласно текущей дате;
- Идентификатор пользователя - Идентификатор пользователя, который был указан при инициации данной процедуры;
- Тип - email;
- Идентификатор динамического шаблона - Идентификатор динамического шаблона, который был указан при инициации данной процедуры;
- Статус - “new”.
- Выполняется “01.1_1.2_1 Процедура отправки email-уведомлений через сервис Sendgrid” с параметрами:
- Идентификатор уведомления - которое было создано на этапе “4” данной процедуры.
- Код верификации - который был получен на этапе “3_b” данной процедуры;
- Локаль - Согласно значению параметра “locale”, который был указан при инициации данной процедуры.
- Если “01.1_1.2_1 Процедура отправки email-уведомлений через сервис Sendgrid” не выполнена и:
- Причина не выполнения процедуры “Email-сервис не доступен” Процедура является не выполненной, причина невыполнения: “Email-сервис не доступен”. Дальнейшие этапы процедуры не выполняются;
- Причина не выполнения процедуры “Email-сервис ответил не корректно” процедура является не выполненной, причина не выполнения: “Email-сервис ответил не корректно”. Дальнейшие этапы процедуры не выполняются.
- Если “01.1_1.2_1 Процедура отправки email-уведомлений через сервис Sendgrid” выполнена успешно процедура является успешно выполненной.
02_2.3_3 Процедура получение кода верификации email при регистрации¶
- Клиентской частью сервиса выполняется запрос “Request an email verification code for a new user” с телом запроса:
- email;
- role:
- influencer;
- business_representative.
- query_params - объект который содержит все параметры которые содержатся в URL страницы, на которой был инициирован запрос “Request an email verification code for a new user”. Добавляется если имеется минимум один параметр в URL страницы.
- Если email не соответствует требованиям валидации email на запрос “Request an email verification code for a new user” возвращается ошибка “0206”.
- Если значение параметра “role”, который был указан при инициации данной процедуры - “business_representative”, а значение заголовка “X-Platform” - “ios” или “android”:
- На запрос “Request an email verification code for a new user” возвращается ошибка “0235”;
- Дальнейшие этапы процедуры не выполняются.
- Если email соответствует требованиям валидации email выполняется этап “3” данной процедуры.
- Если значение параметра “role” - “influencer” и “email” который был указан при инициации данной процедуры:
- Соответствует значению параметра “email” одного из “Пользователей”:
- “email” которого соответствует значению параметра “email” который был указан при инициации данной процедуры:
- Выполняется выполняется “02_2.2_2 Процедура создания кода верификации email” с параметрами:
- Идентификатор динамического шаблона - 1;
- Идентификатор пользователя - Идентификатор пользователя, который был определен на этапе “3_a_i_1_a” данной процедуры;
-
- Если “02_2.2_2 Процедура создания кода верификации email” не выполнена и:
- Причина не выполнения процедуры “Проблема с созданием кода верификации” на запрос “Request an email verification code for a new user” возвращается ошибка “0207”;
- Причина не выполнения процедуры “Email-сервис не доступен” на запрос “Request an email verification code for a new user” возвращается ошибка “0208”;
- Причина не выполнения процедуры “Email-сервис ответил некорректно” на запрос “Request an email verification code for a new user” возвращается ошибка “0209”;
- Если “02_2.2_1 Процедура создания кода верификации email” выполнена успешно на запрос “Request an email verification code for a new user” возвращается информация об успешном выполнении запроса.
- Если “02_2.2_2 Процедура создания кода верификации email” не выполнена и:
- Не соответствует значению параметра “email” всех “Пользователей”:
- Выполняется “02_2.2_2 Процедура создания кода верификации email” с параметрами:
- Идентификатор динамического шаблона - 3;
- email - email, который был указан при инициации данной процедуры;
- role - “influencer”;
- query_params - query_params, который был указан при инициации данной процедуры;
- locale - Согласно значению заголовка “Accept-Language”, который был получен в ответе на запрос “Request an email verification code for a new user”.
- Если “02_3.2_2 Процедура создания кода верификации email” не выполнена и:
- Причина не выполнения процедуры “Проблема с созданием кода верификации” на запрос “Request an email verification code for a new user” возвращается ошибка “0211”;
- Причина не выполнения процедуры “Email-сервис не доступен” на запрос “Request an email verification code for a new user” возвращается ошибка “0212”;
- Причина не выполнения процедуры “Email-сервис ответил некорректно” на запрос “Request an email verification code for a new user” возвращается ошибка “0213”;
- Если “02_2.2_2 Процедура создания кода верификации email” выполнена успешно на запрос “Request an email verification code for a new user” возвращается информация об успешном выполнении запроса.
- “email” которого соответствует значению параметра “email” который был указан при инициации данной процедуры:
- Соответствует значению параметра “email” одного из “Пользователей”:
- Если значение параметра “role” - “business_representative” и:
- Не имеется “Пользователя”, “email” которого соответствует значению параметра “email” который был указан при инициации данной процедуры:
- Выполняется “02_2.2_2 Процедура создания кода верификации email” с параметрами:
- Идентификатор динамического шаблона - 4;
- role - “business_representative”;
- email - email, который был указан при инициации данной процедуры;
- query_params - query_params, который был указан при инициации данной процедуры;
- locale - Согласно значению заголовка “Accept-Language”, который был получен в ответе на запрос “Request an email verification code for a new user”.
-
- Если “02_2.2_2 Процедура создания кода верификации email” не выполнена и:
- Причина не выполнения процедуры “Проблема с созданием кода верификации” на запрос “Request an email verification code for a new user” возвращается ошибка “0217”;
- Причина не выполнения процедуры “Email-сервис не доступен” на запрос “Request an email verification code for a new user” возвращается ошибка “0218”;
- Причина не выполнения процедуры “Email-сервис ответил некорректно” на запрос “Request an email verification code for a new user” возвращается ошибка “0219”;
- Если “02_2.2_2 Процедура создания кода верификации email” выполнена успешно на запрос “Request an email verification code for a new user” возвращается информация об успешном выполнении запроса.
- Выполняется “02_2.2_2 Процедура создания кода верификации email” с параметрами:
- Если имеется “Пользователь”, “email” которого соответствует значению параметра “email” который был указан при инициации данной процедуры:
- Выполняется “02_2.2_2 Процедура создания кода верификации email” с параметрами:
- Идентификатор динамического шаблона - 2;
- Идентификатор пользователя - Идентификатор пользователя, который был определен на этапе “3_b_ii” данной процедуры;
-
- Если “02_2.2_2 Процедура создания кода верификации email” не выполнена и:
- Причина не выполнения процедуры “Проблема с созданием кода верификации” на запрос “Request an email verification code for a new user” возвращается ошибка “0220”;
- Причина не выполнения процедуры “Email-сервис не доступен” на запрос “Request an email verification code for a new user” возвращается ошибка “0221”;
- Причина не выполнения процедуры “Email-сервис ответил некорректно” на запрос “Request an email verification code for a new user” возвращается ошибка “0222”;
- Если “02_2.2_1 Процедура создания кода верификации email” выполнена успешно на запрос “Request an email verification code for a new user” возвращается информация об успешном выполнении запроса.
- Выполняется “02_2.2_2 Процедура создания кода верификации email” с параметрами:
- Не имеется “Пользователя”, “email” которого соответствует значению параметра “email” который был указан при инициации данной процедуры:
02_2.2_3.1 Ошибки при выполнении процедуры 02_2.2_3
| Код ошибки | Этап | Локаль | Текст ошибки |
|---|---|---|---|
| 0206 | 2_a | en | “Please input correct email” |
| es | “Introduce un correo electrónico válido” | ||
| pt | “Introduza o e-mail correto” | ||
| fr | |||
| 0235 | 2_b | en | “Business accounts are managed on the web (code 0235)” |
| es | “Las cuentas de empresa se gestionan en la versión web (código 0235)” | ||
| pt | “As contas de empresa são geridas na versão web (código 0235)” | ||
| de | „Geschäftskonten werden in der Web-Version verwaltet (Code 0235)“ | ||
| 0207 | 3_b_ii_1 | en | “Internal error, please try again (code 0207)” |
| es | “Error interno, inténtalo de nuevo más tarde (código: 0207)” | ||
| pt | “Erro interno, tente novamente (código 0207)” | ||
| fr | |||
| 0208 | 3_b_v_1_a | en | “The email service is unavailable, please try again (code 0208)” |
| es | “El servicio de correo electrónico no está disponible, inténtalo de nuevo más tarde (código: 0208)” | ||
| pt | “O serviço de e-mail não está disponível, tente novamente (código 0208)” | ||
| fr | |||
| 0209 | 3_b_v_1_b | en | “The email service is unavailable, please try again (code 0209)” |
| es | “El servicio de correo electrónico no está disponible, inténtalo de nuevo más tarde (código: 0209)” | ||
| pt | “O serviço de e-mail não está disponível, tente novamente (código 0209)” | ||
| fr | |||
| 0211 | 3_b_ii_1 | en | “Internal error, please try again (code 0211)” |
| es | "Error interno, inténtalo de nuevo más tarde (código: 0211)" | ||
| pt | “Erro interno, tente novamente (código 0211)” | ||
| fr | |||
| 0212 | 3_b_v_1_a | en | “The email service is unavailable, please try again (code 0212)” |
| es | "El servicio de correo electrónico no está disponible, inténtalo de nuevo más tarde (código: 0212)" | ||
| pt | “O serviço de e-mail não está disponível, tente novamente (código 0212)” | ||
| fr | |||
| 0213 | 3_b_v_1_b | en | “The email service is unavailable, please try again (code 0213)” |
| es | "El servicio de correo electrónico no está disponible, inténtalo de nuevo más tarde (código: 0213)" | ||
| pt | “O serviço de e-mail não está disponível, tente novamente (código 0213)” | ||
| fr | |||
| 0217 | 3_b_ii_1 | en | “Internal error, please try again (code 0217)” |
| es | "Error interno, inténtalo de nuevo más tarde (código: 0217)" | ||
| pt | “Erro interno, tente novamente (código 0217)” | ||
| fr | |||
| 0218 | 3_b_v_1_a | en | “The email service is unavailable, please try again (code 0218)” |
| es | "El servicio de correo electrónico no está disponible, inténtalo de nuevo más tarde (código: 0218)" | ||
| pt | “O serviço de e-mail não está disponível, tente novamente (código 0218)” | ||
| fr | |||
| 0219 | 3_b_v_1_b | en | “The email service is unavailable, please try again (code 0219)” |
| es | "El servicio de correo electrónico no está disponible, inténtalo de nuevo más tarde (código: 0219)" | ||
| pt | “O serviço de e-mail não está disponível, tente novamente (código 0219)” | ||
| fr | |||
| 0220 | 3_b_ii_1 | en | “Internal error, please try again (code 0220)” |
| es | "Error interno, inténtalo de nuevo más tarde (código: 0220)" | ||
| pt | “Erro interno, tente novamente (código 0220)” | ||
| fr | |||
| 0221 | 3_b_v_1_a | en | “The email service is unavailable, please try again (code 0221)” |
| es | "El servicio de correo electrónico no está disponible, inténtalo de nuevo más tarde (código: 0221)" | ||
| pt | “O serviço de e-mail não está disponível, tente novamente (código 0221)” | ||
| fr | |||
| 0222 | 3_b_v_1_b | en | “The email service is unavailable, please try again (code 0222)” |
| es | "El servicio de correo electrónico no está disponible, inténtalo de nuevo más tarde (código: 0222)" | ||
| pt | “O serviço de e-mail não está disponível, tente novamente (código 0222)” | ||
| fr |
02_2.3_4 Процедура верификации email¶
- Клиентской частью сервиса выполняется запрос “Email verification” с параметрами которые были указаны пользователем:
- email;
- verificationCode.
- Если в “Буфере проверки email-ов” не имеется ключа, который соответствует значению параметра “email”, который был указан при инициации данной процедуры на запрос “Email verification” возвращается ошибка “0223”
- Если в “Буфере проверки email-ов” имеется ключ, который соответствует значению параметра “email”, который был указан при инициации данной процедуры и:
- Результат хэширования значения параметра “verificationCode”, который был указан при инициации данной процедуры, не соответствует значению параметра “code_hash”, ключа в “Буфере проверки email-ов” на запрос “Email verification” возвращается ошибка “0224”;
- Результат хэширования значения параметра “verificationCode”, который был указан при инициации данной процедуры, соответствует значению параметра “code_hash”, ключа в “Буфере проверки email-ов” выполняется этап “3” данной процедуры;
- Если значение заголовка “X-Platform”, который был получен в запросе “Email verification” - “ios” или “android” и:
- Имеется “Пользователь” значение параметра “email” которого соответствует ключу, который был определен на этапе “2_b_ii” данной процедуры, “Роль” которого - “Представитель бизнеса”;
- Не имеется “Пользователя” значение параметра “email” которого соответствует ключу, который был определен на этапе “2_b_ii” данной процедуры, и значение параметра “role”, ключа в “Буфере проверки email-ов” - “business_representative” —
на запрос “Email verification” возвращается ошибка “0233”. Дальнейшие этапы данной процедуры не выполняются.
4.
1. Если не имеется “Пользователя” значение параметра “email” которого соответствует ключу, который был определен на этапе “2_b_ii” данной процедуры, выполняется:
1. Создание “Пользователя” с параметрами:
1. Дата создания - согласно текущей дате;
2. Роль - согласно значению параметра “role”, ключа в “Буфере проверки email-ов”;
3. Статус блокировки - false;
4. Email - согласно ключу в “Буфере проверки email-ов”;
5. Параметры строки запроса при первой регистрации - согласно значению параметра “query_params”, ключа в “Буфере проверки email-ов”;
6. Предпочитаемая локаль - Согласно значению заголовка “Accept-Language”, который был получен в запросе “Email verification”;
7. Идентификатор пользователя для создания контакта уведомления - uuid.
2. Выполняется добавление сообщения в очередь “Отправки событий в Make” с параметрами:
1. event_type - Создание пользователя;
2. entity_id - Идентификатор пользователя который был создан на этапе “4_a_i” данной процедуры.
2. Если имеется “Пользователь” значение параметра “email” которого соответствует ключу, который был определен на этапе “2_b_ii” данной процедуры, выполняется этап “5” данной процедуры.
5.
1. Выполняется “02_2.3_4_1 Процедура генерации токена авторизации и обновления” с параметрами:
1. Идентификатор пользователя - “Идентификатор пользователя” который был определен на этапе “4” данной процедуры;
2. На запрос “Email verification” возвращается:
1. “Токен авторизации”, который был сгенерирован на этапе “5_a” данной процедуры;
2. “Токен обновления”, который был сгенерирован на этапе “5_a” данной процедуры.
6. Клиентской частью сервиса выполняется:
1. Сохранение в LocalStorage:
1. Ключа “accessToken” со значением которое соответствует значению параметра “accessToken” которое было получено в ответе на запрос “Email verification”;
2. Ключа “refreshToken” со значением которое соответствует значению параметра “refresh_token” которое было получено в ответе на запрос “Email verification”.
2. Запрос “Get user data”.
3. Если запрос “Get user data” выполнен:
1. Не успешно, дальнейшие этапы процедуры не выполняются.
2. Успешно, выполняется переход к странице которая соответствует состоянию пользователя.
02_2.2_4.1 Ошибки при выполнении процедуры 02_2.2_4
| Код ошибки | Этап | Локаль | Текст ошибки |
|---|---|---|---|
| 0223 | 2_a | en | “Email not found, please contact support (code 0223)” |
| es | “No se ha encontrado la dirección de e-mail, contacta con soporte (código 0223)” | ||
| pt | “E-mail não encontrado, contacte o serviço de apoio (código 0223)” | ||
| fr | |||
| 0224 | 2_b_i | en | “Looks like the verification code you entered is incorrect. Please check the code in your email or request a new one” |
| es | "Parece que el código de verificación que has introducido no es correcto. Comprueba el código en tu correo electrónico o solicita uno nuevo" | ||
| pt | "Parece que o código de verificação que introduziu está incorreto. Verifique o código no seu e-mail ou solicite um novo código" | ||
| fr | |||
| 0233 | 3 | en | “Business accounts are managed on the web (code 0233)” |
| es | “Las cuentas de empresa se gestionan en la versión web (código 0233)” | ||
| pt | “As contas de empresa são geridas na versão web (código 0233)” | ||
| de | „Geschäftskonten werden in der Web-Version verwaltet (Code 0233)“ |
02_2.3_4_1 Процедура генерации токена авторизации и обновления¶
- Выполняется инициация данной процедуры с параметрами:
- Идентификатор пользователя.
- Генерируется “Токен авторизации”;
- Генерируется “Токен обновления”;
- Выполняется создание “Токена обновления” с параметрами:
- Токен обновления - Токен который был сгенерирован на этапе “2_b” данной процедуры;
- Пользователь - “Идентификатор” пользователя для которого инициирована данная процедура;
- Срок действия - текущая дата + “Время жизни токена” обновления.
- Инициатору данной процедуры возвращается “Токен авторизации” и “Токен обновления” которые были созданы на этапе “2” данной процедуры.
02_2.3_5 Процедура сохранения данных Представителя бизнеса при регистрации¶
API: POST /private/registration/business_representative/full_name
- Клиентской частью сервиса выполняется запрос “Create a business representative” с параметрами:
- “full_name”;
- “business_role”;
- “phone”.
- Если для Пользователя, который инициировал данную процедуру:
- Имеется минимум один “Представитель бизнеса” на запрос “Create a business representative” возвращается ошибка “0225”;
- Не имеется ни одного “Представителя бизнеса” выполнятся этап “3” данной процедуры.
- Выполняется:
- Создание “Бизнеса” с параметрами:
- Идентификатор регистратора - “Идентификатор” пользователя который инициировал данную процедуру;
- Статус активности - true;
- Код страны плательщика - “PT”.
- Создание “Представителя бизнеса” с параметрами:
- Идентификатор бизнеса - Идентификатор бизнеса который был создан на этапе “2_a” данной процедуры;
- Идентификатор пользователя - “Идентификатор” пользователя который инициировал данную процедуру;
- Бизнес роль - согласно значению параметра “business_role”, который был указан при инициации данной процедуры.
- Изменение параметров Пользователя, который инициировал данную процедуру:
- Полное имя - изменяется согласно значению параметра “full_name”, которое было указано при инициации данной процедуры;
- Номер телефона - “phone” который был указан при инициации данной процедуры.
- На запрос “Create a business representative” возвращается информация о состоянии пользователя.
- Клиентской частью сервиса выполняется переход к странице которая соответствует состоянию пользователя.
02_2.2_5.1 Ошибки при выполнении процедуры 02_2.2_5
| Код ошибки | Этап | Локаль | Текст ошибки |
|---|---|---|---|
| 0225 | 2_a | en | “Business is already registered, please reload the page (code 0225)” |
| es | "Este negocio ya está registrado, recarga la página (código: 0225)" | ||
| pt | “A empresa já está registada, recarregue a página (código 0225)” | ||
| fr |
02_2.3_6 Процедура создания Локаций при регистрации¶
API: POST /private/registration/business_representative/locations
- Клиентской частью сервиса выполняется запрос “Create locations on registration” с параметрами:
- Массив локаций, элемент массива состоит из следующих параметров:
- “location_type_id”;
- “name”;
- “city_id”;
- “web_link”;
- “map_link”;
- “instagram_username”.
- Если для “Бизнеса” к которому относится “Бизнес представитель”, к которому относится Пользователь который инициировал данную процедуру:
-
Если при инициации данной процедуры:
-
Не был указан ни один из параметров:
- “web_link”;
- “map_link”;
- “instagram_username”.
на запрос “Create locations on registration” возвращается ошибка “0232”.
-
Был указан один из параметров:
- “web_link”;
- “map_link”;
- “instagram_username”.
выполняется этап “3” данной процедуры.
-
-
Выполняется:
- Если значение параметра “web_link”, который был указан при инициации данной процедуры начинается не с подстроки “http://” или “https://” выполняется “06_5_4 Процедура обработки ссылки web_link” с параметром “web_link” который был указан при выполнении запроса;
- Если значение параметра “map_link”, который был указан при инициации данной процедуры начинается не с подстроки “http://” или “https://” выполняется “06_5_5 Процедура обработки ссылки map_link” с параметром “map_link” который был указан при выполнении запроса;
- Если значение параметра “instagram_username”, который был указан при инициации данной процедуры начинается не с подстроки “http://” или “https://” выполняется “06_5_6 Процедура обработки ссылки instagram_username” с параметром “instagram_username” который был указан при выполнении запроса.
- Создание “Локации” для каждого элемента массива, который был указан при выполнении запроса “Create locations” c параметрами:
- Дата создания - согласно текущей дате;
- Статус активности - true;
- Идентификатор бизнеса - “Идентификатор” бизнеса к которому относится “Бизнес представитель”, к которому относится Пользователь который инициировал данную процедуру;
- Идентификатор вида локации - согласно значению параметра “location_type_id” элемента массива;
- Заголовок - согласно значению параметра “name” элемента массива;
- Идентификатор города - согласно значению параметра “city_id” элемента массива;
- Ссылка на локацию в web-сервисе - согласно значению параметра “web_link” элемента массива.
- Выполняется изменение “Бизнеса”, к которому относится “Локация” которая была создана первой на этапе “3_b” данной процедуры:
- Код страны плательщика - Код страны, к которому относится город, который был указан при инициации данной процедуры;
- Если среди элементов массива, которые были указаны при инициации данной процедуры, "Тип локации" одного из которых "Отель" - Отель - true.
- В очередь “Запросы к сервису Trackdesk” добавляется сообщение “Конверсия пользователя” с параметрами:
- Email пользователя - “Email пользователя” который инициировал данную процедуру;
- Тип - lead.
- Выполняется создание “Уведомления” с параметрами:
- Дата создания - согласно текущей дате;
- Идентификатор пользователя - Идентификатор пользователя, который инициировал выполнение данной процедуры;
- Тип - email;
- Идентификатор динамического шаблона - 12;
- Статус - “new”.
- В очередь “Отправка email-уведомлений через сервис Sendgrid” добавляется сообщение “Email-уведомление” с параметрами:
- Идентификатор уведомления - идентификатор уведомления которое было создано на этапе “3_d” данной процедуры.
- Добавление сообщения в очередь “Отправки событий в Make” с параметрами:
- event_type - Создание локации;
- entity_id - Идентификатор локации которая была создана на этапе “3_b” данной процедуры;
-
- “01.1.10_1.7_2 Процедура добавления записи в буфер отслеживания локаций, для которых генерируется ответ от ИИ-модели” с параметрами:
- location_id - Идентификатор локации, которая была создана на этапе “3_b” данной процедуры.
- Если “01.1.10_1.7_2 Процедура добавления записи в буфер отслеживания локаций, для которых генерируется ответ от ИИ-модели” была выполнена:
- Успешно, выполняется:
- Добавление сообщения “Локация” в очередь “Создания описания локации для кампании ИИ-моделью OpenAI” с параметрами:
- location_id - Идентификатор локации, которая была создана на этапе “3_b” данной процедуры;
- Этап “4” данной процедуры;
- Добавление сообщения “Локация” в очередь “Создания описания локации для кампании ИИ-моделью OpenAI” с параметрами:
- Не успешно, выполняется этап “4” данной процедуры.
- Успешно, выполняется:
- “01.1.10_1.7_2 Процедура добавления записи в буфер отслеживания локаций, для которых генерируется ответ от ИИ-модели” с параметрами:
- “02_2.5_1 Процедура создания и обновления сессии пользователя” с параметрами:
- session_id - “X-Session-Id”, который был указан в заголовке запроса;
- user_id - Идентификатор пользователя который инициировал данную процедуру;
- action - Создание локации.
- На запрос “Create locations on registration” возвращается:
- Информация о состоянии пользователя;
- Фильтр настроек для инфлюенсера:
- Если “Тип локации”, который был указан при инициации данной процедуры “Бар” или “Ресторан” формируется согласно структуре данных “01_4.2.1_1” со следующими параметрами:
- audience_cities.value - “city_id”, который был указан при инициации данной процедуры;
- audience_cities.title - “Название” города, идентификатор которого соответствует “city_id”, который был указан при инициации данной процедуры;
- influencer_cities.value - “city_id”, который был указан при инициации данной процедуры;
- influencer_cities.title - “Название” города, идентификатор которого соответствует “city_id”, который был указан при инициации данной процедуры;
- age_ranges_audience - массив “Возрастных групп”:
- title - “18-24”;
- value - 2;
- title - “25-34”;
- value - 3;
- title - “35-44”;
- value - 4;
- gender_audience.title - “Any”
- gender_audience.value - 3;
- influencer_engagement_rate.title - “>= 0.5”;
- influencer_engagement_rate.value - 1;
- ranges_quantity_followers - массив, элементом которого является каждый “Диапазон количества подписчиков”, “Статус активности” которого true и для которого имеется связь с Типом бизнеса, который определён согласно “FR_03_9_1” для Бизнеса, к которому относится Пользователь, который инициировал данную процедуру:
- title - “Название” диапазона количества подписчиков;
- value - “Идентификатор” диапазона количества подписчиков.
- Если “Тип локации”, который был указан при инициации данной процедуры не “Бар” или “Ресторан” формируется согласно структуре данных “01_4.2.1_1” со следующими параметрами:
- audience_countries.value - “Код страны” города, идентификатор которого соответствует “city_id”, который был указан при инициации данной процедуры;
- audience_countries.title - “Название” страны, которое соответствует коду страны, который указан в значении;
- influencer_countries.value - “Код страны” города, идентификатор которого соответствует “city_id”, который был указан при инициации данной процедуры;
- influencer_countries.title - “Название” страны, которое соответствует коду страны, который указан в значении;
- age_ranges_audience - массив “Возрастных групп”:
- title - “18-24”;
- value - 2;
- title - “25-34”;
- value - 3;
- title - “35-44”;
- value - 4;
- gender_audience.title - “Any”
- gender_audience.value - 3;
- influencer_engagement_rate.title - “>= 0.5”;
- influencer_engagement_rate.value - 1;
- ranges_quantity_followers - массив, элементом которого является каждый “Диапазон количества подписчиков”, “Статус активности” которого true и для которого имеется связь с Типом бизнеса, который определён согласно “FR_03_9_1” для Бизнеса, к которому относится Пользователь, который инициировал данную процедуру:
- title - “Название” диапазона количества подписчиков;
- value - “Идентификатор” диапазона количества подписчиков.
- Если “Тип локации”, который был указан при инициации данной процедуры “Бар” или “Ресторан” формируется согласно структуре данных “01_4.2.1_1” со следующими параметрами:
- Клиентской частью сервиса выполняется:
- Выполняется сохранение в LocalStorage ключа:
- “filter_settings_for_influencers” со значением фильтра настроек для инфлюенсера, который был получен в ответ на запрос “Create locations on registration”;
- “is_default_influencers_filters” - со значением “true”.
- Переход к странице которая соответствует состоянию пользователя.
02_2.2_6.1 Ошибки при выполнении процедуры 02_2.2_6
| Код ошибки | Этап | Локаль | Текст ошибки |
|---|---|---|---|
| 0226 | 2_a_i | en | “Locations are already created, please contact support (code 0226)” |
| es | "Estas propiedades ya están creadas, contacta con soporte (código: 0226)" | ||
| pt | "As localizações já foram criadas, contacte o serviço de apoio (código 0226)” | ||
| de | |||
| 0232 | 2_b_i | en | “Please add at least one link to the location (code 0232)” |
| es | “Por favor, añade al menos un enlace a la ubicación (código 0232)” | ||
| pt | “Por favor, adicione pelo menos um link para a localização (código 0232)” | ||
| de | “Bitte fügen Sie mindestens einen Link zur Location hinzu (Code 0232)” |
02_2.3_7 Процедура сохранения данных Инфлюэнсера при регистрации¶
- Клиентской частью сервиса выполняется запрос “Update the influencer's full name” с параметрами:
- “full_name”;
- “username”;
- “phone”.
- Значение параметра “username” определяется как результат выполнения “02_3.2_14 Процедура определения имени в сервисе Instagram” с параметром:
- Значение - “username”, который был указан при инициации данной процедуры.
- Если для “Инлюэнсера” который инициировал данную процедуру:
- Имеется значение параметра “Полное имя” на запрос “Update the influencer's full name” возвращается ошибка “0227”;
- Не имеется значения для параметра “Полное имя”, выполнятся этап “3” данной процедуры.
- Если имеется “Аккаунт”, “Имя в сервисе” которого соответствует значению параметра “username”, который был определен на этапе “2_a” данной процедуры, и данный “Аккаунт” относится к другому “Пользователю” на запрос “Update the influencer's full name” возвращается ошибка “0231”
- Выполняется изменение параметров Пользователя для которого был выполнен запрос:
- Полное имя - согласно значению параметра “full_name”;
- Номер телефона - “phone” который был указан при инициации данной процедуры.
- Если не имеется “Аккаунта” значение параметра “Имя в сервисе” которого соответствует значению параметра “username”, который был указан при инициации данной процедуры:
- Генерируется “Код верификации аккаунта” согласно следующим требованиям:
- Случайное число из 6 символов.
- Cоздание “Аккаунта” с параметрами:
- Дата создания - согласно текущей дате;
- Пользователь - идентификатор пользователя который инициировал данную процедуру;
- Имя в сервисе - согласно значению параметра “username”, который был указан при инициации данной процедуры;
- Сервис - Instagram;
- Показатель вовлеченности аудитории - 0.05;
- Код верификации - Код верификации аккаунта, который был сгенерирован на этапе “3_b_i” данной процедуры;
- Статус верификации - Not verified;
- Создание “Данных аккаунта” с параметрами:
- Дата создания - согласно текущей дате;
- Аккаунт - Идентификатор аккаунта, который относится к Инфлюэнсеру который инициировал данную процедуру;
- Источник данных - согласно значению настройки “6.5 Источник данных для аккаунтов инфлюэнсеров”.
- В “3.2.1 Очередь Синхронизация данных аккаунта” добавляется сообщение “Аккаунт для обновления данных” с параметрами:
- Идентификатор данных аккаунта - Идентификатор данных аккаунта, которые были созданы на этапе “3_b_iii” данной процедуры.
- Этап “3_d” данной процедуры.
- Генерируется “Код верификации аккаунта” согласно следующим требованиям:
- Имеется “Аккаунт” значение параметра “Имя в сервисе” которого соответствует значению параметра “username” выполняется:
- Генерируется “Код верификации аккаунта” согласно следующим требованиям:
- Случайное число из 6 символов.
- Изменение параметров данного аккаунта:
- Пользователь - изменяется согласно “Идентификатору” пользователя который инициировал данную процедуру;
- Дата обновления - согласно текущей дате;
- Код верификации - Код верификации аккаунта, который был сгенерирован на этапе “3_с_i” данной процедуры.
- Этап “3_d” данной процедуры.
- Генерируется “Код верификации аккаунта” согласно следующим требованиям:
- Если для “Аккаунта”, который относится к пользователю, для которого была инициирована данная процедура, не имеется значения для параметра “Полное имя”, “Полное имя” данного аккаунта изменяется согласно согласно значению параметра “full_name”, которое было указано при инициации данной процедуры.
- Выполняется создание “Уведомления” с параметрами:
- Дата создания - согласно текущей дате;
- Идентификатор пользователя - Идентификатор пользователя, который был указан при инициации данной процедуры;
- Тип - email;
- Идентификатор динамического шаблона - 11;
- Параметры уведомления:
- “InfluencerInstagramName” : “Имя в сервисе” аккаунта, который относится к Инфлюэнсеру который инициировал данную процедуру процедуры”;
- “InstagramCode” : “Код верификации” аккаунта, который относится к Инфлюэнсеру который инициировал данную процедуру процедуры”
- Статус - “new”.
- В очередь “Отправка email-уведомлений через сервис Sendgrid” добавляется сообщение “Email-уведомление” с параметрами:
- Идентификатор уведомления - идентификатор уведомления которое было создано на этапе “4_a” данной процедуры.
- В очередь “Запросы к сервису Trackdesk” добавляется сообщение “Конверсия пользователя” с параметрами:
- Email пользователя - “Email пользователя” который инициировал данную процедуру;
- Тип - lead.
- На запрос “Update the influencer's full name” возвращается информация о состоянии пользователя.
- Клиентской частью сервиса выполняется переход к странице которая соответствует состоянию пользователя.
02_2.3_7.1 Ошибки при выполнении процедуры 02_2.3_7
| Код ошибки | Этап | Локаль | Текст ошибки |
|---|---|---|---|
| 0227 | 2_b_i | en | “Full name is already filled, please contact support (code 0227)” |
| es | "El nombre completo ya está cumplimentado, contacta con soporte (código: 0227)" | ||
| pt | “O nome completo já está preenchido, contacte o serviço de apoio (código 0227)” | ||
| fr | |||
| 0231 | 2_c | en | “This account is already on Rippla. Send us a DM from it on Instagram, and we’ll help you log in!” |
| es | "Esta cuenta ya está en Rippla. Envíanos un DM desde ella en Instagram y te ayudaremos a iniciar sesión" | ||
| pt | "Esta conta já existe na Rippla. Envie-nos uma mensagem direta no Instagram com esse e-mail e nós ajudamo-lhe a iniciar sessão!" | ||
| de | Dieses Konto ist bereits bei Rippla. Schick uns eine DM auf Instagram, dann helfen wir dir beim Einloggen! |
02_2.3_8 Процедура сохранения информации об аудитории Инфлюэнсера при регистрации¶
- Клиентской частью сервиса выполняется запрос “Update the influencer's audience” с параметрами:
- “range_quantity_followers” - Идентификатор диапазона количества подписчиков;
- "countries" - массив кодов стран;
- “cities” - массив идентификаторов городов;
- “age_ranges_audience” - массив идентификаторов возрастных групп;
- “gender_audience” - идентификатор пола аудитории.
- Если для “Инфлюэнсера” который инициировал данную процедуру:
- Не имеется значения параметра “Полное имя” на запрос “Update the influencer's audience” возвращается ошибка “0228”;
- Имеется значение параметра “Полное имя”, выполнятся этап “3” данной процедуры.
- Если для “Инфлюэнсера” который инициировал данную процедуру:
- Имеется “Аккаунт”, к которому относятся “Данные аккаунта”, для которого “Источник данные” - “Self declared” на запрос “Update the influencer's audience” возвращается ошибка “0229”
- Не имеется “Аккаунта”, к которому относятся “Данные аккаунта”, для которого “Источник данные” - “Self declared” выполняется этап “4” данной процедуры.
- Выполняется:
- Создание “Данных аккаунта” с параметрами:
- Дата создания - согласно текущей дате;
- Дата получения - согласно текущей дате;
- Аккаунт - Идентификатор аккаунта, который относится к Инфлюэнсеру который инициировал данную процедуру;
- Источник данных - “Self declared”
- Исходные данные - определяется как структура данных в формате JSON “02_2.2_8.1 Data_source”
- Если для “Аккаунта” для которого, были созданы “Данные аккаунта” на этапе “2_a” данной процедуры:
- Не имеется ни одной “Аудитории аккаунта по стране”, выполняется создание “Аудитории аккаунта по стране” для каждой страны, которая указана в массиве “countries”, с параметрами:
- Аккаунт - Идентификатор аккаунта, к которому относятся “Данные аккаунта”, которые были созданы на этапе “2_a” данной процедуры;
- Код страны - согласно Коду страны, для которой выполняется создание “Аудитории аккаунта по стране”;
- Доля - Определяется как частное от деления единицы на количество стран, которое было указано пользователем, с округлением до 4 знаков после разделителя дроби.
- Не имеется ни одной “Аудитории аккаунта по городу”, выполняется выполняется “3.2.1_1.1.2 Процедура создания Аудитории аккаунта по городу” для каждого города, который указан в массиве “cities”, с параметрами:
- Аккаунт - Идентификатор аккаунта, к которому относятся “Данные аккаунта”, которые были созданы на этапе “2_a” данной процедуры;
- Название города - Название города, для которого выполняется создание “Аудитории аккаунта по городу”;
- Название страны - Название страны, согласно “Коду страны” города, для которого выполняется создание “Аудитории аккаунта по городу”;
- Доля - Определяется как частное от деления единицы на количество городов, которое было указано пользователем, с округлением до 4 знаков после разделителя дроби.
- Не имеется ни одной “Аудитории аккаунта по возрастной группе” выполняется “3.2.1_1.1.4 Процедура создания Аудитории аккаунта по возрастной группе” для каждой группы, которая указана в массиве “age_ranges_audience”, с параметрами:
- Аккаунт - Идентификатор аккаунта, к которому относятся “Данные аккаунта”, которые были созданы на этапе “2_a” данной процедуры;
- Название возрастной группы - Название возрастной группы, для которой выполняется создание “Аудитории аккаунта по возрастной группе”;
- Доля - Определяется как частное от деления единицы на количество возрастных групп, которое было указано пользователем, с округлением до 4 знаков после разделителя дроби.
- Доля мужчин:
- Если “Название” пола аудитории, который указан в значении параметра “gender_audience”,“Male” - определяется как 70% от “Доли” которая была определена на этапе “2_b_iii_3” данной процедуры;
- Если “Название” пола аудитории, который указан в значении параметра “gender_audience”,“Female” - определяется как 30% от “Доли” которая была определена на этапе “2_b_iii_3” данной процедуры;
- Если “Название” пола аудитории, который указан в значении параметра “gender_audience”,“Any” - определяется как 50% от “Доли” которая была определена на этапе “2_b_iii_3” данной процедуры.
- Доля женщин:
- Если “Название” пола аудитории, который указан в значении параметра “gender_audience”,“Male” - определяется как 30% от “Доли” которая была определена на этапе “2_b_iii_3” данной процедуры;
- Если “Название” пола аудитории, который указан в значении параметра “gender_audience”,“Female” - определяется как 70% от “Доли” которая была определена на этапе “2_b_iii_3” данной процедуры;
- Если “Название” пола аудитории, который указан в значении параметра “gender_audience”,“Any” - определяется как 50% от “Доли” которая была определена на этапе “2_b_iii_3” данной процедуры.
- Не имеется ни одной “Аудитории аккаунта по полу” выполняется:
- “3.2.1_1.1.3 Процедура создания Аудитории аккаунта по полу” с параметрами:
- Аккаунт - Идентификатор аккаунта, к которому относятся “Данные аккаунта”, которые были созданы на этапе “2_a” данной процедуры;
- Название пола - “Male”
- Доля:
- Если “Название” пола аудитории, который указан в значении параметра “gender_audience”,“Male” - определяется как 0.7;
- Если “Название” пола аудитории, который указан в значении параметра “gender_audience”,“Female” - определяется как 0.3;
- Если “Название” пола аудитории, который указан в значении параметра “gender_audience”,“Any” - определяется как 0.5.
- “3.2.1_1.1.3 Процедура создания Аудитории аккаунта по полу” с параметрами:
- Аккаунт - Идентификатор аккаунта, к которому относятся “Данные аккаунта”, которые были созданы на этапе “2_a” данной процедуры;
- Название пола - “Female”
- Доля:
- Если “Название” пола аудитории, который указан в значении параметра “gender_audience”,“Male” - определяется как 0.3;
- Если “Название” пола аудитории, который указан в значении параметра “gender_audience”,“Female” - определяется как 0.7;
- Если “Название” пола аудитории, который указан в значении параметра “gender_audience”,“Any” - определяется как 0.5.
- “3.2.1_1.1.3 Процедура создания Аудитории аккаунта по полу” с параметрами:
- Не имеется ни одной “Аудитории аккаунта по стране”, выполняется создание “Аудитории аккаунта по стране” для каждой страны, которая указана в массиве “countries”, с параметрами:
- Если для “Аккаунта”, который относится к Инфлюэнсеру который инициировал данную процедуру, не имеется значения для параметра “Количество подписчиков”, значение данного параметра устанавливается как среднее арифметическое от значений параметров “Подписчиков от”, “Подписчиков до” Диапазона количества подписчиков, которое было указано при инициации данной процедуры.
- На запрос “Update the influencer's audience”возвращается информация о состоянии пользователя.
- Клиентской частью сервиса выполняется переход к странице которая соответствует состоянию пользователя.
Примечание: начиная с RPL-2794 данная процедура не вызывается в рамках регистрации Инфлюэнсера — “Состояние пользователя” для Инфлюэнсера больше не принимает значение “audience”, аудитория аккаунта определяется автоматически по 02_2.3_7. Эндпоинт и процедура оставлены без изменений на случай прямого вызова.
02_2.2_8.1 Data_source
| Параметр | Описание | Значение |
|---|---|---|
| range_quantity_followers | Диапазон количества подписчиков | Объект, который содержит следующие параметры: “title” - значение параметра “Название” диапазона количества подписчиков; “quantity_from” - значение параметра “Подписчиков от” диапазона количества подписчиков; “quantity_to” - значение параметра “Подписчиков до” диапазона количества подписчиков. |
| countries | Массив стран | Элементом массива является объект 02_2.2_8.1.1 |
| cities | Массив городов | Элементом массива является объект 02_2.2_8.1.2 |
| age_ranges_audience | Массив возрастных групп | Элементом массива является объект 02_2.2_8.1.3 |
| genders_audience | Массив аудитории аккаунта по полу | Массив содержит данные для следующих полов аудитории: Male; Female. Элементом массива является объект 02_2.2_8.1.4. |
02_2.2_8.1.1
| Параметр | Описание | Значение |
|---|---|---|
| сounty_code | Код страны | Код страны, которую указал пользователь; |
| country_name | Название страны | Название страны, которую указал пользователь; |
| share | Доля аудитории. | Определяется как частное от деления единицы на количество стран, которое было указано пользователем, с округлением до 4 знаков после разделителя дроби. |
02_2.2_8.1.2
| Параметр | Описание | Значение |
|---|---|---|
| country_name | Название страны | Название страны, к которой относится город который указал пользователь. |
| city_name | Название города | Название города который указал пользователь. |
| share | Доля аудитории. | Определяется как частное от деления единицы на количество городов, которое было указано пользователем, с округлением до 4 знаков после разделителя дроби. |
02_2.2_8.1.3
| Параметр | Описание | Значение |
|---|---|---|
| age_range_audience_name | Название возрастной группы аудитории | Название возрастной группы аудитории, которую указал пользователь. |
| share | Доля аудитории. | Определяется как частное от деления единицы на количество возрастных групп, которое было указано пользователем, с округлением до 4 знаков после разделителя дроби. |
| male_share | Доля аудитории мужчин | Если “Название” пола аудитории, который указан в значении параметра “gender_audience”, “Male” - определяется как 70% от “Доли аудитории”; Если “Название” пола аудитории, который указан в значении параметра “gender_audience”,“Female” - определяется как 30% от “Доли аудитории”; Если “Название” пола аудитории, который указан в значении параметра “gender_audience”,“Any” - определяется как 50% от “Доли аудитории”. |
| female_share | Доля аудитории женщин | Если “Название” пола аудитории, который указан в значении параметра “gender_audience”, “Male” - определяется как 30% от “Доли аудитории”; Если “Название” пола аудитории, который указан в значении параметра “gender_audience”,“Female” - определяется как 70% от “Доли аудитории”; Если “Название” пола аудитории, который указан в значении параметра “gender_audience”,“Any” - определяется как 50% от “Доли аудитории”. |
02_2.2_8.1.4
| Параметр | Описание | Значение |
|---|---|---|
| gender_audience_name | Название пола аудитории | Male - если элемент формируется для Пола аудитории - Male; Female - если элемент формируется для Пола аудитории - Female; |
| share | Доля аудитории. | Если “gender_audience_name” - “Male” и “Название” пола аудитории, который указан в значении параметра “gender_audience” при инициации “02_2.2_8”: “Male” - определяется как 0.7; “Female” - определяется как 0.3; “Any” - определяется как 0.5. Если “gender_audience_name” - “Female” и “Название” пола аудитории, который указан в значении параметра “gender_audience” при инициации “02_2.2_8”: “Male” - определяется как 0.3; “Female” - определяется как 0.7; “Any” - определяется как 0.5. |
Пример:
{
"range_quantity_followers": {
"title": "0-5000",
"quantity_from": 0,
"quantity_to": 5000
},
"countries": [
{
"county_code": "UK",
"country_name": "United Kingdom",
"share": 0.5
},
{
"county_code": "PT",
"country_name": "Portugal",
"share": 0.5
}
],
"cities": [
{
"country_name": "United Kingdom",
"city_name": "London",
"share": 0.5
},
{
"country_name": "Portugal",
"city_name": "Porto",
"share": 0.5
}
],
"age_ranges_audience": [
{
"title": "0-17",
"share": 0.5,
"male_share": 0.35,
"female_share": 0.15,
},
{
"title": "18-24",
"share": 0.5,
"male_share": 0.35,
"female_share": 0.15,
}
],
"gender_audience": [
{
"gender_audience_name": "Male",
"share": 0.7
},
{
"gender_audience_name": "Female",
"share": 0.3
}
]
}
02_2.2_8.2 Ошибки при выполнении процедуры 02_2.2_8
| Код ошибки | Этап | Локаль | Текст ошибки |
|---|---|---|---|
| 0228 | 2_a | en | “Your full name is missining, please contact support (code 0228)”. |
| es | "Falta tu nombre completo, contacta con soporte (código: 0228)" | ||
| pt | “O seu nome completo está em falta, contacte o serviço de apoio (código 0228)”. | ||
| fr | |||
| 0229 | 3_a | en | “Account audience already created, please contact support (code 0229)” |
| es | "La audiencia de la cuenta ya está creada, contacta con soporte (código: 0229)" | ||
| pt | “Público da conta já criado, contacte o serviço de apoio (código 0229)” | ||
| fr |
02_2.3_9 Процедура блокировки Пользователя¶
- Администратор инициирует блокировку пользователя.
- Выполняется:
- Изменяются параметры Пользователя:
- Дата обновления - изменяется согласно текущей дате;
- Статус блокировки - “true”;
- Если к Бизнесу, к которому относится “Бизнес представитель”, который относится к Пользователю, для которого была инициирована данная процедура, не относятся другие “Бизнес представители”, “Статус блокировки” которых “false”, изменяются параметры данного Бизнеса:
- Дата обновления - согласно текущей дате;
- Статус активности - “false”.
- Выполняется создание “Уведомления” с параметрами:
- Дата создания - согласно текущей дате;
- Идентификатор пользователя - Идентификатор пользователя, который был указан при инициации данной процедуры;
- Тип - email;
- Идентификатор динамического шаблона - 6;
- Параметры уведомления:
- “UserFullName” : “Полное имя пользователя, который был указан при инициации данной процедуры”.
- Статус - “new”.
-
- Если “Роль” пользователя, который был заблокирован “Инфлюэнсер” для каждой Коллаборации в одном из статусов “Новая”/“Подтверждена”/”Активная”, которая относится к “Инфлюэнсеру”, для которого была инициирована данная процедура, выполняется:
- Создание “Сообщения коллаборации” с параметрами:
- Дата создания - согласно текущей дате;
- Идентификатор коллаборации - Идентификатор коллаборации, для которой должно быть создано сообщение;
- Тип - Системное;
- Идентификатор шаблона - 11;
- Параметры сообщения:
- influencer.full_name - “Полное имя” пользователя для которого была инициирована данная процедура.
- Инициатор - Администратор;
- Свойство доступности - Представитель бизнеса.
- Создание “Сообщения коллаборации” с параметрами:
- Если был выполнен этап “2_b” данной процедуры и “Роль” пользователя, который был заблокирован “Бизнес представитель” для каждой Коллаборации в одном из статусов “Новая”/“Подтверждена”/”Активная”, которая относится к “Кампании”, которая относится к “Локации”, которая относится к “Бизнесу”, к которому относится “Бизнес представитель”, для которого была инициирована данная процедура, выполняется:
- Создание “Сообщения коллаборации” с параметрами:
- Дата создания - согласно текущей дате;
- Идентификатор коллаборации - Идентификатор коллаборации, для которой должно быть создано сообщение;
- Тип - Системное;
- Идентификатор шаблона - 14;
- Инициатор - Администратор;
- Свойство доступности - Инфлюэнсер.
- Создание “Сообщения коллаборации” с параметрами:
- Если “Роль” пользователя, который был заблокирован “Инфлюэнсер” для каждой Коллаборации в одном из статусов “Новая”/“Подтверждена”/”Активная”, которая относится к “Инфлюэнсеру”, для которого была инициирована данная процедура, выполняется:
-
Если был выполнен этап:
- “2_d_i” данной процедуры, для каждого “Представителя бизнеса”:
- Который относится к “Коллаборации”, для которой было создано сообщение;
- Для которого имеется подключение к веб-сокету.
выполняется:
1. “07\_3.3.2\_4 Процедура определения количества непрочитанных сообщений пользователя” с параметрами: 1. Массив коллабораций \- Одномерный массив который содержит идентификаторы коллабораций для которых было создано сообщение на этапе “2\_d\_i” данной процедуры. 2. Пользователь \- Идентификатор пользователя для которого выполняется “2\_e\_i” данной процедуры; 3. Тип \- Сообщение. 2. Отправка сообщения в веб\-сокет “Уведомления от сервиса Centrifugo” для канала “notification\_{Идентификатор пользователя к которому относится [“Представитель бизнеса”](05-business.md#3.1-параметры-представителя-бизнеса(business_representatives))}” с параметрами: 1. type \- “messages\_counters\_changed”; 2. data \- массив “data” который был получен в результате выполнения “07\_3.3.2\_4 Процедуры определения количества непрочитанных сообщений коллаборации и кампании”.- “2_d_ii” данной процедуры, для каждого “Инфлюэнсера”:
- Который относится к “Коллаборации”, для которой было создано сообщение;
-
Для которого имеется подключение к веб-сокету.
выполняется:
- “2_d_i” данной процедуры, для каждого “Представителя бизнеса”:
-
“07_3.3.2_4 Процедура определения количества непрочитанных сообщений пользователя” с параметрами:
- Массив коллабораций - Одномерный массив который содержит идентификаторы коллабораций для которых было создано сообщение на этапе “2_d_ii” данной процедуры;
- Пользователь - Идентификатор пользователя для которого выполняется “2_e_ii” данной процедуры;
- Тип - Сообщение.
- Отправка сообщения в веб-сокет “Уведомления от сервиса Centrifugo” для канала “notification_{Идентификатор пользователя к которому относится “Аккаунт”}” с параметрами:
- type - “messages_counters_changed”;
- data - массив “data” который был получен в результате выполнения “07_3.3.2_4 Процедура определения количества непрочитанных сообщений пользователя”.
- Пользователь - Идентификатор пользователя для которого выполняется “2_e_ii” данной процедуры;
- Выполняется “07_3.3.2_6 Процедура отправки сообщений коллаборации в веб-сокет” с параметрами:
- Идентификаторы сообщений коллабораций - Идентификаторы сообщений коллаборации, которые были созданы на этапе “2” данной процедуры.
- В очередь “Отправка email-уведомлений через сервис Sendgrid” добавляется сообщение “Email-уведомление” с параметрами:
- Идентификатор уведомления - идентификатор уведомления которое было создано на этапе “2_b” данной процедуры.
02_2.3_10 Процедура разблокировки Пользователя¶
- Администратор инициирует разблокировку пользователя.
- Выполняется:
- Изменяются параметры Пользователя:
- Дата обновления - изменяется согласно текущей дате;
- Статус блокировки - “false”;
- Создание “Уведомления” с параметрами:
- Дата создания - согласно текущей дате;
- Идентификатор пользователя - Идентификатор пользователя, который был указан при инициации данной процедуры;
- Тип - email;
- Идентификатор динамического шаблона - 7;
- Параметры уведомления:
- “UserFullName” : “Полное имя пользователя, который был указан при инициации данной процедуры”;
- “ripplaLink” : “https://app.rippla.com”
- Статус - “new”.
- Если “Роль” пользователя, который был разблокирован “Инфлюэнсер” для каждой Коллаборации в одном из статусов “Новая” / “Подтверждена” / ”Активная”, которая относится к “Инфлюэнсеру”, для которого была инициирована данная процедура, выполняется:
- Cоздание “Сообщения коллаборации” с параметрами:
- Дата создания - согласно текущей дате;
- Идентификатор коллаборации - Идентификатор коллаборации, для которой должно быть создано сообщение;
- Тип - Системное;
- Идентификатор шаблона - 12;
- Параметры сообщения:
- influencer.full_name - “Полное имя” пользователя для которого была инициирована данная процедура.
- Инициатор - Администратор;
- Свойство доступности - Представитель бизнеса.
- Cоздание “Сообщения коллаборации” с параметрами:
-
Для каждого “Представителя бизнеса”, который относится к “Коллаборации”:
- Для которой было создано сообщение на этапе “2_c” данной процедуры;
-
Для которого имеется подключение к веб-сокету.
выполняется:
-
“07_3.3.2_4 Процедура определения количества непрочитанных сообщений пользователя” с параметрами:
- Массив коллабораций - Идентификаторы коллабораций для которых было создано сообщение на этапе “2_c” данной процедуры;
- Пользователь - Идентификатор пользователя для которого выполняется “2_d” данной процедуры;
- Тип - Сообщение.
- Отправка сообщения в веб-сокет “Уведомления от сервиса Centrifugo” для канала “notification_{Идентификатор пользователя к которому относится “Представитель бизнеса”}” с параметрами:
- type - “messages_counters_changed”;
- data - массив “data” который был получен в результате выполнения “07_3.3.2_4 Процедура определения количества непрочитанных сообщений пользователя”.
- Пользователь - Идентификатор пользователя для которого выполняется “2_d” данной процедуры;
- Выполняется “07_3.3.2_6 Процедура отправки сообщений коллаборации в веб-сокет” с параметрами:
- Идентификаторы сообщений коллабораций - Идентификаторы сообщений коллаборации, которые были созданы на этапе “2” данной процедуры.
- В очередь “Отправка email-уведомлений через сервис Sendgrid” добавляется сообщение “Email-уведомление” с параметрами:
- Идентификатор уведомления - идентификатор уведомления которое было создано на этапе “2_b” данной процедуры.
02_2.3_11 Процедура удаления Пользователя¶
- Администратор инициирует удаление пользователя.
- Выполняется:
- Изменяются параметры Пользователя:
- Дата обновления - изменяется согласно текущей дате;
- Дата удаления - изменяется согласно текущей дате.
- Если к Бизнесу, к которому относится Бизнес представитель, который относится к Пользователю, для которого была инициирована данная процедура, не относятся другие Бизнес представители, изменяются параметры данного Бизнеса:
- Дата обновления - согласно текущей дате;
- Статус активности - “false”.
- Создание “Уведомления” с параметрами:
- Дата создания - согласно текущей дате;
- Идентификатор пользователя - Идентификатор пользователя, который был указан при инициации данной процедуры;
- Тип - email;
- Идентификатор динамического шаблона - 10;
- Параметры уведомления:
- “UserFullName” : “Полное имя пользователя, который был указан при инициации данной процедуры”.
- Статус - “new”.
-
- Если “Роль” пользователя, который был удален “Инфлюэнсер” для каждой Коллаборации в одном из статусов “Новая”/“Подтверждена”/”Активная”, которая относится к “Инфлюэнсеру”, для которого была инициирована данная процедура, выполняется:
- Cоздание “Сообщения коллаборации” с параметрами:
- Дата создания - согласно текущей дате;
- Идентификатор коллаборации - Идентификатор коллаборации, для которой должно быть создано сообщение;
- Тип - Системное;
- Идентификатор шаблона - 13;
- Параметры сообщения:
- influencer.full_name - “Полное имя” пользователя для которого была инициирована данная процедура.
- Инициатор - Администратор;
- Свойство доступности - Представитель бизнеса.
- Cоздание “Сообщения коллаборации” с параметрами:
- Если был выполнен этап “2_b” данной процедуры и “Роль” пользователя, который был удален “Бизнес представитель” для каждой Коллаборации в одном из статусов “Новая”/“Подтверждена”/”Активная”, которая относится к “Кампании”, которая относится к “Локации”, которая относится к “Бизнесу”, к которому относится “Бизнес представитель”, для которого была инициирована данная процедура, выполняется:
- Cоздание “Сообщения коллаборации” с параметрами:
- Дата создания - согласно текущей дате;
- Идентификатор коллаборации - Идентификатор коллаборации, для которой должно быть создано сообщение;
- Тип - Системное;
- Идентификатор шаблона - 16;
- Инициатор - Администратор;
- Свойство доступности - Инфлюэнсер.
- Cоздание “Сообщения коллаборации” с параметрами:
- Если “Роль” пользователя, который был удален “Инфлюэнсер” для каждой Коллаборации в одном из статусов “Новая”/“Подтверждена”/”Активная”, которая относится к “Инфлюэнсеру”, для которого была инициирована данная процедура, выполняется:
-
Если был выполнен этап:
- “2_d_i” данной процедуры, для каждого “Представителя бизнеса”:
- Который относится к “Коллаборации”, для которой было создано сообщение;
- Для которого имеется подключение к веб-сокету.
выполняется:
3. “07\_3.3.2\_4 Процедура определения количества непрочитанных сообщений пользователя” с параметрами: 1. Массив коллабораций \- Одномерный массив который содержит идентификаторы коллабораций для которых было создано сообщение на этапе “2\_d\_i” данной процедуры; 2. Пользователь \- Идентификатор пользователя для которого выполняется “2\_e\_i” данной процедуры; 3. Тип \- Сообщение. 4. Отправка сообщения в веб\-сокет “Уведомления от сервиса Centrifugo” для канала “notification\_{Идентификатор пользователя к которому относится [“Представитель бизнеса”](05-business.md#3.1-параметры-представителя-бизнеса(business_representatives))}” с параметрами: 1. type \- “messages\_counters\_changed”; 2. data \- массив “data” который был получен в результате выполнения “07\_3.3.2\_4 Процедура определения количества непрочитанных сообщений пользователя”.- “2_d_ii” данной процедуры, для каждого “Инфлюэнсера”:
- Который относится к “Коллаборации”, для которой было создано сообщение;
-
Для которого имеется подключение к веб-сокету.
выполняется:
- “2_d_i” данной процедуры, для каждого “Представителя бизнеса”:
-
“07_3.3.2_4 Процедура определения количества непрочитанных сообщений пользователя” с параметрами:
- Массив коллабораций - Одномерный массив который содержит идентификаторы коллабораций для которых было создано сообщение на этапе “2_d_ii” данной процедуры;
- Пользователь - Идентификатор пользователя для которого выполняется “2_e_ii” данной процедуры;
- Тип - Сообщение.
- Отправка сообщения в веб-сокет “Уведомления от сервиса Centrifugo” для канала “notification_{Идентификатор пользователя}” с параметрами:
- type - “messages_counters_changed”;
- data - массив “data” который был получен в результате выполнения “07_3.3.2_4 Процедура определения количества непрочитанных сообщений пользователя”.
- Пользователь - Идентификатор пользователя для которого выполняется “2_e_ii” данной процедуры;
- Выполняется удаление “Контакта уведомления”, который относится к “Пользователю”, для которого инициирована данная процедура.
- Выполняется удаление каждого “FCM токена”, который относится к “Пользователю”, для которого инициирована данная процедура.
- Выполняется “07_3.3.2_6 Процедура отправки сообщений коллаборации в веб-сокет” с параметрами:
- Идентификаторы сообщений коллабораций - Идентификаторы сообщений коллаборации, которые были созданы на этапе “2” данной процедуры.
- В очередь “Отправка email-уведомлений через сервис Sendgrid” добавляется сообщение “Email-уведомление” с параметрами:
- Идентификатор уведомления - идентификатор уведомления которое было создано на этапе “2_b” данной процедуры.
02_2.3_12 Процедура деавторизации Пользователя¶
- Клиентской частью сервиса инициируется деавторизации Пользователя.
- Клиентской частью сервиса выполняется:
- “02_2.3_19 Процедура удаления FCM токена”. Данный этап выполняется до удаления ключа “accessToken” из LocalStorage. Если процедура не выполнена, дальнейшие этапы данной процедуры выполняются;
- Выполняется запрос clearAppBadge.
- Удаление из LocalStorage:
- Ключа “accessToken” со значением которое соответствует значению параметра “accessToken” которое было получено в ответе на запрос “Email verification”;
- Ключа “refreshToken” со значением которое соответствует значению параметра “refresh_token” которое было получено в ответе на запрос “Email verification”.
- Переход к странице “Log in”.
02_2.3_13 Процедура получения информации о профиле пользователя¶
API: GET /private/me
- Клиентской частью сервиса инициируется запрос “Get user data”.
- Выполняется определение возвращаемых параметров. Если для “Пользователя”, который инициировал данную процедуру:
- Не имеется “Активной подписки пользователя”:
- И данный пользователь является Инфлюэнсером:
- collaborations_max:
- Если для данного инфлюэнсера имеется “Персональное количество бесплатных коллабораций” и сейчас:
- “Первый период обновления коллабораций” - “Количество бесплатных коллабораций” персонального количество бесплатных коллабораций;
- Не “Первый период обновления коллабораций” - “Количество бесплатных коллабораций после первого периода” персонального количество бесплатных коллабораций.
- Если для данного инфлюэнсера не имеется “Персонального количество бесплатных коллабораций” и сейчас:
- “Первый период обновления коллабораций” - “Количество бесплатных коллабораций” Значение параметра “free_collabs_at_first_period” с типом “influencers”;
- Не “Первый период обновления коллабораций” - Значение параметра “free_collabs” с типом “influencers”.
- collaborations_left - Разность значения параметра “collaborations_max”, которое было определено на этапе “2_a_i_1” данной процедуры и “Использованных коллабораций” в “Текущем периоде обновления коллабораций”.
- collaborations_refresh_at - дата окончания “Текущего периода обновления коллабораций”.
- Если для данного инфлюэнсера имеется “Персональное количество бесплатных откликов”:
- active_collaborations_max - значение параметра “Количество бесплатных откликов” персонального количества бесплатных откликов;
- active_collaborations_left - Разность значения параметра “active_collaborations_max”, которое было определено на этапе “2_a_i_4_a” данной процедуры и количества “Коллабораций”, созданных данным инфлюэнсером в рамках “Текущего периода обновления коллабораций”.
- collaborations_max:
- И данный пользователь является Представителем бизнеса:
- collaborations_max:
- Если для данного Представителя бизнеса имеется “Персональное количество бесплатных коллабораций” и сейчас:
- “Первый период обновления коллабораций” - “Количество бесплатных коллабораций” персонального количество бесплатных коллабораций;
- Не “Первый период обновления коллабораций” - “Количество бесплатных коллабораций после первого периода” персонального количество бесплатных коллабораций.
- Если для данного Представителя бизнеса не имеется “Персонального количество бесплатных коллабораций” и сейчас:
- “Первый период обновления коллабораций” - “Количество бесплатных коллабораций” Значение параметра “free_collabs_at_first_period” с типом “businesses”;
- Не “Первый период обновления коллабораций” - Значение параметра “free_collabs” с типом “influencers”.
- collaborations_left - Разность значения параметра “collaborations_max”, которое было определено на этапе “2_a_ii_1” данной процедуры и “Использованных коллабораций” в “Текущем периоде обновления коллабораций”.
- collaborations_refresh_at - дата окончания “Текущего периода обновления коллабораций”;
- campaigns_max:
- Если для пользователя не имеется “Персонального количества активных кампаний” - “Количество кампаний” максимального количества активных кампаний для пользователей без подписки;
- Если для пользователя имеется “Персональное количества активных кампаний” - “Количество активных кампаний” персонального количества активных кампаний;
- campaigns_left - Разность значения параметра “campaigns_max” и “Кампаний” в статусе “Активная”.
- active_collaborations_max:
- Если для данного Представителя бизнеса имеется “Персональное количество бесплатных откликов” - значение параметра “Количество бесплатных откликов” персонального количества бесплатных откликов;
- Если для данного Представителя бизнеса не имеется “Персонального количество бесплатных откликов” - значение параметра “free_active_collabs” с типом “businesses” настройки “Количество бесплатных откликов по умолчанию”.
- active_collaborations_left - Разность значения параметра “active_collaborations_max”, которое было определено на этапе “2_a_ii_6” данной процедуры и количества “Откликов”, которые относятся к Кампании, которая относится к Локации, которая относится к данному “Бизнесу”.
- collaborations_max:
- И данный пользователь является Инфлюэнсером:
- Имеется “Активная подписка пользователя”:
- И данный пользователь является Инфлюэнсером:
- collaborations_max - Если данный инфлюэнсер:
- Не является “Демо-аккаунтом”. Если “Интервал подписки” подписки пользователя:
- “month” - Определяется как произведение “Количества интервалов” подписки пользователя и “Количество коллабораций” подписки пользователя;
- “year” - Определяется как (“Количества интервалов” подписки пользователя)*12 *(“Количество коллабораций” подписки пользователя);
- Является “Демо-аккаунтом” - 999;
- active_collaborations_max:
- Если для данного инфлюэнсера имеется “Персональное количество бесплатных откликов” - значение параметра “Количество бесплатных откликов” персонального количества бесплатных откликов;
- Если для данного инфлюэнсера не имеется “Персонального количества бесплатных откликов” и данный инфлюэнсер:
- Не является “Демо-аккаунтом” - “Количество активных коллабораций” подписки пользователя;
- Является “Демо-аккаунтом” - 999.
- active_collaborations_left:
- Если для данного инфлюэнсера имеется “Персональное количество бесплатных откликов” - разность значения параметра “active_collaborations_max”, которое было определено на этапе “2_b_i_2” данной процедуры и количества “Коллабораций”, созданных данным инфлюэнсером в рамках “Текущего периода обновления коллабораций”;
- Если для данного инфлюэнсера не имеется “Персонального количества бесплатных откликов” - разность значения параметра “active_collaborations_max”, которое было определено на этапе “2_b_i_2” данной процедуры и количества “Откликов”, которые относятся к данному пользователю.
- collaborations_max - Если данный инфлюэнсер:
- И данный пользователь является Представителем бизнеса:
- collaborations_max - Если данный Представитель бизнеса:
- Не является “Демо-аккаунтом”. Если “Интервал подписки” подписки пользователя:
- “month” - Определяется как произведение “Количества интервалов” подписки пользователя и “Количество коллабораций” подписки пользователя;
- “year” - Определяется как (“Количества интервалов” подписки пользователя)*12 *(“Количество коллабораций” подписки пользователя);
- Является “Демо-аккаунтом” - 999;
- campaigns_max - Если данный Представитель бизнеса:
- Не является “Демо-аккаунтом” - “Количество кампаний” подписки пользователя;
- Является “Демо-аккаунтом” - 999;
- campaigns_left - Разность значения параметра “campaigns_max” и “Кампаний” в статусе “Активная”;
- active_collaborations_max - Если данный Представитель бизнеса:
- Не является “Демо-аккаунтом” - “Количество активных коллабораций” подписки пользователя;
- Является “Демо-аккаунтом” - 999.
- active_collaborations_left - Разность значения параметра “active_collaborations_max”, которое было определено на этапе “2_b_ii_4” данной процедуры и количества “Откликов”, которые относятся к данному пользователю.
- collaborations_max - Если данный Представитель бизнеса:
- И данный пользователь является Инфлюэнсером:
- Является “Инфлюэнсером”:
- is_content_upload_locked - true, если для данного Инфлюэнсера имеется “Персональное количество бесплатных откликов”, значение параметра “Количество бесплатных откликов” которого — 0.
- Выполняется:
- “02_2.5_1 Процедура создания и обновления сессии пользователя” с параметрами:
- session_id - “X-Session-Id”, который был указан в заголовке запроса;
- user_id - Идентификатор пользователя который инициировал данную процедуру.
- Если для “Пользователя”, который инициировал данную процедуру, имеется “Подписка пользователя” в “3.3.5 Очередь сообщений “Update subscription” добавляется сообщение “User subscription update” с параметрами:
- user_subscription_id - идентификатор подписки пользователя, которая относится к “Пользователю”, который инициировал данную процедуру.
- На запрос “Get user data” возвращается информация об успешном выполнении запроса.
- Клиентской частью сервиса выполняется:
- Если значение параметра “new_messages_counter”, который пришел в запросе “Get user data”:
- Более 0 выполняется запрос setAppBadge с параметром “value”, который был определен на этапе “1_a” данной процедуры;
- Менее или равно 0 выполняется запрос clearAppBadge.
- Переход к странице которая соответствует состоянию пользователя.
02_2.3_14 Процедура обновления информации о пользователе¶
API: PATCH /private/me
- Клиентской частью сервиса инициируется запрос “Edit user data” с телом запроса:
- “preferred_locale” - локаль, которая была указана пользователем.
- Выполняется:
- Изменение “Предпочитаемой локали” пользователя, который выполнил запрос “Edit user data” согласно значению параметра “preferred_locale”, который был указан при выполнении запроса;
- На запрос “Edit user data” возвращается информация об успешном выполнении запроса.
02_2.3_15 Процедура создания контакта уведомления внешним методом¶
- Инициируется запрос “Create notification contact” с телом запроса:
- “email” - Электронная почта пользователя, для которого создается контакт уведомления;
- “uuid” - Идентификатор для создания контакта увдедомления, для которого создается контакт уведомления;
- “service_id” - Идентификатор сервиса контакта;
- “contact_id” - Идентификатор контакта.
- Выполняется:
- Создание “Контакта уведомления” согласно параметрам, которые были получены при инициации данной процедуры;
- Если “Email” одного из пользователей соответствует “email”, который указан при инициации данной процедуры и для данного пользователя имеется подключение к веб-сокету выполняется отправка сообщения в веб-сокет “Уведомления от сервиса Centrifugo” для канала “notification_{Идентификатор пользователя}” с параметрами:
- type - “notification_contact_created”;
- service_id - “service_id”, который указан при инициации данной процедуры;
- contact_id - “contact_id”, который указан при инициации данной процедуры;
- “is_active” - “Статус активности” контакта уведомления, который был создан на этапе “2_а” данной процедуры;
- “interval” - “Интервал” контакта уведомления, который был создан на этапе “2_а” данной процедуры;
- Если данная процедура инициирована для “Представителя бизнеса” и для него имеется “Кампания” в статусе “Приостановленная” и “Источник изменения контакта” - Отсутствие контакта выполняется:
- “07_2.2_3 Процедура изменения Статуса кампании” с параметрами:
- id - Идентификатор кампании, который был определен на этапе “2_c” данной процедуры;
- status - Активная.
- Если значение параметра “email” пользователя, который инициировал выполнение данной процедуры, не содержит ни одного из строковых значений, указанных в настройке “6.20 Список почт офферы с которых не учитываются при создании push-уведомления”, выполняется добавление сообщения “Кампания” в очередь “Определения инфлюэнсеров, которые подходят под кампанию” с параметрами:
- campaign_id - Идентификатор кампании, которая была создана на этапе “4_a” данной процедуры.
- “07_2.2_3 Процедура изменения Статуса кампании” с параметрами:
- На запрос “Create notification contact” возвращается информация об успешном выполнении данной процедуры.
02_2.3_16 Процедура аутентификации пользователя через Firebase¶
- Клиентской частью сервиса выполняется запрос “Authenticate user via Firebase” с параметрами:
- firebase_id_token - Идентификатор токена Firebase, полученный клиентской частью сервиса после успешной аутентификации пользователя через Firebase;
- role:
- influencer;
- business_representative.
- query_params - объект который содержит все параметры которые содержатся в URL страницы, на которой был инициирован запрос “Authenticate user via Firebase”. Добавляется если имеется минимум один параметр в URL страницы.
- Выполняется расшифровка токена Firebase, который был получен при инициации данной процедуры, согласно документации сервиса Firebase.
- Если токен Firebase не соответствует требованиям валидации ID Tokens:
- На запрос “Authenticate user via Firebase” возвращается ошибка “0230”;
- Дальнейшие этапы процедуры не выполняются.
- Если токен Firebase не соответствует требованиям валидации ID Tokens выполняется этап “3” данной процедуры.
- Если имеется “Пользователь” для которого:
- Имеется “Идентификатор аккаунта в Firebase” и:
- “Идентификатор аккаунта в Firebase” соответствует значению параметра “uid”, который был определен на этапе “2” данной процедуры, выполняется этап “4” данной процедуры.
- “Идентификатор аккаунта в Firebase” не соответствует значению параметра “uid” и:
- “email” пользователя соответствует значению параметра “email”, который был определен на этапе “2” данной процедуры, выполняется:
- Изменение “Пользователя” с параметрами:
- “Идентификатор аккаунта в Firebase” - “uid”, который был определен на этапе “2” данной процедуры;
- Этап “4” данной процедуры.
- “email” пользователя не соответствует значению параметра “email”, который был определен на этапе “2” данной процедуры, выполняется:
- Создание “Пользователя” с параметрами:
- Роль - “role”, которая была указана при инициации данной процедуры;
- Статус блокировки - false;
- Email - “email”, который был получен из токена, который был расшифрован на этапе “2” данной процедуры;
- Предпочитаемая локаль - “preferred_locale”, которая была указана в заголовке запроса при инициации данной процедуры;
- “Идентификатор аккаунта в Firebase” - “uid”, который был определен на этапе “2” данной процедуры;
- Идентификатор пользователя для создания контакта уведомления - uuid;
- query_params - query_params, который был указан при инициации данной процедуры.
- Выполняется добавление сообщения в очередь “Отправки событий в Make” с параметрами:
- event_type - Создание пользователя;
- entity_id - Идентификатор пользователя который был создан на этапе “3_a_ii_2_a” данной процедуры.
- Этап “4” данной процедуры.
- “email” пользователя соответствует значению параметра “email”, который был определен на этапе “2” данной процедуры, выполняется:
- Не имеется “Идентификатора аккаунта в Firebase” и:
- “email” пользователя соответствует значению параметра “email”, который был определен на этапе “2” данной процедуры, выполняется:
- Изменение “Пользователя” с параметрами:
- “Идентификатор аккаунта в Firebase” - “uid”, который был определен на этапе “2” данной процедуры;
- Этап “4” данной процедуры.
- Изменение “Пользователя” с параметрами:
- “email” пользователя не соответствует значению параметра “email”, который был определен на этапе “2” данной процедуры выполняется:
- Создание “Пользователя” с параметрами:
- Роль - “role”, которая была указана при инициации данной процедуры;
- Статус блокировки - false;
- Email - “email”, который был получен из токена, который был расшифрован на этапе “2” данной процедуры;
- Предпочитаемая локаль - “preferred_locale”, которая была указана в заголовке запроса при инициации данной процедуры;
- “Идентификатор аккаунта в Firebase” - “uid”, который был определен на этапе “2” данной процедуры;
- Идентификатор пользователя для создания контакта уведомления - uuid;
- query_params - query_params, который был указан при инициации данной процедуры.
- Выполняется добавление сообщения в очередь “Отправки событий в Make” с параметрами:
- event_type - Создание пользователя;
- entity_id - Идентификатор пользователя который был создан на этапе “3_b_ii_1” данной процедуры.
- Этап “4” данной процедуры.
- Создание “Пользователя” с параметрами:
- “email” пользователя соответствует значению параметра “email”, который был определен на этапе “2” данной процедуры, выполняется:
- Выполняется “02_2.3_4_1 Процедура генерации токена авторизации и обновления” с параметрами:
- Идентификатор пользователя - “Идентификатор пользователя” который был определен на этапе “4” данной процедуры;
- На запрос “Authenticate user via Firebase” возвращается:
- “Токен авторизации”, который был сгенерирован на этапе “4_a” данной процедуры;
- “Токен обновления”, который был сгенерирован на этапе “4_a” данной процедуры.
- Клиентской частью сервиса выполняется:
- Сохранение в LocalStorage:
- Ключа “accessToken” со значением которое соответствует значению параметра “accessToken” которое было получено в ответе на запрос “Authenticate user via Firebase”;
- Ключа “refreshToken” со значением которое соответствует значению параметра “refresh_token” которое было получено в ответе на запрос “Authenticate user via Firebase”.
- Запрос “Get user data”.
- Если запрос “Get user data” выполнен:
- Не успешно, дальнейшие этапы процедуры не выполняются.
- Успешно, выполняется переход к странице которая соответствует состоянию пользователя.
02_2.2_16.1 Ошибки при выполнении процедуры 02_2.2_16
| Код ошибки | Этап | Локаль | Текст ошибки |
|---|---|---|---|
| 0230 | 2_a_i | en | “We couldn’t confirm that it's you. It looks like something went wrong on the internet. Please try again (code 0230)” |
| es | “No pudimos confirmar su identidad. Parece que algo salió mal con la conexión a internet. Por favor, inténtelo de nuevo. (código: 0230).” | ||
| pt | “Não conseguimos confirmar a sua identidade. Parece que algo correu mal com a ligação à internet. Por favor, tente novamente (código: 0230).” | ||
| fr |
02_2.3_17 Процедура изменения настроек уведомления¶
- Клиентской частью сервиса выполняется запрос “Update notification settings and contacts” с телом запроса:
- notification_settings - Массив объектов, элементом объекта является:
- push - Объект, содержащий настройки push-уведомлений, параметрами которого являются:
- is_active - Статус активности push-уведомлений;
- email - Объект, содержащий настройки email-уведомлений, параметрами которого являются:
- is_active - Статус активности email-уведомлений;
- interval - Интервал отправки email-уведомлений;
- push - Объект, содержащий настройки push-уведомлений, параметрами которого являются:
- notification_contacts - Массив объектов, элементом объекта является:
- id - Идентификатор контакта уведомления;
- is_active - Признак доступности email-уведомлений;
- interval - Интервал отправки email-уведомлений;
- id - Идентификатор контакта уведомления;
- campaign_id - Идентификатор кампании.
- Выполняется:
- Изменение “Настроек уведомления” пользователя, который инициировал данную процедуру согласно “notification_settings”, который был указан при инициации данной процедуры;
- Изменение каждого “Контакта уведомления”, который был указан при инициации данной процедуры согласно параметрам:
- Статус активности - “is_active”;
- Интервал - “interval”.
- Если данную процедуру инициировал “Представитель бизнеса” и был указан параметр “campaign_id” и “Статус” данной “Кампании:
- “Приостановлена”, и значение параметра “Статус активности” push или email “Настройки уведомлений” - true, выполняется “07_2.2_3 Процедура изменения Статуса кампании” с параметрами:
- id - Идентификатор кампании для которой инициирована данная процедура
- status - Активная;
- “Активная”, и значение параметра “Статус активности” push и email “Настройки уведомлений” - false, выполняется “07_2.2_3 Процедура изменения Статуса кампании” с параметрами:
- id - Идентификатор кампании для которой инициирована данная процедура
- status - Приостановлена;
- На запрос “Update notification settings and contacts” возвращается информация об успешном выполнении данного запроса.
- Если значение параметра “Статус активности” push “Настройки уведомления” пользователя, который инициировал данную процедуру, было изменено на “true”, клиентской частью сервиса выполняется:
- Запрос разрешения на получение push-уведомлений на устройстве, с которого инициирована данная процедура, если ранее данное разрешение не было запрошено;
- Если разрешение на получение push-уведомлений предоставлено - “02_2.3_18 Процедура регистрации FCM токена”.
FR_02_2.3_17_1 При изменении значения параметра “Статус активности” push “Настройки уведомления” на “false” “FCM токены” “Пользователя” не удаляются.
FR_02_2.3_17_2 Если на устройстве, с которого инициирована данная процедура, разрешение на получение push-уведомлений отклонено или не может быть запрошено, значение параметра “Статус активности” push “Настройки уведомления” сохраняется, а клиентской частью сервиса отображается информация о том, что push-уведомления на данном устройстве не будут получены.
02_2.3_18 Процедура регистрации FCM токена¶
- Клиентской частью сервиса определяется статус разрешения на получение push-уведомлений на устройстве, с которого инициирована данная процедура. Если разрешение не предоставлено - дальнейшие этапы данной процедуры не выполняются.
- Клиентской частью сервиса выполняется получение “FCM токена” согласно документации Firebase. Если данная процедура инициирована:
- Веб-версией сервиса - с указанием значения переменной окружения “VITE_FIREBASE_VAPID_KEY”;
- “Мобильным приложением” - без указания значения переменной окружения “VITE_FIREBASE_VAPID_KEY”.
- Если “FCM токен” не был получен - дальнейшие этапы данной процедуры не выполняются.
- Клиентской частью сервиса выполняется запрос “Регистрация FCM токена” с телом запроса:
fcm_token- “FCM токен”, который был получен на этапе “2” данной процедуры.- Если имеется “FCM токен” со значением
fcm_token, который был указан при инициации данной процедуры - выполняется установка его “Идентификатора пользователя” согласно “Пользователю”, который относится к токену авторизации, указанному в заголовке запроса. На запрос “Регистрация FCM токена” возвращается успешный ответ, дальнейшие этапы данной процедуры не выполняются. - Выполняется создание “FCM токена” с параметрами:
- Дата создания - согласно текущей дате;
- Идентификатор пользователя - идентификатор “Пользователя”, который относится к токену авторизации, указанному в заголовке запроса;
- FCM токен -
fcm_token, который был указан при инициации данной процедуры. - На запрос “Регистрация FCM токена” возвращается успешный ответ.
FR_02_2.3_18_1 Наличие “FCM токена” не определяет получение push-уведомлений. Отправка push-уведомления выполняется согласно “Статусу активности” push “Настройки уведомления” (2.1.1_2.1_1) “Пользователя” согласно “01.1.13_1.1_1 Процедура отправки push-уведомления”.
02_2.3_19 Процедура удаления FCM токена¶
- Клиентской частью сервиса выполняется получение “FCM токена” устройства, с которого инициирована данная процедура, согласно документации Firebase.
- Если “FCM токен” не был получен - дальнейшие этапы данной процедуры не выполняются.
- Клиентской частью сервиса выполняется запрос “Удаление FCM токена” с телом запроса:
fcm_token- “FCM токен”, который был получен на этапе “1” данной процедуры.- Если не имеется “FCM токена” со значением
fcm_token, который был указан при инициации данной процедуры - на запрос “Удаление FCM токена” возвращается успешный ответ. Дальнейшие этапы данной процедуры не выполняются. - Выполняется удаление “FCM токена”, значение которого соответствует
fcm_token, который был указан при инициации данной процедуры. - На запрос “Удаление FCM токена” возвращается успешный ответ.
- Клиентской частью сервиса выполняется удаление “FCM токена” устройства согласно документации Firebase.
FR_02_2.3_19_1 Удаляется только “FCM токен” устройства, с которого инициирована данная процедура. “FCM токены” других устройств “Пользователя” не удаляются.
2.4 Имперсонация¶
Административный сотрудник должен иметь возможность просмотреть клиентскую часть сервиса от лица инлфюэнсера или бизнес представителя.
Для реализации должен использоваться встроенный механизм имперсонации Symfony.
02_2.4_1 Процедура активации режима имперсонации пользователя администратором¶
- Администратор выполняется запрос для активации режима имперсонации пользователя с параметрами:
- user_id - Идентификатор пользователя, для которого инициирована данная процедура;
- Генерируется “Токен авторизации” с параметрами:
- secret_key - Согласно конфигурации системы;
- ttl - 3600 секунд;
- signature_algorithm - HS256;
- user_id - “user_id” который был указан при инициации данной процедуры.
- В ответ на запрос активации режима имперсонации пользователя возвращаются:
- “access_token” cо значением токена авторизации, который был сгенерирован на этапе “2_a” данной процедуры;
- “switch_user” со значением “Электронной почты” пользователя, идентификатор которого был указан при инициации данной процедуры.
- Клиентской частью сервиса выполняется:
- Если в ответе на запрос имеются заголовки “Set-Cookie: access_token” и “Set-Cookie: switch_user”, выполняется сохранение данных cookies;
- Выполняется навигация клиентской часть сервиса в новой вкладке.
2.5 Сессия пользователя¶
02_2.5_1 Процедура создания и обновления сессии пользователя¶
- Выполняется инициация данной процедуры с параметрами:
- session_id;
- action;
- user_id.
- Если при инициации данной процедуры:
- Был указан параметр “session_id”:
- Имеется “Сессия пользователя” идентификатор которой соответствует значению параметра “session_id”, который был указан при инициации данной процедуры, выполняется этап “3” данной процедуры;
- Не имеется “Сессия пользователя” идентификатор которой соответствует значению параметра “session_id”, который был указан при инициации данной процедуры, выполняется:
- Создание “Сессии пользователя” с параметрами:
- Идентификатор - “session_id”, который был указан при инициации данной процедуры;
- Идентификатор пользователя - “user_id”, который был указан при инициации данной процедуры.
- Этап “3” данной процедуры.
- Создание “Сессии пользователя” с параметрами:
- Не был указан параметр “session_id” и для “Пользователя” который был указан при инициации данной процедуры:
- Имеется “Сессия пользователя” выполняется этап “3” данной процедуры;
- Не имеется “Сессии пользователя” выполняется:
- Создание “Сессии пользователя” с параметрами:
- Идентификатор - uuid;
- Идентификатор пользователя - “user_id”, который был указан при инициации данной процедуры.
- Этап “3” данной процедуры.
- Создание “Сессии пользователя” с параметрами:
- Выполняется обновление “Сессии пользователя”, которая была определена на этапе “3” данной процедуры:
- Свойство создания кампании - Если значение параметра “action”, который был указан при инициации данной процедуры - “Создание кампании” определяется как true;
- Свойство создания локации - если значение параметра action, который был указан при инициации данной процедуры, равно «Создание локации», определяется как true;
- Свойство просмотра коллаборации - если значение параметра action, который был указан при инициации данной процедуры, равно «Просмотр коллаборации», определяется как true;
- Свойство просмотра сообщения коллаборации - если значение параметра action, который был указан при инициации данной процедуры, равно «Просмотр сообщения коллаборации», определяется как true;
- Свойство создания сообщения - если значение параметра action, который был указан при инициации данной процедуры, равно «Создание сообщения», определяется как true;
- Свойство создания коллаборации - если значение параметра action, который был указан при инициации данной процедуры, равно «Создание коллаборации», определяется как true.
3. Инфлюэнсер¶
3.1 Данные Аккаунта¶
3.1.1 Параметры Аккаунта пользователя(accounts)¶
| Название | Параметр | Формат | Обяз. | Уник. | Примечание |
|---|---|---|---|---|---|
| Идентификатор | id | bigserial | да | да | |
| Дата создания | created_at | timestamp | да | нет | |
| Дата обновления | updated_at | timestamp | нет | нет | |
| Дата удаления | deleted_at | timestamp | нет | нет | |
| Пользователь | user_id | bigint | нет | нет | |
| Аватар | avatar_id | bigint | нет | нет | |
| Полное имя | full_name | varchar(255) | нет | нет | |
| Имя в сервисе | account | varchar(255) | да | да | Допустимы символы только в нижнем регистре. |
| Информация о пользователе | biography | text | нет | нет | |
| Сервис | service_id | serial | да | нет | |
| Показатель вовлеченности аудитории | engagement_rates | float(6,5) | нет | нет | |
| Количество подписчиков | followers | int | нет | нет | |
| Среднее количество лайков | average_likes | int | нет | нет | |
| Среднее количество комментов | average_comments | int | нет | нет | |
| Город инфлюэнсера | city_id | int | нет | нет | |
| Код языка | language_code | varchar(255) | нет | нет | |
| Код верификации | verification_code | varchar(6) | нет | нет | |
| Статус верификации | verification_status | enum | да | нет | Возможны следующие статусы: 1 - Not verified; 2 - Verified; 3 - Suspended. |
| Дата обновления в источнике данных | profile_updated | datetime | нет | нет | |
| Является ли верифицированным в источнике данных | is_datasource_verified | boolean | нет | нет | |
| Тип аккаунта в источнике данных | datasource_type | varchar(255) | нет | нет | |
| Возрастная группа | age_group | varchar(255) | нет | нет | |
| Среднее количество просмотров reels | avg_reels_plays | int | нет | нет | |
| Среднее количество публикаций, которыми поделились | avg_shares | int | нет | нет | |
| varchar(255) | нет | нет | |||
| Причина отказа верификации | verification_reject_reason | enum | нет | нет | Возможны следующие причины отказа верификации: 1 - Не подходит аккаунт; 2 - Аккаунт скрыт. Является обязательным, если “Статус верификации” - Suspended. |
| Статус автоверификации | auto_verification_result | varchar(255) | нет | нет | |
| Результат автоверификации | verification_comment | text | нет | нет | |
| Средний рейтинг | avg_ratings | decimal(3,2) | нет | нет | |
| Количество оценок | count_ratings | int | нет | нет | |
| Дата проверки доступности | availability_checked_at | datetime | нет | нет | |
| Статус аккаунта во внешнем сервисе | external_account_status | enum | да | нет | Возможны следующие статусы: 1 - Active; 2 - Hidden; 3 - Not found. По умолчанию Active. |
3.1.2 Параметры Данных аккаунта(account_data)¶
| Название | Параметр | Формат | Обяз. | Уник. | Примечание |
|---|---|---|---|---|---|
| Идентификатор | id | bigserial | да | да | |
| Дата создания | created_at | timestamp | да | нет | |
| Дата обновления | updated_at | timestamp | нет | нет | |
| Дата получения | recived_at | timestamp | нет | нет | |
| Аккаунт | account_id | bigint | да | нет | |
| Источник данных | data_source | enum | да | нет | Возможны следующие источники: 1 - Self declared; 2 - Yoloco; 3 - OnSocial; 4 - Other. |
| Исходные данные | raw_data | json | нет | нет | |
| Обработанные данные | processed_data | json | нет | нет | |
| Дата принудительного обновления | forced_refresh_at | timestamp | нет | нет | |
| Принудительное обновление в процессе | is_forced_refresh_in_progress | boolean | нет | нет | По умолчанию false |
3.1.3 Параметры Интересы аккаунта(account_interests)¶
| Название | Параметр | Формат | Обяз. | Уник. | Примечание |
|---|---|---|---|---|---|
| Аккаунт | account_id | bigint | да | нет | |
| Интерес | interest_id | int | да | нет |
3.1.4 Параметры Аудитории аккаунта по языку(account_audience_languages)¶
| Название | Параметр | Формат | Обяз. | Уник. | Примечание |
|---|---|---|---|---|---|
| Идентификатор | id | bigserial | да | да | |
| Аккаунт | account_id | bigint | да | нет | |
| Код языка | language_code | varchar(255) | да | нет | |
| Доля | share | float(6,5) | да | нет |
3.1.5 Параметры Аудитории аккаунта по стране(account_audience_countries)¶
| Название | Параметр | Формат | Обяз. | Уник. | Примечание |
|---|---|---|---|---|---|
| Идентификатор | id | bigserial | да | да | |
| Идентификатор аккаунта | account_id | bigint | да | нет | |
| Код страны | country_code | varchar(255) | да | нет | |
| Доля | share | float(6,5) | да | нет |
3.1.6 Параметры Аудитории аккаунта по городу(account_audience_cities)¶
| Название | Параметр | Формат | Обяз. | Уник. | Примечание |
|---|---|---|---|---|---|
| Идентификатор | id | bigserial | да | да | |
| Аккаунт | account_id | bigint | да | нет | |
| Город | city_id | serial | да | нет | |
| Доля | share | float(6,5) | да | нет |
3.1.7 Параметры Аудитории аккаунта по полу(account_audience_genders)¶
| Название | Параметр | Формат | Обяз. | Уник. | Примечание |
|---|---|---|---|---|---|
| Идентификатор | id | bigserial | да | да | |
| Аккаунт | account_id | bigint | да | нет | |
| Идентификатор пола | gender_audience_id | serial | да | нет | |
| Доля | share | float(6,5) | да | нет |
3.1.8 Параметры Аудитории аккаунта по возрастной группе(account_audience_age_ranges)¶
| Название | Параметр | Формат | Обяз. | Уник. | Примечание |
|---|---|---|---|---|---|
| Идентификатор | id | bigserial | да | да | |
| Аккаунт | account_id | bigint | да | нет | |
| Идентификатор возрастной группы | age_ranges_audience_id | serial | да | нет | |
| Доля | share | float(6,5) | да | нет | |
| Доля мужчин | male_share | float(6,5) | нет | нет | |
| Доля женщин | female_share | float(6,5) | нет | нет |
3.1.9 Параметры Поста аккаунта(account_posts)¶
| Название | Параметр | Формат | Обяз. | Уник. | Примечание |
|---|---|---|---|---|---|
| Идентификатор | id | bigserial | да | да | |
| Аккаунт | account_id | bigint | да | нет | |
| Дата создания | created_at | timestamp | да | нет | |
| Дата удаления | deleted_at | timestamp | нет | нет | |
| Ссылка на пост | link | text | да | да |
3.2 CRUD Аккаунта¶
[draft] 02_3.2_1 Процедура создания аккаунта
[draft] 02_3.2_2 Процедура изменения аккаунта
02_3.2_3 Процедура получения данных аккаунта инфлюэнсера из источника данных¶
- Администратор инициирует синхронизацию данных для аккаунтов инфлюэнсеров.
- Для каждого аккаунта, который был указан администратором выполняется:
- Создание “Данных аккаунта” с параметрами:
- Аккаунт - Идентификатор аккаунта, для которого выполняется этап “2” данной процедуры;
- Источник данных - согласно значению настройки “6.5 Источник данных для аккаунтов инфлюэнсеров”.
- В “3.2.1 Очередь Синхронизация данных аккаунта” добавляется сообщение “Аккаунт для обновления данных” с параметрами:
- Идентификатор данных аккаунта - Идентификатор данных аккаунта которые были созданы на этапе “2_a” данной процедуры.
02_3.2_4 Процедура верификации Аккаунта пользователя¶
- Администратор инициирует верификацию Аккаунта пользователя.
- Выполняется:
- Изменяются параметры Аккаунта пользователя:
- Дата обновления - изменяется согласно текущей дате;
- Статус верификации - “Verified”;
- Создание “Уведомления” с параметрами:
- Дата создания - согласно текущей дате;
- Идентификатор пользователя - Идентификатор пользователя, к которому относится Аккаунт, который был указан при инициации данной процедуры;
- Тип - email;
- Идентификатор динамического шаблона - 8;
- Параметры уведомления:
- “InfluencerUserFullName” : “Полное имя” пользователя к которому относится Аккаунт, для которого была инициирована данная процедура”;
- “InfluencerInstagramName” : “Имя в сервисе” аккаунта, для которого была инициирована данная процедура”;
- “ripplaLink” : “https://app.rippla.com/offers”;
- “SocialNetwork” : “Название” сервиса, к которому относится Аккаунт, для которого была инициирована данная процедура”.
- Статус - “new”.
-
Если предыдущий “Статус верификации” аккаунта был “Suspended” для каждой Коллаборации в одном из статусов “Новая”/“Подтверждена”/”Активная”, которая относится к “Инфлюэнсеру”, к которому относится “Аккаунт”, для которого была инициирована данная процедура, выполняется:
- Создание “Сообщения коллаборации” с параметрами:
- Дата создания - согласно текущей дате;
- Идентификатор коллаборации - Идентификатор коллаборации, для который была инициациирована данная процедура;
- Тип - Системное;
- Идентификатор шаблона - 10;
- Параметры сообщения:
- influencer.full_name - “Полное имя” инфлюэнсера к которому относится “Аккаунт” для которого была инициирована данная процедура.
- Инициатор - Администратор;
- Свойство доступности - Представитель бизнеса.
- Для каждого “Представителя бизнеса”, который относится к “Коллаборации”:
- Для которой было создано сообщение на этапе “2_c” данной процедуры;
-
Для которого имеется подключение к веб-сокету.
выполняется:
- Создание “Сообщения коллаборации” с параметрами:
-
“07_3.3.2_4 Процедура определения количества непрочитанных сообщений пользователя” с параметрами:
- Массив коллабораций - Одномерный массив который содержит идентификаторы коллабораций для которых было создано сообщение на этапе “2_c” данной процедуры;
- Пользователь - Идентификатор пользователя к которому относится “Представитель бизнеса”, для которого выполняется “2_d” данной процедуры;
- Тип - Сообщение.
- Отправка сообщения в веб-сокет “Уведомления от сервиса Centrifugo” для канала “notification_{Идентификатор пользователя к которому относится “Представитель бизнеса”}” с параметрами:
- type - “messages_counters_changed”;
- data - массив “data” который был получен в результате выполнения “07_3.3.2_4 Процедура определения количества непрочитанных сообщений пользователя”.
- Пользователь - Идентификатор пользователя к которому относится “Представитель бизнеса”, для которого выполняется “2_d” данной процедуры;
- Выполняется “07_3.3.2_6 Процедура отправки сообщений коллаборации в веб-сокет” с параметрами:
- Идентификаторы сообщений коллабораций - Идентификаторы сообщений коллаборации, которые были созданы на этапе “2” данной процедуры.
- В очередь “Отправка email-уведомлений через сервис Sendgrid” добавляется сообщение “Email-уведомление” с параметрами:
- Идентификатор уведомления - идентификатор уведомления которое было создано на этапе “2_b” данной процедуры.
02_3.2_5 Процедура приостановки Аккаунта пользователя¶
- Администратор инициирует приостанавливает верификацию Аккаунта пользователя с параметрами:
- Идентификатор пользователя;
- Причина отклонения верификации.
- Выполняется:
- Изменяются параметры Аккаунта пользователя:
- Дата обновления - изменяется согласно текущей дате;
- Статус верификации - “Suspended”;
- Причина отклонения верификации - “Причина отклонения верификации”, которая была указана при инициации данной процедуры.
- Создание “Уведомления” с параметрами:
- Дата создания - согласно текущей дате;
- Идентификатор пользователя - Идентификатор пользователя, к которому относится Аккаунт, который был указан при инициации данной процедуры;
- Тип - email;
- Идентификатор динамического шаблона - Если “Причина отклонения верификации”, которая была указана при инициации данной процедуры:
- “Не подходит аккаунт” - 36;
- “Аккаунт скрыт” - 9.
- Параметры уведомления:
- “InfluencerUserFullName” : “Полное имя” пользователя к которому относится Аккаунт, для которого была инициирована данная процедура”;
- “InfluencerInstagramName” : “Имя в сервисе” аккаунта, для которого была инициирована данная процедура”;
- “ReVerifyLink” : “https://app.rippla.com”;
- “SocialNetwork” : “Название” сервиса, к которому относится Аккаунт, для которого была инициирована данная процедура”.
- Статус - “new”.
-
Для каждой Коллаборации в одном из статусов “Новая”/“Подтверждена”/”Активная”, которая относится к “Инфлюэнсеру”, к которому относится “Аккаунт”, для которого была инициирована данная процедура, выполняется:
- Создание “Сообщения коллаборации” с параметрами:
- Дата создания - согласно текущей дате;
- Идентификатор коллаборации - Идентификатор коллаборации, для который была инициациирована данная процедура;
- Тип - Системное;
- Идентификатор шаблона - 9;
- Параметры сообщения:
- influencer.full_name - “Полное имя” инфлюэнсера к которому относится “Аккаунт” для которого была инициирована данная процедура.
- Инициатор - Администратор;
- Свойство доступности - Представитель бизнеса.
- Для каждого “Представителя бизнеса”, который относится к “Коллаборации”:
- Для которой было создано сообщение на этапе “2_c” данной процедуры;
-
Для которого имеется подключение к веб-сокету.
выполняется:
- Создание “Сообщения коллаборации” с параметрами:
-
“07_3.3.2_4 Процедура определения количества непрочитанных сообщений пользователя” с параметрами:
- Массив коллабораций - Одномерный массив который содержит идентификаторы коллабораций для которых было создано сообщение на этапе “2_c” данной процедуры;
- Пользователь - Идентификатор пользователя к которому относится “Представитель бизнеса”, для которого выполняется “2_d” данной процедуры;
- Тип - Сообщение.
- Отправка сообщения в веб-сокет “Уведомления от сервиса Centrifugo” для канала “notification_{Идентификатор пользователя к которому относится “Представитель бизнеса”}” с параметрами:
- type - “messages_counters_changed”;
- data - массив “data” который был получен в результате выполнения “07_3.3.2_4 Процедура определения количества непрочитанных сообщений пользователя”.
- Пользователь - Идентификатор пользователя к которому относится “Представитель бизнеса”, для которого выполняется “2_d” данной процедуры;
- Выполняется “07_3.3.2_6 Процедура отправки сообщений коллаборации в веб-сокет” с параметрами:
- Идентификаторы сообщений коллабораций - Идентификаторы сообщений коллаборации, которые были созданы на этапе “2” данной процедуры.
- В очередь “Отправка email-уведомлений через сервис Sendgrid” добавляется сообщение “Email-уведомление” с параметрами:
- Идентификатор уведомления - идентификатор уведомления которое было создано на этапе “2_b” данной процедуры.
02_3.2_6 Процедура импорта списка инфлюэнсеров¶
- Административный сотрудник инициирует “Импорт списка инфлюэнсеров” добавляя файл на странице списка инфлюэнсеров.
- Если mime-тип добавленного файла:
- Не соответствует расширению согласно “NFR_02_3.2_6.1” в панели управления должна отобразиться ошибка;
- Соответствует расширению согласно “NFR_02_3.2_6.1” выполняется этап “3” данной процедуры.
- Для каждой записи которая указана в “Файле”, который указан при инициации данной процедуры нормализованное значение определяется как результат выполнения “02_3.2_14 Процедура определения имени в сервисе Instagram” с параметром:
- Значение - значение данной записи.
- Для каждой записи нормализованное значение которой соответствует “Имени в сервисе” одного из аккаунтов:
- Создание “Данных аккаунта” с параметрами:
- Аккаунт - Идентификатор аккаунта, “Имя в сервисе” которого соответствуют нормализованному значению записи;
- Источник данных - согласно значению настройки “6.5 Источник данных для аккаунтов инфлюэнсеров”.
- В “3.2.1 Очередь Синхронизация данных аккаунта” добавляется сообщение “Аккаунт для обновления данных” с параметрами:
- Идентификатор данных аккаунта - Идентификатор данных аккаунта которые были созданы на этапе “4_a” данной процедуры.
- В панели управление должно отобразиться сообщение об успешном выполнении данной процедуры.
NFR_02_3.2_6.1
Требования к файлу импорта списка инфлюэнсеров:
- Расширение - xls / xlsx;
- Первая колонка должна содержать список аккаунтов инфлюэнсера.
02_3.2_7 Процедура импорта списка инфлюэнсеров с созданием профилей¶
- Административный сотрудник инициирует “Импорт списка инфлюэнсеров с созданием профилей” добавляя файл на странице списка инфлюэнсеров.
- Если mime-тип добавленного файла:
- Не соответствует расширению согласно “NFR_02_3.2_6” в панели управления должна отобразиться ошибка;
- Соответствует расширению согласно “NFR_02_3.2_6” выполняется этап “3” данной процедуры.
- Для каждой записи которая указана в “Файле”, который указан при инициации данной процедуры нормализованное значение определяется как результат выполнения “02_3.2_14 Процедура определения имени в сервисе Instagram” с параметром:
- Значение - значение данной записи.
- Для каждой записи нормализованное значение которой:
- Соответствует “Имени в сервисе” аккаунта выполняется:
- Создание “Данных аккаунта” с параметрами:
- Аккаунт - Идентификатор аккаунта, “Имя в сервисе” которого соответствуют нормализованному значению записи;
- Источник данных - согласно значению настройки “6.5 Источник данных для аккаунтов инфлюэнсеров”.
- В “3.2.1 Очередь Синхронизация данных аккаунта” добавляется сообщение “Аккаунт для обновления данных” с параметрами:
- Идентификатор данных аккаунта - Идентификатор данных аккаунта для которого выполняется этап “4_a_i” данной процедуры.
- Создание “Данных аккаунта” с параметрами:
- Не соответствует “Имени в сервисе” аккаунта выполняется:
- Создание “Аккаунта” с параметрами:
- Имя в сервисе - Значение записи для которой выполняется этап “4_b” данной процедуры;
- Сервис - 1;
- Статус верификации - Not verified;
- Создание “Данных аккаунта” с параметрами:
- Аккаунт - Идентификатор аккаунта, который был создан на этапе “4_b_i” данной процедуры;
- Источник данных - согласно значению настройки “6.5 Источник данных для аккаунтов инфлюэнсеров”.
- В “3.2.1 Очередь Синхронизация данных аккаунта” добавляется сообщение “Аккаунт для обновления данных” с параметрами:
- Идентификатор данных аккаунта - Идентификатор данных аккаунта которые были созданы на этапе “4_b_ii” данной процедуры.
- Создание “Аккаунта” с параметрами:
- В панели управление должно отобразиться сообщение об успешном выполнении данной процедуры.
02_3.2_8 Процедура получения инфлюэнсера¶
- Клиентской частью сервиса выполняется запрос “Get influencer”;
- Если для “Представителя бизнеса” который инициировал выполнение данной процедуры:
- Не имеется “Активной подписки пользователя” и не имеется “Коллаборации”:
- В “Статусе” - завершена, которая относится к “Бизнесу”, к которому относится данный представитель бизнеса и “Инфлюэнсеру”, для которого инициирована данная процедура;
и - К которой относится минимум один “Пост коллаборации”, который относится к “Бизнесу”, к которому относится данный представитель бизнеса и “Инфлюэнсеру”, для которого инициирована данная процедура выполняется.
-
- “02_3.2_9 Процедура скрытия контактных данных” с параметрами:
- value - “Полное имя” аккаунта, для которого инициирована данная процедура;
- full_replace.
- “02_3.2_9 Процедура скрытия контактных данных” с параметрами:
- value - “Имя в сервисе” аккаунта, для которого инициирована данная процедура;
- full_replace.
- “02_3.2_9 Процедура скрытия контактных данных” с параметрами:
- value - “Информация о пользователе” аккаунта, для которого инициирована данная процедура;
- “02_3.2_9 Процедура скрытия контактных данных” с параметрами:
- value - “Описание” пользователя, к которому относится аккаунт, для которого инициирована данная процедура.
- “02_3.2_9 Процедура скрытия контактных данных” с параметрами:
- На запрос “Get influencer” возвращается информация которая была получена в ходе “2_a” данной процедуры и которая должна быть возвращена для запроса “Get influencer”;
- В “Статусе” - завершена, которая относится к “Бизнесу”, к которому относится данный представитель бизнеса и “Инфлюэнсеру”, для которого инициирована данная процедура;
- Имеется “Активная подписка пользователя” или “Возможности использования бесплатной коллаборации” на запрос “Get influencer” возвращается информация которая должна быть возвращена для запроса “Get influencer”.
02_3.2_9 Процедура скрытия контактных данных¶
- Инициируется выполнение данной процедуры с параметрами:
- value;
- full_replace.
- Если при инициации данной процедуры:
- Был указан параметр “full_replace”, для параметра “value” который был указан при инициации данной процедуры выполняется замена строкой которая генерируется согласно следующим требованиям:
- Длина - “Длина подстроки, которая должна быть заменена” + 4;
- Значение:
- Должно начинаться с “[[”;
- Должно заканчиваться “]]”;
- Между символами [[ и ]] генерируется последовательность случайных символов латинского алфавита в нижнем регистре (a–z).
-
Не был указан параметр “full_replace”, для параметра “value” который был указан при инициации данной процедуры, если значение параметра содержит подстроку которая соответствует одному из регулярных выражений:
- “\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b”;
- “(?\<!\w)@[A-Za-z0-9._]{2,50}\b”;
- “(?:(?:\+|00)\d{1,3}[\s-]?)?(?:\(?\d{2,4}\)?[\s-]?)?\d{3,4}[\s-]?\d{2,4}(?:[\s-]?\d{2,4})?”;
- “\b(?:TikTok|TikT|TT|YouTube|YT|Instagram|Insta|IG|FB|Facebook|Whatsapp|WhatsApp|WA|Telegram|Tele|Tg|Twitch|TW|LinkedIn|Linkedin|LI|OnlyFans|OF|Twitter|X|Threads|Snapchat|Snap|SC|Discord|Disc|DC|Reddit|RD|Pinterest|Pin|Viber|VB|WeChat|WC|Skype|SK|Zoom|ZM|Signal|SG|Clubhouse|CH|BeReal|BR|Mastodon|Masto|Bluesky|BS)\b[\s:.\-—]*”;
- “\b((?:https?:\/\/)?(?:www\.)?[a-zA-Z0-9-]+(?:\.[a-zA-Z]{2,})(?:\/[^\s]*)?)\b”.
для каждой подстроки, которая соответствует, одному из регулярных выражений, выполняется замена строкой которая генерируется согласно следующим требованиям:
- Длина - “Длина подстроки, которая должна быть заменена” + 4;
- Значение:
- Должно начинаться с “[[”;
- Должно заканчиваться “]]”;
- Между символами [[ и ]] генерируется последовательность случайных символов латинского алфавита в нижнем регистре (a–z).
- Инициатору данной процедуры возвращается строка, которая была сформирована на этапе “2” данной процедуры.
02_3.2_10 Процедура получения инфлюэнсера публичным методом¶
- Клиентской частью сервиса выполняется запрос “Get influencer public”;
- Выполняется:
- “02_3.2_9 Процедура скрытия контактных данных” с параметрами:
- value - “Полное имя” аккаунта, для которого инициирована данная процедура;
- full_replace.
- “02_3.2_9 Процедура скрытия контактных данных” с параметрами:
- value - “Имя в сервисе” аккаунта, для которого инициирована данная процедура;
- full_replace.
- “02_3.2_9 Процедура скрытия контактных данных” с параметрами:
- value - “Информация о пользователе” аккаунта, для которого инициирована данная процедура;
- “02_3.2_9 Процедура скрытия контактных данных” с параметрами:
- value - “Описание” пользователя, к которому относится аккаунт, для которого инициирована данная процедура.
- На запрос “Get influencer public” возвращается информация которая была получена в ходе “2” данной процедуры и которая должна быть возвращена для запроса “Get influencer public”.
02_3.2_11 Процедура установки ограничения откликов инфлюэнсера¶
- Выполняется инициация данной процедуры с параметрами:
- Идентификатор инфлюэнсера;
- free_active_collabs.
- Выполняется:
- Если для Инфлюэнсера, для которого инициирована данная процедура, имеется “Персональное количество бесплатных откликов”:
- Изменение “Персонального количества бесплатных откликов” с параметрами:
- Дата обновления — согласно текущей дате;
- Количество бесплатных откликов — согласно значению параметра “free_active_collabs”, который был указан при инициации данной процедуры.
- Изменение “Персонального количества бесплатных откликов” с параметрами:
- Если для Инфлюэнсера, для которого инициирована данная процедура, не имеется “Персонального количества бесплатных откликов”:
- Создание “Персонального количества бесплатных откликов” с параметрами:
- Дата создания — согласно текущей дате;
- Идентификатор инфлюэнсера — Идентификатор инфлюэнсера, для которого инициирована данная процедура;
- Количество бесплатных откликов — согласно значению параметра “free_active_collabs”, который был указан при инициации данной процедуры.
- Создание “Персонального количества бесплатных откликов” с параметрами:
- Если для Инфлюэнсера, для которого инициирована данная процедура, имеется подключение к веб-сокету и значение параметра “Количество бесплатных откликов” “Персонального количества бесплатных откликов”, которое было установлено на этапе “2” данной процедуры — 0, выполняется отправка сообщения в веб-сокет “Уведомления от сервиса Centrifugo” для канала “notification_{Идентификатор пользователя, к которому относится данный Инфлюэнсер}” с параметрами:
- type — “content_upload_restriction”;
- data.is_content_upload_locked — true.
- Если данная процедура была инициирована запросом “Restrict influencer responses”, на данный запрос возвращается информация об успешном выполнении данного запроса.
02_3.2_12 Процедура снятия ограничения откликов инфлюэнсера¶
- Выполняется инициация данной процедуры с параметрами:
- Идентификатор инфлюэнсера.
- Выполняется удаление “Персонального количества бесплатных откликов”, которое относится к Инфлюэнсеру, для которого инициирована данная процедура.
- Если для Инфлюэнсера, для которого инициирована данная процедура, имеется подключение к веб-сокету, выполняется отправка сообщения в веб-сокет “Уведомления от сервиса Centrifugo” для канала “notification_{Идентификатор пользователя, к которому относится данный Инфлюэнсер}” с параметрами:
- type — “content_upload_restriction”;
- data.is_content_upload_locked — false.
- Если данная процедура была инициирована запросом “Unrestrict influencer responses”, на данный запрос возвращается информация об успешном выполнении данного запроса.
02_3.2_13 Проверка возможности снятия ограничения по контенту с инфлюэнсера¶
- Выполняется инициация данной проверки с параметрами:
- Идентификатор инфлюэнсера.
- Выполняется проверка возможности снятия ограничения по контенту с Инфлюэнсера, для которого инициирована данная проверка. Ограничение может быть снято, если для каждой “Коллаборации”, которая относится к “Аккаунту”, к которому относится данный Инфлюэнсер:
-
Значение параметра “Количество постов к загрузке” — 0;
и
-
Значение параметра “Количество сторис к загрузке” — 0;
и
-
Не имеется “Поста коллаборации”, который относится к данной “Коллаборации” и для которого значение параметра “Статус необходимости загрузки статистики” — true.
02_3.2_14 Процедура определения имени в сервисе Instagram¶
- Выполняется инициация данной процедуры с параметрами:
- Значение.
- Из “Значения” удаляются пробельные символы в начале и в конце строки, “Значение” приводится к нижнему регистру.
- Если “Значение” содержит подстроку “instagram.com/” / “instagr.am/”, из “Значения” удаляется часть строки до данной подстроки включительно.
- Если “Значение” начинается с подстроки “@”, из “Значения” удаляется первый символ строки.
- Из “Значения” удаляется часть строки начиная с первого из символов “/” / “?” / “#”.
- Инициатору данной процедуры возвращается “Значение”, полученное на этапе “5” данной процедуры.
3.2.1 Очередь синхронизации данных аккаунта(influencer_data_sync)¶
Очередь предназначена для синхронизации данных аккаунта с источником данных.
Очередь состоит из:
- Брокера сообщений, который предназначен для хранения информации об аккаунте для которого необходимо выполнить синхронизацию.
- Обработчика сообщений.
Повторная отправка сообщения очереди
Если сообщение не было обработано “Обработчиком сообщений”, должна выполняться повторная отправка сообщения “Обработчику сообщений” согласно настройкам повторной отправки сообщений.
Настройки повторной отправки сообщений
| Настройка | Значение | Описание |
|---|---|---|
| Первоначальная отсрочка | 7200000 | Первоначальная отсрочка отправки сообщения в миллисекундах. |
| Количество попыток | 24 | Количество повторных попыток отправки сообщения |
| Множитель отсрочки | 1 |
3.2.1.1 Параметры сообщения “Аккаунт для обновления данных”
| Название | Ключ | Значение |
|---|---|---|
| Идентификатор данных аккаунта | account_data_id | “Идентификатор” данных аккаунта, для которого должна быть выполнена синхронизация данных. |
02_3.2.1_1 Процедура обработки сообщения “Аккаунт для обновления данных”¶
- Наступает время обработки сообщения, брокер отправляет сообщение обработчику сообщений.
- Обработчик получает сообщение “Аккаунт для обновления данных”.
- Выполняется логирование события с Payload:
- event - "received";
- title - “Account for updating data”;
- data.account_data_id - Идентификатор данных аккаунта, который был получен в сообщении для которого была инициирована данная процедура.
- Если “Источник данных” данных аккаунта, для которых выполняется обработка сообщения:
- “Yoloco”:
- Выполняется “01.1.2_1.2_1 Процедура получения данных аккаунта от Yoloco” с параметрами:
- account - “Имя в сервисе” аккаунта, к которому относятся “Данные аккаунта”, для которого выполняется обработка сообщения.
- Если “01.1.2_1.2_1 Процедура получения данных аккаунта от Yoloco”:
- Не выполнена, брокеру сообщений не возвращается информация о том что сообщение было обработано. Дальнейшие этапы данной процедуры не выполняются.
- Выполнена и “Исходные данные” содержат параметр “status” значение которого:
- "Some Error"/"Does not exist"/"Private Account" брокеру сообщений возвращается информация о том что сообщение было обработано. Дальнейшие этапы данной процедуры не выполняются.
- Не "Parsing in progress" или "Done" брокеру сообщений возвращается информация о том что сообщение было обработано. Дальнейшие этапы данной процедуры не выполняются.
- "Parsing in progress" брокеру сообщений не возвращается информация о том что сообщение было обработано. Дальнейшие этапы данной процедуры не выполняются.
- “Done” выполняется этап “5” данной процедуры.
- Выполняется “01.1.2_1.2_1 Процедура получения данных аккаунта от Yoloco” с параметрами:
- “OnSocial”:
- Выполняется “01.1.8_1_1 Процедура получения данных аккаунта от OnSocial” с параметрами:
- url - “Имя в сервисе” аккаунта, к которому относятся “Данные аккаунта”, для которого выполняется обработка сообщения.
- Если “01.1.8_1_1 Процедура получения данных аккаунта от OnSocial”:
- Не выполнена, брокеру сообщений не возвращается информация о том что сообщение было обработано. Дальнейшие этапы данной процедуры не выполняются.
- Выполнена успешно и “Исходные данные” данных аккаунта:
- Содержат параметр “error" брокеру сообщений возвращается информация о том что сообщение было обработано. Дальнейшие этапы данной процедуры не выполняются.
- Выполняется “01.1.8_1_1 Процедура получения данных аккаунта от OnSocial” с параметрами:
- Выполняется “02_3.2.1_1.1 Процедура обработки исходных данных” с параметрами:
- Идентификатор данных аккаунта, для которых выполняется обработка сообщения.
- Если “02_3.2.1_1.1 Процедура обработки исходных данных” не выполнена:
- Выполняется логирование события с Payload:
- title - “Account for updating”;
- error - “Data parsing isn’t done correctly";
- data.account_data_id - Идентификатор данных аккаунта, который был получен в сообщении для которого была инициирована данная процедура.
- Брокеру сообщений возвращается информация о том что сообщение было обработано.
- Выполняется логирование события с Payload:
- Если “02_3.2.1_1.1 Процедура обработки исходных данных” выполнена успешно, брокеру сообщений возвращается информация о том что сообщение было обработано.
- Если сообщение “Аккаунт для обновления данных” удаляется из очереди выполняется изменение параметров “Данных аккаунта”:
- Дата обновления - согласно текущей дате;
- Исходные данные - объект который содержит следующие параметры:
- “status” : “Account data has not been received within 48 hours.”
02_3.2.1_1.1 Процедура обработки исходных данных¶
- Инициируется обработка исходных данных с параметрами:
- Идентификатор данных аккаунта.
- Выполняется маппинг исходных данных:
- Если источник данных ”Yoloco” выполняется согласно “01.1.2_1_2 Маппинг данных аккаунта от Yoloco”
- Если источник данных ”OnSocial” выполняется согласно “01.1.8_1_2 Маппинг данных аккаунта от OnSocial”;
- Если в исходных данных, которые были получены на этапе “2” данной процедуры:
- Имеется значение для параметра “avatar” выполняется:
- Скачивание изображения по URL согласно значению параметра “avatar”;
- Если загрузка изображения:
- Выполнена не успешно выполняется этап “4” данной процедуры;
- Выполнена успешно выполняется:
- Генерация имени файла согласно документации;
- Сохранение файла согласно следующим требованиям:
- Путь -{host согласно окружению}/uploads/{текущий год}/{текущий месяц}/{текущий день};
- Имя файла - Имя файла, которое было сгенерировано на этапе “3_a_ii_2_a” данной процедуры.
- Создание “Файла” согласно следующим параметрам:
- Дата создания - текущая дата;
- Ссылка - Имя файла, которое было сгенерировано на этапе “3_a_ii_2_a” данной процедуры.
- Изначальное название файла - название файла, которое указано в параметре файле, который был скачен на этапе “3_a_i” данной процедуры.
- Выполняется добавление сообщения “File” в очередь “Загрузки файлов в Cloudflare” с параметрами:
- Идентификатор файла - Идентификатор файла, который был создан на этапе “3_a_ii_2_c” данной процедуры.
- Этап “4” данной процедуры;
- Не имеется значения для параметра “avatar” выполняется этап “4” данной процедуры.
- Выполняется:
- Изменяются параметры “Пользователя” к которому относится “Аккаунт”, к которому относятся “Данные аккаунта” для которых была инициирована данная процедура, согласно данным, которые были получены на этапе “2” данной процедуры:
- Аккаунты - согласно значению параметра “accounts”.
- Изменяются параметры “Аккаунта”, к которому относятся “Данные аккаунта” для которых была инициирована данная процедура, согласно данным, которые были получены на этапе “2” данной процедуры:
- Дата обновления - согласно текущей дате;
- Аватар - “Идентификатор” файла, который был создан на этапе “3_a_ii_2_b” данной процедуры;
- Полное имя - согласно значению параметра “fullName”;
- Информация о пользователе - согласно значению параметра “biography”;
- Показатель вовлеченности аудитории - согласно значению параметра “engagementRate”;
- Количество подписчиков - согласно значению параметра “followersCount”;
- Среднее количество лайков - согласно значению параметра “likesCount”;
- Среднее количество комментов- согласно значению параметра “commentsCount”;
- Город инфлюэнсера:
- Определяется “Город”:
- Один из “Псевдонимов” которого соответствует значению параметра “city.name”;
- Который относится к “Стране”, “Название” которой соответствует значению параметра “city.countryName”.
-
- Если “Город” был определен на этапе “4_a_ix_1” данной процедуры, Город инфлюэнсера определяется как “Идентификатор” города, который был определен.
- Если “Город” не был определен на этапе “4_a_ix_1” данной процедуры:
- Выполняется создание “Города” с параметрами:
- Код страны:
- Код страны - если по значению параметра “city.countryName” определяется страна;
- Согласно значению параметра “city.countryName” - если по данному значению не определяется страна;
- Название - согласно значению параметра “name”;
- Псевдонимы - массив который содержит следующие элементы:
- Элемент №1 - согласно значению параметра “name”.
- Важность - 0;
- Источник данных - согласно источнику данных “Данных аккаунта” для которого выполняется данная процедура.
- Код страны:
- Город инфлюэнсера определяется как “Идентификатор” города, который был создан на этапе “4_a_ix_2_b_i”.
- Определяется “Город”:
- Код языка - согласно значению параметра “languageCode”;
- Дата обновления в источнике данных - согласно значению параметра “profileUpdated”;
- Является ли верифицированным в источнике данных - согласно значению параметра “isVerified”;
- Тип аккаунта в источнике данных - согласно значению параметра “accountType”;
- Возрастная группа - согласно значению параметра “ageGroup”
- Среднее количество просмотров reels - согласно значению параметра ”avgReelsPlays”
- Среднее количество публикаций, которыми поделились” аккаунта инфлюэнсер - согласно значению параметра “avgShares”;
- Email - согласно значению параметра “email”.
- Изменяются параметры “Данных аккаунта”, согласно данным, которые были получены на этапе “2” данной процедуры:
- “Обработанные данные” - определяется как структура данных в формате JSON “02_3.2.1_1.1_1 Processed data”
- Синхронизируются “Интересы аккаунта”:
- Удаляются “Интересы аккаунта” которые относятся к “Интересу”, “Оригинального названия” которого, не имеется в массиве “interests”.
- Для каждого интереса который имеется в массиве “interests” и для которого не имеется “Интереса аккаунта”, который относится к “Аккаунту”, для которого была инициирована данная процедура, выполняется “3.2.1_1.1.1 Процедура создания Интереса аккаунта” с параметрами:
- Идентификатор аккаунта - идентификатор аккаунта, для которого была инициирована данная процедура;
- Название интереса - согласно элементу справочника “interests”.
- Если audience_followers.success - true:
- Синхронизируется “Аудитория аккаунта по языку”:
- Удаляются “Аудитории аккаунта по языку”, “Код языка” которых не соответствует ни одному из языков в массиве “languageAudience” по параметру “languageAudience[].code”;
- Если для “Аккаунта” имеется “Аудитория аккаунта по языку”, “Код языка” которой соответствует одному из языков в массиве “languageAudience” по параметру “languageAudience[].code”, “Доля” данной “Аудитории аккаунта по языку” изменяется согласно значению параметра “share” того объекта в массиве “languageAudience” которому соответствует “Код языка” аудитории аккаунта по языку;
- Если для “Аккаунта” не имеется “Аудитории аккаунта по языку”, “Код языка” которой соответствует одному из языков в массиве “languageAudience” по параметру “languageAudience[].code” выполняется создание “Аудитории аккаунта по языку” с параметрами:
- Аккаунт - идентификатор аккаунта, для которого была инициирована данная процедура;
- Код языка - согласно значению параметра “languageAudience[].code”;
- Доля - согласно значению параметра “languageAudience[].share”
- Синхронизируется “Аудитория аккаунта по стране”:
- Удаляются “Аудитории аккаунта по стране”, “Код страны” которых не соответствует ни одной из стран в массиве “countryAudience”;
- Если для “Аккаунта” имеется “Аудитория аккаунта по стране”, “Код страны” которой соответствует одной из стран в массиве “countryAudience”, “Доля” данной “Аудитории аккаунта по стране” изменяется согласно значению параметра “share” того объекта в массиве “countryAudience” которому соответствует “Код страны” аудитории аккаунта по стране;
- Если для “Аккаунта” не имеется “Аудитории аккаунта по стране”, “Код страны” которой соответствует одной из стран в массиве “countryAudience” выполняется создание “Аудитории аккаунта по стране” с параметрами:
- Аккаунт - идентификатор аккаунта, для которого была инициирована данная процедура;
- Код страны:
- Код страны из маппинга “Настройки маппинга названий стран” - если значение параметра “countryAudience.countryName” имеется в данном маппинге;
- Код страны - если по значению параметра “countryAudience.countryName” определяется страна;
- Согласно значению параметра “countryAudience.countryName” - если по данному значению не определяется страна;
- Доля - согласно значению параметра “countryAudience.share”
-
Синхронизируется “Аудитория аккаунта по городу”:
- Удаляются “Аудитории аккаунта по городу”, которые относятся к “Городу”, “Название” которого не соответствует ни одному из городов в массиве “cityAudience” по параметру “cityAudience.cityName”;
-
Если для “Аккаунта” имеется “Аудитория аккаунта по городу”, которая относятся к “Городу”:
- “Название” которого соответствует одному из городов в массиве “cityAudience” по параметру “cityAudience.cityName”;
- Название страны, согласно “Коду страны” города, соответствует значению параметра “cityAudience.countryName”;
“Доля” данной “Аудитории аккаунта по городу” изменяется согласно значению параметра “share” того объекта в массиве “cityAudience”, которому соответствует “Название” и “Название” страны, “Города” к которому относится “Аудитория аккаунта по городу”;
-
Если для “Аккаунта” не имеется “Аудитории аккаунта по городу”, которая относятся к “Городу”:
- “Название” которого соответствует одному из городов в массиве “cityAudience” по параметру “cityAudience.cityName”;
- Название страны, согласно “Коду страны”, соответствует значению параметра “cityAudience.countryName”.
выполняется “3.2.1_1.1.2 Процедура создания Аудитории аккаунта по городу” с параметрами:
- Аккаунт - идентификатор аккаунта, для которого была инициирована данная процедура;
- Название города - согласно значению параметра “cityAudience.cityName” объекта для которого не имеется соответствующей “Аудитория аккаунта по городу”;
- Название страны - согласно значению параметра “cityAudience.countryName” объекта для которого не имеется соответствующей “Аудитория аккаунта по городу”;
- Доля - согласно значению параметра “cityAudience[].share” объекта для которого не имеется соответствующей “Аудитория аккаунта по городу”.
- Синхронизируется “Аудитории аккаунта по полу”. При выполнении синхронизации “Названия” должны быть приведены к нижнему регистру:
- Удаляются “Аудитории аккаунта по полу”, которые относятся к “Полу аудитории”, “Название” которого не соответствует ни одному из полов аудитории в массиве “genderAudience” по параметру “genderAudience[].genderName”;
- Если для “Аккаунта” имеется “Аудитория аккаунта по полу”, которая относятся к “Полу аудитории”, “Название” которого соответствует одному из полов аудитории в массиве “genderAudience” по параметру “genderAudience[].genderName”, “Доля” данной “Аудитории аккаунта по городу” изменяется согласно значению параметра “share” того объекта в массиве “genderAudience” которому соответствует “Название” пола аудитории, к которому относится “Аудитория аккаунта по полу”;
- Если для “Аккаунта” не имеется “Аудитории аккаунта по полу”, которая относятся к “Полу аудитории”, “Название” которого соответствует одному из полов аудитории в массиве “genderAudience” по параметру “genderAudience[].genderName” выполняется “3.2.1_1.1.3 Процедура создания Аудитории аккаунта по полу” с параметрами:
- Синхронизируется “Аудитории аккаунта по полу”. При выполнении синхронизации “Названия” должны быть приведены к нижнему регистру:
- Аккаунт - идентификатор аккаунта, для которого была инициирована данная процедура;
- Название пола - согласно значению параметра “genderAudience[].genderName” объекта для которого не имеется соответствующей “Аудитория аккаунта по полу”;
- Доля - согласно значению параметра “genderAudience[].share” объекта для которого не имеется соответствующей “Аудитория аккаунта по полу”.
- Синхронизируется “Аудитория аккаунта по возрастной группе”. При синхронизации должно выполняться требование “02_3.2.1_1.1_2 Соответствие названий возрастных групп” :
- Удаляются “Аудитории аккаунта по возрастной группе”, которые относятся к “Возрастной группе”, “Название” которой не соответствует ни одной из возрастных групп в массиве “ageRangeAudience” по параметру “ageRangeAudience[].ageRangeName”;
- Если для “Аккаунта” имеется “Аудитория аккаунта по возрастной группе”, которая относятся к “Возрастной группе”, “Название” которой соответствует одной из возрастных групп в массиве “ageRangeAudience” по параметру “ageRangeAudience[].ageRangeName”, “Доля” данной “Аудитории аккаунта по возрастной группе” изменяется согласно значению параметра “share” того объекта в массиве “ageRangeAudience” которому соответствует “Название” возрастной группы, к которому относится “Аудитория аккаунта по возрастной группе”;
- Если для “Аккаунта” не имеется “Аудитории аккаунта по возрастной группе”, которая относятся к “Возрастной группе”, “Название” которой соответствует одной из возрастных групп в массиве “ageRangeAudience” по параметру “ageRangeAudience[].ageRangeName” выполняется 3.2.1_1.1.4 Процедура создания “Аудитории аккаунта по возрастной группе” с параметрами:
- Синхронизируется “Аудитория аккаунта по возрастной группе”. При синхронизации должно выполняться требование “02_3.2.1_1.1_2 Соответствие названий возрастных групп” :
- Аккаунт - идентификатор аккаунта, для которого была инициирована данная процедура;
- Название возрастной группы - согласно значению параметра “ageRangeAudience[].ageRangeName” объекта для которого выполняется создание “Аудитории аккаунта по возрастной группе”;
- Доля мужчин - согласно значению “ageRangeAudience[].maleShare” объекта для которого выполняется создание “Аудитории аккаунта по возрастной группе”;
- Доля женщин - согласно значению “ageRangeAudience[].femaleShare” объекта для которого выполняется создание “Аудитории аккаунта по возрастной группе”;
- Доля - согласно значению “ageRangeAudience[].share” объекта для которого выполняется создание “Аудитории аккаунта по возрастной группе”.
- Синхронизируется “Аудитория аккаунта по языку”:
02_3.2.1_1.1_1 Processed data
| Параметр | Описание | Значение |
|---|---|---|
| user_profile.stat_history | Согласно значению “statHistory” | |
| user_profile.relevant_tags | Согласно значению “relevantTags” | |
| user_profile.top_posts | Согласно значению “topPosts” | |
| user_profile.recent_posts | Согласно значению “recentPosts” | |
| user_profile.top_reels | Согласно значению “topReels” | |
| user_profile.recent_reels | Согласно значению “recentReels” | |
| audience_likers | Согласно значению “audienceLikers” | |
| audience_followers | Согласно значению “audienceFollowers” |
02_3.2.1_1.1_2 Соответствие названий возрастных групп
| Название группы в “Исходных данных” данных аккаунта | Название группы в справочнике “Возрастные группы аудитории” |
|---|---|
| 0-17 | 13-17 |
| 45-54 | 45-64 |
| >54 | 45-64 |
| 65- | >65 |
3.2.1_1.1.1 Процедура создания Интереса аккаунта
- Инициируется создание “Интереса аккаунта” с параметрами:
- Идентификатор аккаунта;
- Название интереса.
- Определяется “Интерес”, “Оригинальное название” которого соответствует “Названию интереса”, которое было указано при инициации данной процедуры.
- Если “Интерес” не был определен, выполняется:
- Создание “Интереса” с параметрами:
- Оригинальное название - “Названию интереса”, которое было указано при инициации данной процедуры
- Создание “Интереса аккаунта” с параметрами:
- Идентификатор аккаунта - идентификатор аккаунта, для которого была инициирована данная процедура;
- Идентификатор интереса - который был создан на этапе “3_a_i” данной процедуры.
- Создание “Интереса” с параметрами:
- Если “Интерес” был определен выполняется создание “Интереса аккаунта” с параметрами:
- Идентификатор аккаунта - идентификатор аккаунта, для которого была инициирована данная процедура;
- Идентификатор интереса - который был определен на этапе “2” данной процедуры.
3.2.1_1.1.2 Процедура создания Аудитории аккаунта по городу
- Инициируется создание “Аудитории аккаунта по городу” с параметрами:
- Идентификатор аккаунта;
- Название города;
- Название страны;
- Доля.
- Определяется “Город”, один из “Псевдонимов” которого соответствует “Названию города”, которое было указано при инициации данной процедуры.
- Если “Город” не был определен, выполняется:
- Создание “Города” с параметрами:
- Код страны:
- Код страны - если по “Названию страны”, которое было указано при инициации процедуры, определяется страна;
- Согласно “Названию страны”, которое было указано при инициации процедуры если по данному названию не определяется страна;
- Название - “Названию города”, которое было указано при инициации данной процедуры;
- Псевдонимы - массив который содержит следующие элементы:
- Элемент №1 - согласно “Названию города”, которое было указано при инициации данной процедуры;.
- Важность - 0;
- Источник данных - 1.
- Код страны:
- Создание “Аудитории аккаунта по городу” с параметрами:
- Идентификатор аккаунта - идентификатор аккаунта, для которого была инициирована данная процедура;
- Идентификатор города - который был создан на этапе “3_a_i” данной процедуры;
- Доля - доля указанная при инициации данной процедуры.
- Создание “Города” с параметрами:
- Если “Город” был определен выполняется создание “Аудитории аккаунта по городу” с параметрами:
- Идентификатор аккаунта - идентификатор аккаунта, для которого была инициирована данная процедура;
- Идентификатор города - идентификатор города который был определен на этапе “2” данной процедуры;
- Доля - доля указанная при инициации данной процедуры.
3.2.1_1.1.3 Процедура создания Аудитории аккаунта по полу
- Инициируется создание “Аудитории аккаунта по полу” с параметрами:
- Идентификатор аккаунта;
- Название пола;
- Доля.
- Определяется “Пол аудитории”, “Название” которого соответствует “Названию пола”, которое было указано при инициации данной процедуры.
- Если “Пол аудитории” не был определен, выполняется:
- Создание “Пола аудитории” с параметрами:
- Название - “Название пола”, которое было указано при инициации данной процедуры;
- Статус активности - false;
- Источник данных - 1.
- Создание “Аудитории аккаунта по полу” с параметрами:
- Идентификатор аккаунта - идентификатор аккаунта, для которого была инициирована данная процедура;
- Идентификатор пола аудитории - который был создан на этапе “3_a_i” данной процедуры;
- Доля - доля указанная при инициации данной процедуры.
- Создание “Пола аудитории” с параметрами:
- Если “Пол аудитории” был определен выполняется создание “Аудитории аккаунта по полу” с параметрами:
- Идентификатор аккаунта - идентификатор аккаунта, для которого была инициирована данная процедура;
- Идентификатор пола аудитории - идентификатор пола аудитории который был определен на этапе “2” данной процедуры;
- Доля - доля указанная при инициации данной процедуры.
3.2.1_1.1.4 Процедура создания Аудитории аккаунта по возрастной группе
- Инициируется создание “Аудитории аккаунта по возрастной группе” с параметрами:
- Идентификатор аккаунта;
- Название возрастной группы;
- Доля мужчин;
- Доля женщин;
- Доля.
- Определяется “Возрастная группа”, “Название” которой соответствует “Названию возрастной группы”, которое было указано при инициации данной процедуры.
- Если “Возрастная группа” не была определен, выполняется:
- Создание “Возрастной группа” с параметрами:
- Название - “Название возрастной группы”, которое было указано при инициации данной процедуры;
- Статус активности - false;
- Источник данных - 1.
- Создание “Аудитории аккаунта по возрастной группы” с параметрами:
- Идентификатор аккаунта - идентификатор аккаунта, для которого была инициирована данная процедура;
- Идентификатор возрастной группы - которая была создана на этапе “3_a_i” данной процедуры;
- Доля мужчин - доля мужчин указанная при инициации данной процедуры.
- Доля женщин - доля женщин указанная при инициации данной процедуры.
- Доля - доля указанная при инициации данной процедуры.
- Создание “Возрастной группа” с параметрами:
- Если “Возрастная группа” был определен выполняется создание “Аудитории аккаунта по полу” с параметрами:
- Идентификатор аккаунта - идентификатор аккаунта, для которого была инициирована данная процедура;
- Идентификатор пола аудитории - идентификатор пола аудитории который был определен на этапе “2” данной процедуры;
- Доля - доля указанная при инициации данной процедуры.
3.3 Список инфлюэнсеров для отображения в интерфейсе Бизнес представителя¶
3.3.1 Фильтр списка инфлюэнсеров¶
Фильтр списка инфлюэнсеров используется при формировании Списка инфлюэнсеров который должен отображаться в интерфейсе Бизнес представителя.
3.3.1.1 Настройки фильтра списка инфлюэнсеров¶
02_3.3.1.1_1
Настройки фильтра списка инфлюэнсеров должны храниться в “01_06 Настройках сервиса”.
02_3.3.1.1_2 Предустановленные параметры настройки фильтра списка инфлюэнсеров
| Параметр | Значение |
|---|---|
| Идентификатор | settings_for_influencers_filter |
| Значение | { "countries" : 0.25, "cities" : 0.1, "age_ranges_audience" : 0.3, "gender_audience" : 0.3 } |
3.3.2 CRUD Списка инфлюэнсеров¶
02_3.3.2_1 Процедура получения Списка инфлюэнсеров¶
- Клиентской частью сервиса выполняется запрос “Get influencers” с параметрами:
- “tail_item” - последний элемент списка, который был получен ранее;
- “per_page” - количество элементов на странице;
- "audience_countries" - Массив стран аудитории. Элементом массива является строка в формате “Ключ”:”Значение” где:
- Ключ - Код страны;
- Значение:
- “default” - если значение не было указано пользователем;
- Процент указанный пользователем.
- “audience_cities” - Массив городов аудитории. Элементом массива является строка в формате “Ключ”:”Значение” где:
- Ключ - Идентификатор города;
- Значение:
- “default” - если значение не было указано пользователем;
- Процент указанный пользователем.
- "influencer_countries" - Массив кодов стран;
- “influencer_cities” - Массив идентификаторов городов;
- “age_ranges_audience” - Массив возрастных групп. Элементом массива является строка в формате “Ключ”:”Значение” где:
- Ключ - Идентификатор возрастной группы;
- Значение:
- “default” - если значение не было указано пользователем;
- Процент указанный пользователем.
- “gender_audience” - Идентификатор пола аудитории;
- “ranges_quantity_followers” - Массив идентификаторов диапазонов количества подписчиков;
- “influencer_engagement_rate” - идентификатор показателя вовлеченности аудитории;
- “data_sources” - Массив источников данных аккаунта.
- Определяются Аккаунты которые удовлетворяют условиям запроса. Аккаунт удовлетворяет условиям запроса если:
- “Аккаунт”:
- Относится к одному из “Пользователей” и “Статус верификации” - “Verified”;
- Или “Аккаунт" не относится ни к одному из “Пользователей”.
- И в запросе “Get influencers”:
- Был указан один из фильтров и:
-
- Для “Аккаунта” имеются “Аудитории аккаунта по стране”:
- Которые относятся к одной из “Стран”, которая указана в “Массиве стран аудитории”;
- Сумма “Долей” которых больше или равна значению параметра “countries” настройки “settings_for_influencers_filter”.
или
- Для “Аккаунта” имеется “Аудитория аккаунта по городу”:
-
- Которые относятся к одному из “Городов”, который указан в Массиве городов аудитории;
или - Которые относятся к одному из “Городов”, который относится к “Группе городов” со статусом активности true, к которой относится минимум один из “Городов”, который был указан при инициации данной процедуры;
- Которые относятся к одному из “Городов”, который указан в Массиве городов аудитории;
- Сумма “Долей” которых больше или равна значению параметра “cities” настройки “settings_for_influencers_filter”.
2. - “Город инфлюэнсера” аккаунта, относится к одной из “Стран”, которая указана в “Массиве стран инфлюэнсера”;
или - “Город инфлюэнсера” аккаунта, был указан в “Массиве городов инфлюэнсера”
или - “Город инфлюэнсера” аккаунта относится к “Группе городов” со статусом активности true, к которой относится минимум один из “Городов”, который был указан “Массиве городов инфлюэнсера”
3. Для “Аккаунта” имеются “Аудитория аккаунта по возрастной группе”: - Которые относятся к одной из “Возрастных групп”, которая указана в “Массиве возрастных групп”;
- Сумма “Долей” которых больше или равна значению параметра “age_ranges_audience” настройки “settings_for_influencers_filter”.
4. Для “Аккаунта”: - Имеется “Аудитория аккаунта по полу”:
- Которая относится к “Полу аудитории”, который указан в запросе “Get influencers”;
- “Доля” которой больше или равна значению параметра “gender_audience” настройки “settings_for_influencers_filter”.
- Не имеется “Аудитория аккаунта по полу” которая относится к “Полу аудитории”, который указан в запросе “Get influencers” и в запросе “Get influencers” указан “Пол аудитории” название которого - “Any”
5. Значение параметра “Количество подписчиков” аккаунта входит в диапазон от “Подписчиков от” до “Подписчиков до” одного из “Диапазонов количества подписчиков”, который был указана в “Массиве идентификаторов диапазонов количества подписчиков”;
6. Значение параметра “Показатель вовлеченности аудитории” аккаунта больше или равно значению параметра “Показатель”, “Показателя вовлеченности аудитории”, который был указан в запросе “Get influencers”;
7. Для “Аккаунта” имеются “Данные аккаунта”, “Источник данных” которого был указан в Массиве источников данных аккаунта.- Не был указан ни один из фильтров.
- Если для “Представителя бизнеса”, который инициировал выполнение данной процедуры:
- Не имеется “Активной подписки пользователя” и не имеется “Коллаборации”:
- В “Статусе” - завершена, которая относится к “Бизнесу”, к которому относится данный представитель бизнеса и “Аккаунту”, который был определен на этапе “2”
и - К которой относится минимум один “Пост коллаборации”, которая относится к “Бизнесу”, к которому относится данный представитель бизнеса и “Аккаунту”, который был определен на этапе “2”
- Для каждого аккаунта, который был определен на этапе “3_a” данной процедуры выполняется:
- Определение значения параметра “Полное имя”. Значение определяется как результат выполнения “02_3.2_9 Процедура скрытия контактных данных” с параметрами:
- В “Статусе” - завершена, которая относится к “Бизнесу”, к которому относится данный представитель бизнеса и “Аккаунту”, который был определен на этапе “2”
- value - “Полное имя” аккаунта, для которого инициирован этап “3_a_i” данной процедуры;
- full_replace.
2. Определение значения параметра “Имя в сервисе”. Значение определяется как результат выполнения “02_3.2_9 Процедура скрытия контактных данных” с параметрами: - value - “Имя в сервисе” аккаунта, для которого инициирован этап “3_a_i” данной процедуры;
- full_replace.
3. Определение значения параметра “Информация о пользователе”. Значение определяется как результат выполнения “02_3.2_9 Процедура скрытия контактных данных” с параметрами: - value - “Информация о пользователе” аккаунта, для которого инициирован этап “3_a_i” данной процедуры;
- На запрос “Get influencers” возвращается список Аккаунтов которые удовлетворяют условиям запроса.
- Если для “Бизнеса”, к которому относится “Бизнес представитель”, к которому относится “Пользователь” который инициировал данную процедуру не имеется “Активной подписки пользователя”, HTTP-код должен быть “206”;
- На запрос “Get influencers” возвращается список Аккаунтов которые удовлетворяют условиям запроса.
- Имеется “Активная подписка пользователя” или “Возможности использования бесплатной коллаборации” или на запрос “Get influencers” возвращается список Аккаунтов которые удовлетворяют условиям запроса.
- Если для “Бизнеса”, к которому относится “Бизнес представитель”, к которому относится “Пользователь” который инициировал данную процедуру не имеется “Активной подписки пользователя”, HTTP-код должен быть “206”.
-
- Был указан один из фильтров и:
3. Администратор¶
3.1 Данные Администратора¶
3.1.1 Параметры Администратора(admins)¶
| Название | Параметр | Формат | Обяз. | Уник. | Примечание |
|---|---|---|---|---|---|
| Идентификатор | id | serial | да | да | |
| Имя | name | varchar(255) | да | нет | |
| Фамилия | last_name | varchar(255) | да | нет | |
| varchar(255) | да | да | |||
| Пароль | password_hash | varchar(255) | да | нет | |
| Статус активности | is_active | boolean | да | нет |
2.2 CRUD Администратора¶
02_2.2_1 Процедура авторизации Администратора¶
- Администратор инициирует “Авторизацию” в ПУ с параметрами:
- email;
- password.
- Выполняется проверка возможности авторизации согласно параметрам, которые были указаны при инициации:
- Если при инициации авторизации был указан “email” который не соответствует “email” одного из “Администраторов” в ПУ должна отобразиться ошибка с текстом: "Invalid username or password”. Дальнейшие этапы процедуры не выполняются.
- Если при инициации авторизации был указан “email”, который соответствует “email” одного из “Администраторов” и захэшированое значение параметра “password” не соответствует значению “Пароль” администратора. В ПУ должна отобразиться ошибка с текстом: "Invalid username or password”. Дальнейшие этапы процедуры не выполняются.
- Если при инициации авторизации был указан “email”, который соответствует “email” одного из “Администраторов” и захэшированое значение параметра “password” соответствует значению “Пароль” данного администратора, выполняется этап “3” данной процедуры.
- Если “Статус активности” администратора, который был определен на этапе “2_c” данной процедуры “false”. В ПУ должна отобразиться ошибка с текстом: "Your account is blocked, please contact the administrator”. Дальнейшие этапы процедуры не выполняются.
- Если“Статус активности” администратор, который был определен на этапе “2_c” данной процедуры соответствует “true”. Выполняется этап “4” данной процедуры.
- Выполняется генерация cookies PHPSESSID с параметрами:
- Name - PHPSESSID:
- Value - генерируется серверной частью;
- Expires - session.
- Клиентской частью выполняется сохранение cookie, которая была сгенерирована на этапе “4” данной процедуры.