Перейти к содержанию

01. Общие положения и технические требования

Версия 1.54.0
Количество листов

Оглавление


История изменений

№:1 Дата: 25.08.25 Автор:Демкович Александр RFC: RPL-1051 Версия: 0.1.0
Добавлено:
• FR_01_2.1.4_1
• 3.1.1.1_1 Параметры Локализации динамического шаблона(dynamic_template_localization)
• Локали для "01_3.3.3_3.1 Ошибки при выполнении процедуры 01_3.3.3_3"
• Локали для "01_3.3.4_1.1 Ошибки при выполнении процедуры 01_3.3.4_1".

Изменено:
• 2.1.7 Локализация
• 3.1.1_1 Предустановленные динамические шаблоны
• В "01_3.1.2_1 Процедуре отправки email-уведомлений через сервис Sendgrid" изменено условие определения параметров для выполнения запроса "Mail Send".
№:2 Дата: 25.08.25 Автор:Демкович Александр RFC: RPL-1018 Версия: 0.2.0
Добавлено:
3.7 Intercom.
№:3 Дата: 03.09.25 Автор:Демкович Александр RFC: RPL-1204 Версия: 0.3.0
Изменено:
• Изменен маппинг данных полученных от Stripe в: 01_3.3.2_1 Процедура обработки сообщения "Callbacks from Stripe"
• 01_3.3.5_1 Процедура обработки сообщения "User subscription update".
№:4 Дата: 04.09.25 Автор:Демкович Александр RFC: RPL-1092 Версия: 0.4.0
Добавлено:
• 01_3.2_1 Процедура получения данных аккаунта от Yoloco
• 01_3.2_1 Маппинг данных аккаунта от Yoloco
• Раздел 3.8 OnSocial
• Раздел 6.5 Источник данных для аккаунтов инфлюэнсеров.

Исключено:
5.1.2 Буфер "Обновление данных из Yoloco".
№:5 Дата: 11.09.25 Автор:Ляшук Андрей RFC: RPL-1288 Версия: 0.5.0
В: 01_3.3.3_3.1 Ошибки при выполнении процедуры 01_3.3.3_3; 01_3.3.4_1.1 Ошибки при выполнении процедуры 01_3.3.4_1; добавлена локализация текста ошибок на Португальский язык.
№:6 Дата: 11.09.25 Автор:Ляшук Андрей RFC: RPL-1317 Версия: 0.6.0
В: 01_3.3.3_3.1 Ошибки при выполнении процедуры 01_3.3.3_3; 01_3.3.4_1.1 Ошибки при выполнении процедуры 01_3.3.4_1; добавлена локализация текста ошибок на Испанский язык.
№:7 Дата: 22.09.25 Автор:Ляшук Андрей RFC: RPL-1372 Версия: 0.7.0
Изменено:
Изменена обработка события с типом "customer.subscription.deleted" в 01_3.3.2_1 Процедура обработки сообщения "Callbacks from Stripe".
№:8 Дата: 23.09.25 Автор:Ляшук Андрей RFC: RPL-1377 Версия: 0.8.0
Изменено:
• 01_3.3.4_2 Предустановленные параметры запроса добавлены значения "influencer" и "business_representative"
• 01_3.3.4_3 Процедура получения ссылки для перехода в Stripe Customer portal изменены параметры запроса отправляемые на этапе "4_b_i" в зависимости от роли пользователя.
№:9 Дата: 23.09.25 Автор:Ляшук Андрей RFC: RPL-1357 Версия: 0.9.0
Изменено:
В "01_3.3.3_3 Процедура получения ссылки для оформления подписки при выполнении запроса "Create a Checkout Session" для запроса Create a Checkout Session: Добавлено условие использования параметра "allow_promotion_codes"; Исключен параметр "client_reference_id"; Добавлен параметр "customer"; Добавлен параметр "discount".
№:10 Дата: 24.09.25 Автор:Ляшук Андрей RFC: RPL-1255 Версия: 1.0.0
Добавлено:
FR_01_2.1.7.1_3.
№:11 Дата: 24.09.25 Автор:Ляшук Андрей RFC: RPL-1262 Версия: 1.1.0
Изменено:
В "01_3.1.2_1 Процедура отправки email-уведомлений через сервис Sendgrid" добавлен параметр "Локаль".
№:12 Дата: 24.09.25 Автор:Демкович Александр RFC: RPL-1053 Версия: 1.2.0
Добавлено:
• Параметр "asm" для следующих динамических шаблонов: Rippla Influencer Activity Report
• Rippla Business Activity Report
• Rippla Business Collab Cancelled by Influencer
• Rippla Business 2 Weeks Before Collab
• Rippla Business 1 Week Before Collab
• Rippla Business 1 Day Before Collab
• Rippla Influencer 2 weeks before collab
• Rippla Influencer 1 week before collab
• Rippla Influencer 1 day before collab
• Rippla Influencer Collab Dates Set
• Rippla Influencer Rejected for Campaign
• Rippla Influencer Collab Dates Changed.
№:13 Дата: 25.09.25 Автор:Ляшук Андрей RFC: RPL-1208 Версия: 1.3.0
Изменено:
• В "01_4.2.1_1": Параметр "countries" заменен на "audience_countries"
• Параметр "cities" заменен на "audience_cities"
• Добавлен параметр "influencer_countries"
• Добавлен параметр "influencer_cities".

Исключено:
В "3.5.1 Идентификаторы элементов интерфейса" элемент с идентификатором "103".
№:14 Дата: 26.09.25 Автор:Ляшук Андрей RFC: RPL-1400 Версия: 1.4.0
Изменено:
• В "01_3.3.3_2 Предустановленные параметры запроса" значение параметра "trial_period_days" изменено с 30 на 7.
• В "01_3.3.3_3 Процедуре получения ссылки для оформления подписки" добавлены параметры: "tax_id_collection.enabled"
• "customer_update.name"
• "customer_update.address".
№:15 Дата: 30.09.25 Автор:Ляшук Андрей RFC: RPL-1226 Версия: 1.5.0
Изменено:
"FR_01_3.7_3" добавлен параметр "language_override".
№:16 Дата: 30.09.25 Автор:Ляшук Андрей RFC: RPL-1324 Версия: 1.6.0
Добавлено:
"3.9 Make".
№:17 Дата: 30.09.25 Автор:Ляшук Андрей RFC: RPL-1295 Версия: 1.7.0
Добавлено:
"6.6 Подписка инфлюэнсера".

Изменено:
В "1.4 Используемые термины" добавлен термин "Активная подписка пользователя".
№:18 Дата: 01.10.25 Автор:Ляшук Андрей RFC: RPL-1341 Версия: 1.8.0
Добавлено:
• "FR_01_2.1.4_3"
• "4.5 Процедуры".
№:19 Дата: 03.10.25 Автор:Ляшук Андрей RFC: RPL-420 Версия: 1.9.0
Добавлено:
2.1.9 Логирование.

Изменено:
• Формат логирования в: 3.1.3_1 Процедура обработки сообщения "Еmail-уведомление"
• 01_3.2_1 Процедура получения данных аккаунта от Yoloco
• 01_3.3.2_1 Процедура обработки сообщения "Callbacks from Stripe"
• 01_3.3.5_1 Процедура обработки сообщения "User subscription update"
• 01_3.4.1_1 Процедура отправки сообщения в Телеграм
• 01_3.6.1_1 Процедура обработки сообщения "Конверсия пользователя"
• 01_3.8_1 Процедура получения данных аккаунта от OnSocial.
№:20 Дата: 03.10.25 Автор:Ляшук Андрей RFC: RPL-1451 Версия: 1.7.0
Добавлено:
• FR_01_6.2_2
• FR_01_6.2_3.

Изменено:
• В "1.4 Используемые термины" добавлен термин "Возможность использования бесплатной коллаборации"
• В "01_3.3.3_2 Предустановленные параметры запроса" изменено значение параметра "trial_period_days" с 7 на 3
• В "01_3.3.3_3 Процедура получения ссылки для оформления подписки" добавлено условие отправки параметра "trial_period_days".
№:21 Дата: 07.10.25 Автор:Ляшук Андрей RFC: RPL-1399 Версия: 1.8.0
Добавлено:
"6.7 Внешний доступ".
№:22 Дата: 13.10.25 Автор:Ляшук Андрей RFC: RPL-1480 Версия: 1.9.0
Добавлено:
2.3 Centrifugo.

Изменено:
• В "1.4 Используемые термины" добавлен термин: ""Представитель бизнеса" относится к "Коллаборации""
• "Непросмотренная коллаборация".
№:23 Дата: 14.10.25 Автор:Ляшук Андрей RFC: RPL-1314 Версия: 1.10.0
Добавлено:
"FR_01_2.1.4_2".
№:24 Дата: 15.10.25 Автор:Ляшук Андрей RFC: RPL-1552 Версия: 1.11.0
Изменено:
В "1.4 Используемые термины" добавлен термин "Код страны для выставления счета".
№:25 Дата: 22.10.25 Автор:Ляшук Андрей RFC: RPL-1581 Версия: 1.12.0
Изменено:
• В "01_3.3.2_1 Процедура обработки сообщения "Callbacks from Stripe"" добавлено: Сохранение параметров: "Название цены"
• "Примененный купон"
• "Примененный промокод".
• Создание "Изменения подписки".
• В "01_3.3.5_1 Процедура обработки сообщения "User subscription update"" добавлено: Параметры "expand.latest_invoice" и "expand.items.data.price.product" при выполнении запроса Retrieve a subscription.
• Сохранение параметров: "Название цены"
• "Примененный купон"
• "Примененный промокод"
• "Финальная сумма"
• "Название цены".
• Создание "Изменения подписки".
№:26 Дата: 22.10.25 Автор:Ляшук Андрей RFC: RPL-1620 Версия: 1.13.0
Изменено:
В "01_3.3.5_1 Процедура обработки сообщения "User subscription update"" добавлено сохранение параметра "Дата оплата подписки".
№:27 Дата: 23.10.25 Автор:Ляшук Андрей RFC: RPL-1662 Версия: 1.14.0
Добавлено:
В "6.9 Количество дней до отмены подписки после первого не успешного платежа".
№:28 Дата: 27.10.25 Автор:Ляшук Андрей RFC: RPL-1667 Версия: 1.15.0
Изменено:
В "3.1.1_1 Предустановленные динамические шаблоны" добавлен шаблон "Rippla Influencer Suspended - ​​Not suitable account".
№:29 Дата: 28.10.25 Автор:Ляшук Андрей RFC: RPL-1657 Версия: 1.16.0
Добавлено:
"6.10 Ограничение на работу с кампанией при отсутствии контакта".

Изменено:
В "1.4 Используемые термины" добавлен термин "Возможность управления кампанией".
№:31 Дата: 07.11.25 Автор:Ляшук Андрей RFC: RPL-1655 Версия: 1.17.0
Изменено:
• В "3.1.1_1 Предустановленные динамические шаблоны" удалены шаблоны с идентификаторами: 17
• 19
• 20
• 21
• 22
• 35.
№:32 Дата: 07.11.25 Автор:Ляшук Андрей RFC: RPL-1700 Версия: 1.18.0
Добавлено:
• "01_2.3_1.1.4 Элемент массива "data" для Типа socket-сообщения "assistant_message_created""
• "2.4 MCP-сервер"
• "3.10 OpenAI"
• "6.11 Ассистент".

Изменено:
• В "2.1.1 Инструменты разработки" добавлен языка программирования GO
• В "01_2.3_1.1 Параметры Centrifugo-уведомления" добавлен новый тип socket-сообщения "assistant_message_created".
№:33 Дата: 18.11.25 Автор:Ляшук Андрей RFC: RPL-1810 Версия: 1.19.0
Добавлено:
• "FR_2.1.8_1 Формирование ссылки на файл"
• "2.1.8.1 Параметры файла(files)"
• "2.1.8.2 CRUD Файла"
• "3.11 Cloudflare"
• "6.13 Вариант файла в Cloudflare".

Изменено:
Ограничения на размер загружаемых файлов изменен с 20МБ на 10МБ
№:34 Дата: 19.11.25 Автор:Ляшук Андрей RFC: RPL-1847 Версия: 1.20.0
Изменено:
• В "01_3.3.2_1 Процедура обработки сообщения "Callbacks from Stripe"" добавлено сохранение параметра "Идентификатор плана в stripe"
• В "01_3.3.5_1 Процедура обработки сообщения "User subscription update"" добавлено сохранение параметров: "Идентификатор плана в stripe"
• "Процент скидки купона".
№:35 Дата: 19.11.25 Автор:Ляшук Андрей RFC: RPL-1866 Версия: 1.21.0
Добавлено:
"01_2.3_1.1.6 Элемент массива "data" для Типа socket-сообщения "notification_contact_created"".

Изменено:
В "01_2.3_1.1 Параметры Centrifugo-уведомления" добавлен новый тип socket-сообщения "notification_contact_created".
№:36 Дата: 20.11.25 Автор:Ляшук Андрей RFC: RPL-1773 Версия: 1.21.0
Добавлено:
• "01_2.3_1.1.6 Элемент массива "data" для Типа socket-сообщения "campaign_creation_restriction""
• "6.12 Ограничение на создание новой кампании".

Изменено:
В "01_2.3_1.1 Параметры Centrifugo-уведомления" добавлен новый тип socket-сообщения "campaign_creation_restriction".
№37 Дата: 25.11.25 Автор:Ляшук Андрей RFC: RPL-1871 Версия: 1.22.0
Добавлено:
01_2.3_1.1.7 Элемент массива "data" для Типа socket-сообщения "collaboration_message_created".

Изменено:
В "01_2.3_1.1 Параметры Centrifugo-уведомления" добавлен новый тип socket-сообщения "collaboration_message_created".
№38 Дата: 25.11.25 Автор:Ляшук Андрей RFC: RPL-1834 Версия: 1.23.0
Добавлено:
• "3.3.6 Очередь отмены trial-а подписки пользователя"
• "3.3.7 Очередь отмены подписки пользователя".

Изменено:
В "01_3.3.2_1 Процедура обработки сообщения "Callbacks from Stripe" при создании подписки, если статус подписки "trialing" и дата триала более 360 дней выполняется добавления подписки в "3.3.7 Очередь отмены подписки пользователя"; В "01_3.3.3_3 Процедура получения ссылки для оформления подписки", если у пользователя имеется "Возможность использования бесплатной коллаборации" значение параметра "subscription_data.trial_period_days" определяется как 365.
№39 Дата: 02.12.25 Автор:Ляшук Андрей RFC: RPL-1892 Версия: 1.24.0
Добавлено:
• "01_2.1.8.2.2 Процедура сохранения файла"
• "01_2.3_1.1.8 Элемент массива "data" для Типа socket-сообщения "post_or_reel_stat_updated""
• "01_2.3_1.1.9 Элемент массива "data" для Типа socket-сообщения "story_stat_updated""
• "3.10.2 Очередь "Обработка статистики ИИ-моделью OpenAI""
• "3.12 Apify"
• "6.14 Политика выполнения запросов Apify".

Изменено:
• В "01_2.1.8.2.1 Процедура добавления файла" добавлен новый параметр "Контекст" и в зависимости от контекста файл отправляется в "Cloudflare"
• В "01_2.3_1.1 Параметры Centrifugo-уведомления" добавлены новые типы socket-сообщения: "post_or_reel_stat_updated"
• "story_stat_updated"
• В "2.4_3 Инструменты" добавлен новый инструмент "update_collaboration_post_stats"
• В "01_3.10.1.1_2 Предустановленные параметры запроса для сообщений ассистента" изменен идентификатор с "open_ai_create_model_response" на "open_ai_create_model_response_for_assistant_message".
№40 Дата: 08.12.25 Автор:Ляшук Андрей RFC: RPL-1775 Версия: 1.25.0
Изменено:
• В "01_3.3.3_2 Предустановленные параметры запроса" удален параметр "subscription_data"
• В "01_3.3.3_3 Процедура получения ссылки для оформления подписки" если у пользователя не имеется "Возможность использования бесплатной коллаборации" значение параметра "subscription_data.trial_period_days" определяется как "Количество дней триала" настройки "Подписки".
№41 Дата: 08.12.25 Автор:Ляшук Андрей RFC: RPL-1995 Версия: 1.26.0
Изменено:
В "01_2.3_1.1.1 Элемент массива "data" для Типа socket-сообщения "messages_counters_changed"" добавлен тип объекта "all_messages".
№42 Дата: 08.12.25 Автор:Ляшук Андрей RFC: Версия: 1.27.0
Удалено:
"3. Интеграции".
№43 Дата: 15.12.25 Автор:Ляшук Андрей RFC: RPL-2026 Версия: 1.28.0
Изменено:
В "6.3.1.1 Параметры персонального количества активных локаций(personal_max_active_locations)" у параметра "admin_id" убрана обязательность.
№44 Дата: 16.12.25 Автор:Ляшук Андрей RFC: RPL-2053 Версия: 1.29.0
Изменено:
В "01_2.3_1.1.2 Элемент массива "data" для Типа socket-сообщения "collaboration_status_changed"" добавлен параметр "campaign_id".
№45 Дата: 13.01.26 Автор:Ляшук Андрей RFC: RPL-2129 Версия: 1.30.0
Изменено:
• В "01_2.3_1.1.8 Элемент массива "data" для Типа socket-сообщения "post_or_reel_stat_updated"" добавлен параметр "total_reposts"
• В "01_2.3_1.1.9 Элемент массива "data" для Типа socket-сообщения "story_stat_updated"" добавлен параметр "total_reach".
№46 Дата: 13.01.26 Автор:Ляшук Андрей RFC: RPL-2091 Версия: 1.31.0
Добавлено:
"01_4.5.2 Процедура перехода на бота в социальных сетях".
№47 Дата: 04.02.26 Автор:Ляшук Андрей RFC: RPL-2321 Версия: 1.32.0
Изменено:
"01_2.3_1.1.1 Элемент массива "data" для Типа socket-сообщения "messages_counters_changed" completed_collaboration разделен на pending_results и results_added.
№48 Дата: 05.02.26 Автор:Ляшук Андрей RFC: RPL-2002 Версия: 1.33.0
Добавлено:
• "01_2.3_1.1.10 Элемент массива "data" для Типа socket-сообщения "description_for_campaign_generated""
• "6.15 Правила для показа рекомендаций фильтров".

Изменено:
В "01_2.3_1.1 Параметры Centrifugo-уведомления" добавлен новый тип socket-сообщения "description_for_campaign_generated".
№49 Дата: 05.02.26 Автор:Ляшук Андрей RFC: RPL-2275 Версия: 1.34.0
Добавлено:
"FR_01_2.1.4_4".

Изменено:
В "01_4.5.1 Процедура открытия web-приложения" добавлена генерация "X-Session-Id".
№50 Дата: 17.02.26 Автор:Ляшук Андрей RFC: RPL-2404 Версия: 1.35.0
Изменено:
• В "6.15.1.1.1 Conditions" и "6.15.1.1.2 Recommendations" удалены типы сущности: cities
• countries.
• Добавлены типы сущности: audience_countries
• audience_cities
• influencer_countries
• influencer_cities.
№51 Дата: 21.02.26 Автор:Ляшук Андрей RFC: RPL-2358 Версия: 1.36.0
Изменено:
• В "1.4 Используемые термины" добавлены термины: Статус коллаборации "Добавлен результат"
• Первый период обновления коллабораций
• Текущий период обновления коллаборации
• Использованная коллаборация.
• В 01_6.2_1 Виды количества бесплатных коллабораций изменено условие для "Персональных коллабораций" В "FR_01_6.2_2" бесплатные коллаборации определяются в зависимости от периода обновления коллаборации В "FR_01_6.2_3" бесплатные коллаборации определяются в зависимости от периода обновления коллаборации В "01_6.2.1_2 Количество бесплатных коллабораций по умолчанию(free_collabs)" добавлен параметр free_collabs_at_first_period
• В "6.2.2.1 Параметры персонального количества бесплатных коллабораций(personal_free_collabs)" добавлен параметр free_collabs_at_first_period.

Добавлено:
6.16 Период обновления доступных коллабораций пользователю.
№51 Дата: 25.02.26 Автор:Ляшук Андрей RFC: RPL-2444 Версия: 1.37.0
Добавлено:
01_2.3_1.1.11 Элемент массива "data" для Типа socket-сообщения "accompanying_message_for_campaign_generated".

Изменено:
• В "01_2.3_1.1 Параметры Centrifugo-уведомления" добавлен тип socket-сообщения "accompanying_message_for_campaign_generated."
• В "2.4_3 Инструменты" добавлен инструмент "generate_accompanying_message".
№52 Дата: 26.02.26 Автор:Ляшук Андрей RFC: RPL-2458 Версия: 1.38.0
Исключено:
"FR_01_2.1.4_4".
№53 Дата: 28.02.26 Автор:Ляшук Андрей RFC: RPL-2474 Версия: 1.39.0
Изменено:
"6.15.1.1 Rules" параметры text и tooltip переделаны в объекты с переводами.
№54 Дата: 27.03.26 Автор:Ляшук Андрей RFC: RPL-2569 Версия: 1.40.0
Изменено:
В "01_2.1.11_5 Процедура отправки push-уведомления" добавлено условие отправки push-уведомления, при наличии активной настройки push-уведомления.

Исключено:
"6.10 Ограничение на работу с кампанией при отсутствии контакта".
№55 Дата: 31.03.26 Автор:Ляшук Андрей RFC: RPL-2591 Версия: 1.41.0
Добавлено:
"6.17 Статус отправки отчета об активности".
№56 Дата: 31.03.26 Автор:Ляшук Андрей RFC: RPL-2468 Версия: 1.42.0
Добавлено:
"2.1.11 Push-уведомления".

Изменено:
"01_4.5.1 Процедура открытия web-приложения" добавлена инициация "01_2.1.11_3 Процедура подписки на push-уведомления"
№57 Дата: 31.03.26 Автор:Ляшук Андрей RFC: RPL-2441 Версия: 1.43.0
Добавлено:
"2.1.10 Progressive Web App (PWA)".
№58 Дата: 01.04.26 Автор:Ляшук Андрей RFC: RPL-2507 Версия: 1.44.0
Изменено:
В "01_2.3_1.1.2 Элемент массива "data" для Типа socket-сообщения "collaboration_status_changed" добавлен параметр "collaborations_left".
№59 Дата: 07.04.26 Автор:Ляшук Андрей RFC: RPL-2626 Версия: 1.45.0
Добавлено:
"6.18 Максимальное количество активных кампаний для пользователей без подписки".

Изменено:
"01_2.3_1.1.3 Элемент массива "data" для Типа socket-сообщения "campaign_status_changed"" добавлен параметр campaigns_left.
№60 Дата: 10.04.26 Автор:Ляшук Андрей RFC: RPL-2646 Версия: 1.46.0
Добавлено:
"6.19 Количество бесплатных откликов(коллабораций)".

Изменено:
• "1.4 Используемые термины" добавлены термины: "Отклик"
• "Доступный отклик".
№61 Дата: 14.04.26 Автор:Ляшук Андрей RFC: RPL-2664 Версия: 1.47.0
Добавлено:
01_2.3_1.1.11 Элемент массива "data" для Типа socket-сообщения "collaboration_created".

Изменено:
В "01_2.3_1.1 Параметры Centrifugo-уведомления" добавлен тип socket-сообщения "collaboration_created".
№62 Дата: 21.04.26 Автор:Ляшук Андрей RFC: RPL-2699 Версия: 1.48.0
Добавлено:
"6.20 Список почт офферы с которых не учитываются при создании push-уведомления".
№63 Дата: 23.04.26 Автор:Ляшук Андрей RFC: RPL-2694 Версия: 1.49.0
Добавлено:
"6.18.1 Персональное количество активных кампаний".
№64 Дата: 23.04.26 Автор:Ляшук Андрей RFC: RPL-2683 Версия: 1.50.0
Изменено:
В "1.4 Используемые термины" термин "Возможность управления кампанией" заменен на "Ограничение на создание первой кампании".
№65 Дата: 25.05.26 Автор:Ляшук Андрей RFC: Версия: 1.51.0
Изменено:
В "1.4 Используемые термины" добавлен термин "Демо-аккаунт".
№66 Дата: 15.06.26 Автор:Ляшук Андрей RFC: RPL-2776 Версия: 1.52.0
Добавлено:
"6.21 Нормализация названий стран от источников данных".
№67 Дата: 07.07.26 Автор:Ляшук Андрей RFC: RPL-2825 Версия: 1.53.0
Добавлено:
• "6.22 Политика загрузки статистики поста коллаборации"
• "FR_01_6.19_3".

Изменено:
• В "1.4 Используемые термины" термин "Доступный отклик" дополнен ссылкой на "FR_01_6.19_3"
• В "6.19 Количество бесплатных откликов(коллабораций)" уточнено, что "Персональное количество" может устанавливаться в том числе для конкретного Инфлюэнсера
• В "6.19.2.1 Параметры персонального количества откликов коллабораций(personal_free_active_collabs)" добавлен параметр "user_id".
№68 Дата: 24.07.26 Автор:Ляшук Андрей RFC: RPL-2849 Версия: 1.54.0
Добавлено:
• "FR_2.1.8_2 Формирование ссылки на превью файла"
• "FR_01_2.1.11_2.2_3" (fallback тела push-уведомлений 1–4 для сообщений-вложений без текста).

Изменено:
• В "01_2.3_1.1.7 Элемент массива «data» для типа «collaboration_message_created»" добавлены параметры "files" и "files_count"
• В "01_2.1.8.2.1 Процедура добавления файла" добавлен контекст "Сообщение коллаборации" с синхронной загрузкой в Cloudflare и возвратом ссылки на файл и превью.
№69 Дата: 13.08.26 Автор:Ляшук Андрей RFC: RPL-2859 Версия: 1.55.0
Добавлено:
"01_2.3_1.1.13 Элемент массива «data» для типа «content_upload_restriction»".

Изменено:
• В "1.4 Используемые термины" добавлены термины "Требование к загрузке контента" и "Долг"
• В "01_2.3_1.1 Параметры Centrifugo-уведомления" добавлен тип socket-сообщения "content_upload_restriction".
№70 Дата: 17.08.26 Автор:Ляшук Андрей RFC: RPL-2866 Версия: 1.56.0
Изменено:
В "FR_01_6.16_2" "Текущий период обновления коллаборации" определяется начиная с "Даты начала текущего периода" вместо "Даты создания" подписки пользователя.
№71 Дата: 18.08.26 Автор:Ляшук Андрей RFC: RPL-2859 Версия: 1.57.0
Изменено:
В "1.4 Используемые термины" термин "Статус коллаборации «Добавлен результат»" дополнен ссылкой на "FR_07_3_2".
№72 Дата: 31.08.26 Автор:Ляшук Андрей RFC: RPL-2885 Версия: 1.58.0
Добавлено:
В "1.4 Используемые термины" термин "«Бизнес» является «Отелем»".
№73 Дата: 08.09.26 Автор:Ляшук Андрей RFC: RPL-2897 Версия: 1.59.0
Добавлено:
• "2.1.12 Мобильное приложение"
• "01_2.1.12_1 Процедура обработки нажатия на push-уведомление в Мобильном приложении"
• "FR_01_2.1.4_5" — заголовок "X-Platform".

Изменено:
В "01_4.5.1 Процедура открытия web-приложения" получение подписки на push-service заменено на "02_2.3_18 Процедура регистрации FCM токена".

Исключено:
"2.1.11 Push-уведомления" — описание push-уведомлений перенесено в "01.1.13 Firebase".
№74 Дата: 14.09.26 Автор:Ляшук Андрей RFC: RPL-2901 Версия: 1.60.0
Добавлено:
"FR_01_2.1.12_3" — установка "Свойства установки приложения iOS" и "Свойства установки приложения Android" по заголовку "X-Platform".

1. Общие положения

1.1 Описание сервиса

Сервис Rippla является информационной системой, которая состоит из:

  • Серверной части (программно-аппаратный комплекс);
  • Web-приложения для Пользователей сервиса;
  • Панели управления для Администраторов сервиса.

Сотрудникам бизнеса (отелей, ресторанов и баров), которые отвечают за маркетинг, сервис предоставит возможность разместить кампании (предложения по сотрудничеству), на которые смогут откликнуться инфлюэнсеры. Также сотрудник бизнеса сможет просматривать отклики от инфлюэнсеров, принимать или отклонять их, а при выполнении условий сотрудничества — подтверждать их выполнение.

Инфлюэнсерам сервис предоставит возможность просматривать кампании бизнесов и откликаться на них.

Сотрудники бизнеса и инфлюэнсеры имеют возможность общаться в рамках сотрудничества («коллабы»), используя встроенный чат сервиса.

Сотрудники бизнеса и инфлюэнсеры могут использовать все возможности сервиса только при активной подписке. Если подписка не активна — пользователи ограничены в возможностях. При первичной регистрации пользователи получают триальный режим.

Администратор сервиса имеет возможность:

  • Контролировать работу сервиса через Панель управления;
  • Активировать/блокировать пользователей, изменять их данные и контент;
  • Управлять синхронизацией с сервисом Yoloco.

Сервис синхронизирует информацию о подписках пользователей с сервисом Stripe.

Для уведомления пользователей о событиях используются email-уведомления через API сервиса Sendgrid с настраиваемыми администратором шаблонами.


1.2 Назначение документа

Спецификация требований описывает:

  1. Классы и роли пользователей.
  2. Права доступа и возможности использования сервиса пользователем.
  3. Архитектуру информационной системы «Rippla».
  4. Функциональные и нефункциональные требования к системе.
  5. Описание сущностей информационной системы.

1.3 Структура спецификации требований

Спецификация состоит из следующих частей:

  • Общие положения и технические требования — содержит описание продукта и ключевых требований к технической составляющей проекта. Состав компонентов и интеграций со сторонними сервисами.
  • Классы пользователей — содержит описание пользователей сервиса.
  • Компоненты системы — содержит описание и требования к компонентам системы.
  • Интеграция со сторонним сервисом — содержит описание и требования к интеграции со сторонними сервисами.

1.4 Используемые термины

Определение Описание
СТ Спецификация требований
ИС Информационная система
УЗ Учётная запись / аккаунт пользователя
ОС Операционная система
Фреймворк (framework) Программная платформа, определяющая структуру программной системы
US User Story. Пользовательская история — требование к разрабатываемой системе, сформулированное как одно или более предложений
FR Functional Requirement. Функциональное требование — описание действия, которое должна выполнять информационная система
NFR Non Functional Requirement. Нефункциональное требование — описание требования, которому должна соответствовать информационная система
Не имеется Конструкция «не имеется» определяет отсутствие информации в контексте информационной системы. Под «не имеется» понимается: отсутствие записи в БД; наличие записи в БД, для которой указана «Дата удаления»
Активная подписка пользователя Конструкция «Активная подписка пользователя» определяет наличие у пользователя активной подписки согласно FR_09_1_1 или FR_09_1_2
Возможность использования бесплатной коллаборации Конструкция «Возможность использования бесплатной коллаборации» определяет наличие у пользователя возможности использования бесплатной коллаборации согласно FR_01_6.2_2 или FR_01_6.2_3
«Представитель бизнеса» относится к «Коллаборации» Конструкция определяет, что к «Представителю бизнеса» относится «Локация», к которой относится «Кампания», к которой относится «Коллаборация»
Непросмотренная коллаборация Коллаборация, к которой относится «Инфлюэнсер» со «Статусом верификации» аккаунта «Verified» и к которой не относится «Просмотр коллаборации»
Код страны для выставления счета Для «Представителя бизнеса» — значение «Код страны плательщика» бизнеса. Для «Инфлюэнсера» — код страны, который относится к «Городу инфлюэнсера» аккаунта
Ограничение на создание первой кампании Конструкция определяет ограничение на создание первой кампании у «Представителя бизнеса» согласно FR_07_1_3
Статус коллаборации «Добавлен результат» Конструкция определяет наличие результата у «Коллаборации» согласно FR_07_3_2
Первый период обновления коллабораций Период времени, который начинается с «Даты создания» пользователя и длится количество дней, равное значению параметра first_collaboration_refresh_period_d настройки collaboration_refresh_policy
Текущий период обновления коллаборации Конструкция определяет текущий период обновления коллабораций согласно FR_01_6.16_1 или FR_01_6.16_2
Использованная коллаборация Коллаборация, которая была завершена: последний «Статус коллаборации» — «Завершена» и «Дата изменения статуса» находится в «Текущем периоде обновления коллабораций»; либо «Дата создания» первого «Результата коллаборации» находится в «Текущем периоде обновления коллабораций»
Отклик «Коллаборация» в статусе «Новая» с «Инфлюэнсером» со «Статусом» аккаунта «Верифицирован»; или коллаборация не в статусе «Новая» — для которой не имеется даты удаления
Доступный отклик Наличие у пользователя доступных откликов коллаборации согласно FR_01_6.19_2 (для Представителя бизнеса) или FR_01_6.19_3 (для Инфлюэнсера)
Доступная коллаборация При отсутствии «Активной подписки пользователя» — наличие «Возможности использования бесплатной коллаборации»; при наличии «Активной подписки» — «Количество коллабораций» подписки более «Использованных коллабораций»
Демо-аккаунт Пользователь, email которого начинается с demo+ и заканчивается на @rippla.com. Для «Демо-аккаунта» всегда считается, что имеется «Активная подписка пользователя»
Требование к загрузке контента Контент или статистика контента, которые «Инфлюэнсеру» необходимо загрузить в рамках «Коллаборации». Определяется согласно «07_3.2_18 Процедура определения требований к загрузке контента инфлюэнсера»
Долг «Требование к загрузке контента», загрузка которого обязательна согласно «07_3.2_18 Процедура определения требований к загрузке контента инфлюэнсера» и для которого не имеется параметра «available_at»
«Бизнес» является «Отелем» Конструкция определяет, что значение параметра «Отель» «Бизнеса» — true

2. Технические требования

2.1 Общие требования

2.1.1 Инструменты разработки

Клиентская часть:

  • Панель администратора — серверное приложение на основе языка программирования PHP с использованием фреймворка Symfony и html-шаблонизатора Twig.
  • Сайт клиента — веб-приложение на основе языка программирования JavaScript и фреймворка React.

Серверная часть:

  • Docker — программное обеспечение для автоматизации развёртывания и управления приложениями;
  • Traefik — обратный прокси-сервер для ретрансляции запросов из внешней сети к серверам/сервисам внутренней сети;
  • Веб-сервер nginx;
  • СУБД PostgreSQL для хранения данных;
  • Серверные приложения: на основе PHP/Symfony и на основе Go;
  • Redis — NoSQL база данных;
  • RabbitMQ — брокер сообщений;
  • Логирование: Vector (сбор, преобразование, маршрутизация логов), Grafana Loki (агрегация логов), Grafana (визуализация данных).

2.1.3 Минимальные требования к серверной части

DEV / STAGE среда (VPS):

  • CPU: 2 ядра;
  • RAM: 2 ГБ;
  • SSD: 40 ГБ;
  • ОС: Debian 12;
  • Тип виртуализации: KVM.

PRODUCTION среда (VPS):

  • CPU: 4 ядра;
  • RAM: 4 ГБ;
  • SSD: 40 ГБ;
  • ОС: Debian 12;
  • Тип виртуализации: KVM.

2.1.4 Клиент-серверное взаимодействие

В сервисе предусмотрено клиент-серверное взаимодействие между серверной и клиентской частями.

Клиент-серверное взаимодействие выполняется посредством RESTful API.

Для обмена данными используется HTTPS протокол.

Для авторизации запросов используется JSON Web Tokens.

Если полученный от клиентской части запрос не может быть обработан серверной частью, на запрос возвращается ошибка, которая содержит информацию и код ошибки.

FR_01_2.1.4_1

Для всех запросов от клиентской части к серверной обязательно должен передаваться заголовок Accept-Language, который определяет локаль, указанную клиентом.

FR_01_2.1.4_2

Если запрос выполнил «Пользователь», который относится к «Бизнесу» со статусом активности false, на запрос возвращается ответ с:

  1. HTTP-кодом — 403;
  2. Кодом ошибки — 40301.

FR_01_2.1.4_3

Если при выполнении запроса клиентской частью сервиса в LocalStorage имеется ключ switch_user, в заголовках запроса должен отправляться параметр X-Switch-User, значение которого соответствует значению ключа switch_user в LocalStorage.

FR_01_2.1.4_5

Для всех запросов от клиентской части к серверной обязательно должен передаваться заголовок X-Platform, который определяет платформу, с которой выполнен запрос:

Значение Описание
web Веб-версия сервиса, в том числе установленное PWA
ios «Мобильное приложение» для платформы iOS
android «Мобильное приложение» для платформы Android

2.1.5 Поддерживаемые браузеры

Минимальные требования к версиям браузеров, в которых должно корректно работать web-приложение:

  • Google Chrome — версия 126 и выше;
  • Mozilla Firefox — версия 119 и выше;
  • Opera — версия 103 и выше;
  • YaBrowser — версия 23 и выше;
  • Safari — версия 17 и выше.

2.1.6 Адаптивность интерфейса

Интерфейс должен корректно отображаться на экранах шириной от 360px до 1920px.

Для адаптации интерфейса предусматриваются следующие точки перестроения:

  • Mobile — 360px, 375px;
  • Tablet — 768px;
  • Laptop — 1366px;
  • Desktop — 1920px.

2.1.7 Локализация

Сервис должен поддерживать мультиязычность. Локализация интерфейса и контента определяется пользователем клиентской части.

NFR_01_2.1.7_1 Пользователь должен иметь возможность выбрать одну из следующих локалей:

  • Английская — en;
  • Испанская — es;
  • Португальская — pt;
  • Французская — fr.

NFR_01_2.1.7_2 По умолчанию должна использоваться английская локализация (en).

FR_01_2.1.7_3 Если для Локали отсутствует значение для одного из ключей, должно использоваться значение данного ключа Английской локали.

2.1.7.1 Локализация клиентской части

Локаль представляет собой файл с расширением .json, который содержит «Элементы интерфейса» (пары ключ-значение). «Ключом» является уникальный идентификатор элемента интерфейса, «Значением» — строка, которая должна отображаться в интерфейсе.

NFR_01_2.1.7.1_1 Имя файла должно быть уникальным и соответствовать коду языка, который используется для локали.

NFR_01_2.1.7.1_2 Ключ элемента интерфейса должен соответствовать следующим требованиям:

  • Быть уникальным в рамках файла;
  • Иметь стиль написания «Lower camel case»;
  • Иметь следующую структуру: компонент[.роль][.наименованиеЭлемента][.Mobile]
  • Компонент, к которому относится элемент интерфейса;
  • Роль пользователя (добавляется если элемент используется только для определённой роли): Business или Influencer;
  • Наименование элемента интерфейса;
  • Mobile — добавляется если элемент используется только для мобильного адаптива.

FR_01_2.1.7.1_3

Если в ответе на любой запрос имеется параметр preferred_locale и его значение отличается от значения ключа locale в LocalStorage, клиентской частью выполняется:

  1. Изменение значения ключа locale в LocalStorage согласно значению параметра preferred_locale;
  2. Применение локализации согласно локали, которая указана в значении ключа locale в LocalStorage.
2.1.7.2 Локализация серверной части

2.1.7.2_1 Локализация текстовых ресурсов

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

Текстовый ресурс является парой ключ-значение, которая хранится в файле локали (расширение .json). «Ключом» является уникальный идентификатор текстового ресурса, «Значением» — строка для отображения в интерфейсе.

Имя файла должно быть уникальным и соответствовать коду языка локали.

Ключ текстового ресурса должен быть уникальным в рамках файла, иметь стиль «Lower camel case» и может быть кодом состояния HTTP или кодом ошибки бизнес-логики.

2.1.7.2_2 Локализация параметров сущностей

Для локализации параметров сущностей должна использоваться библиотека Gedmo Translatable.


2.1.8 Файлы

Пользователь имеет возможность загрузить изображение с одним из следующих расширений: png, jpeg, jpg, heic.

Ограничения на размер загружаемых файлов: 10 МБ — png, jpeg, jpg, heic.

FR_2.1.8_1 Формирование ссылки на файл

Если для файла имеется:

  1. «Сгенерированное название файла» — ссылка формируется как: {host}/uploads/{год}/{месяц}/{день}/{Сгенерированное название файла};
  2. «Идентификатор файла в Cloudflare» — если тип файла:
  3. Image — {CLOUDFLARE_IMAGE_URL}/{CLOUDFLARE_ACCOUNT_IMAGE_HASH}/{Идентификатор файла в Cloudflare}/{Идентификатор варианта настройки «Вариант файла в Cloudflare»};
  4. Video — https://customer-{CLOUDFLARE_STREAM_CUSTOMER_CODE}.cloudflarestream.com/{Идентификатор файла в Cloudflare}/watch.

FR_2.1.8_2 Формирование ссылки на превью файла

Ссылка на превью формируется только для файла, «Тип» которого Video и для которого имеется «Идентификатор файла в Cloudflare», как: https://customer-{CLOUDFLARE_STREAM_CUSTOMER_CODE}.cloudflarestream.com/{Идентификатор файла в Cloudflare}/thumbnails/thumbnail.jpg.

2.1.8.1 Параметры файла(files)
Название Параметр Формат Обяз. Уник. Примечание
Идентификатор id serial да да
Дата создания created_at timestamp да нет
Изначальное название файла title varchar(255) да нет
Сгенерированное название файла url varchar(255) нет нет Не должно быть значения, если имеется значение для cloudflare_file_id
Идентификатор файла в Cloudflare cloudflare_file_id string нет нет Не может иметь значение, если имеется значение для url
Тип type enum да нет 1 — None (по умолчанию); 2 — Image; 3 — Video
2.1.8.2 CRUD Файла
01_2.1.8.2.1 Процедура добавления файла

API: POST /public/files

  1. Клиентской частью выполняется запрос «Upload file» с параметрами: Файл, Контекст.
  2. Выполняется:
  3. Генерация имени файла;
  4. Сохранение файла по пути {host}/uploads/{год}/{месяц}/{день} с именем, сгенерированным на этапе 2_a;
  5. Создание «Файла» с параметрами:
    • Дата создания — текущая дата;
    • Сгенерированное название файла — имя файла из этапа 2_a;
    • Изначальное название файла — название файла из параметра «Файл»;
    • Тип — Video (если видео) или Image (если изображение).
  6. Если при инициации данной процедуры параметр «Контекст»:
    1. Не был указан, или был указан и его значение не «Статистика поста коллаборации» и не «Сообщение коллаборации» — выполняется добавление сообщения «File» в очередь «Загрузки файлов в Cloudflare» с параметрами: Идентификатор файла — идентификатор файла из этапа 2_c;
    2. Был указан и его значение «Сообщение коллаборации» — выполняется «01.1.11_1.2_1 Процедура загрузки файла в Cloudflare» с параметрами: Идентификатор файла — идентификатор файла из этапа 2_c.
  7. На запрос «Upload file» возвращается информация об успешном выполнении, содержащая: идентификатор файла; ссылку на файл, сформированную согласно «FR_2.1.8_1 Формирование ссылки на файл»; ссылку на превью файла, сформированную согласно «FR_2.1.8_2 Формирование ссылки на превью файла».
01_2.1.8.2.2 Процедура сохранения файла

Инициация с параметрами: Ссылка на файл.

  1. Выполняется:
  2. Скачивание изображения по URL из параметра «Ссылка на файл»;
  3. Генерация имени файла;
  4. Сохранение файла по пути {host}/uploads/{год}/{месяц}/{день} с именем из этапа 2_b;
  5. Создание «Файла» с параметрами:
    • Дата создания — текущая дата;
    • Ссылка — имя файла из этапа 2_b;
    • Изначальное название файла — название скачанного файла;
    • Тип — Video (если видео) или Image (если изображение).
  6. Добавление сообщения «File» в очередь «Загрузки файлов в Cloudflare» с параметрами: Идентификатор файла — идентификатор файла из этапа 2_d.
  7. Инициатору возвращается информация об успешном выполнении.

2.1.9 Логирование

В сервисе должна сохраняться информация о событиях, которые происходят при функционировании системы.

Запись лога формируется с использованием сервиса Vector с последующей передачей в сервис Loki.

Виды событий:

  • HTTP-запросы, которые были инициированы пользователями сервиса;
  • Обработка сообщения из очереди сообщений.

Хранение логов: файлы логов хранятся в S3 хранилище.

2.1.9.1 Параметры записи лога
Параметр Описание
httpCode HTTP-код ответа (для http-запросов); 0 (для обработки сообщений очередью)
level Уровень логирования. Для http-запросов: info (2xx), warning (4xx), error (5xx). Для обработки сообщений: info (получено/обработано), error (обработка не выполнена)
payload Объект с информацией о событии. Структура — согласно 2.1.9.1_1
service Источник лога — rpl_backend
2.1.9.1_1 Payload

2.1.9.1_1.1 Структура объекта Payload для вида «Обработка сообщения очередью сообщений»

Параметр Описание
event Тип события: received (сообщение получено обработчиком); processed (сообщение обработано)
title Название сообщения, для которого выполняется логирование
error Описание ошибки, вследствие которой обработчик не смог обработать сообщение
data Параметры, указанные в сообщении
info Описание залогированного события
fatal_error Описание ошибки, не предусмотренной в СТ

2.1.9.1_1.2 Структура объекта Payload для вида «http-запрос»

Параметр Описание
requested_at Дата и время выполнения запроса
request_query Query запроса
user_uuid Идентификатор пользователя
request_headers Заголовки запроса
request_body Тело запроса
response_body Тело ответа
method Метод запроса
endpoint Конечная точка запроса

2.1.10 Progressive Web App (PWA)

PWA используется для работы сервиса и получения push-уведомлений.

Компоненты:

  • Service Worker — используется для работы приложения в автономном режиме, кэширования ресурсов, обработки push-уведомлений и взаимодействия с сетью;
  • Web App Manifest — используется для описания настроек PWA.
2.1.10.1 Параметры Service Worker
Параметр Значение Описание
OFFLINE_VERSION 1 Версия оффлайн-кэша, обновляется при необходимости замены кэшированных ресурсов
CACHE_NAME offline Имя кэша, куда сохраняются оффлайн-ресурсы
OFFLINE_URL offline.html Адрес страницы, которая отображается, если пользователь находится в автономном режиме
2.1.10.2 Параметры Web App Manifest
Параметр Значение Описание
name Rippla: Creator Collabs Полное имя веб-приложения
shortname Rippla Короткое имя веб-приложения
icons /512.png (512×512), /192.png (192×192) Список иконок для разных устройств и разрешений экрана
start_url ./ Адрес страницы, которая открывается при запуске PWA
display standalone Вид отображения PWA
2.1.10.3 Badge API

Для отображения количества непрочитанных сообщений на иконке PWA используется Badging API.

2.1.10.3_3 Процедура обработки открытия push-уведомления
  1. Выполняется открытие push-уведомления.
  2. Если при открытии push-уведомления в объекте payload:
  3. Имеется параметр entity_type и id — выполняется переход на соответствующий раздел клиентской части;
  4. Не имеется параметров entity_type и id — выполняется переход на стартовую страницу сервиса для данного пользователя.
2.1.10.3_1 Процедура установления количества непрочитанных сообщений при получении push-уведомления
  1. При получении push-уведомления, содержащего параметр unread_count, выполняется:
  2. Если значение unread_count:
    1. Более 0 — выполняется запрос setAppBadge с параметром unread_count;
    2. Менее или равно 0 — выполняется запрос clearAppBadge.
2.1.10.3_2 Процедура установления количества непрочитанных сообщений при получении socket-сообщения
  1. При получении socket-сообщения с типом messages_counters_changed:
  2. Если значение параметра value в объекте, где object_type — all_messages:
    1. Более 0 — выполняется запрос setAppBadge с параметром value;
    2. Менее или равно 0 — выполняется запрос clearAppBadge.

2.1.12 Мобильное приложение

«Мобильное приложение» — приложение для платформ iOS и Android, которое использует ту же сборку клиентской части сервиса, что и веб-версия.

Ресурсы клиентской части включены в сборку «Мобильного приложения» и не загружаются по сети.

FR_01_2.1.12_1 Регистрация и авторизация в «Мобильном приложении» доступны только «Инфлюэнсеру». Авторизация «Представителя бизнеса» в «Мобильном приложении» не выполняется согласно «02_2.3_4 Процедура верификации email».

FR_01_2.1.12_2 В «Мобильном приложении» не отображается информация о стоимости «Подписок пользователя» и не выполняется переход к оплате.

FR_01_2.1.12_3 При получении запроса, к которому относится токен авторизации «Пользователя», и значении заголовка «X-Platform» (FR_01_2.1.4_5):

  • ios — «Свойству установки приложения iOS» данного «Пользователя» устанавливается значение true;
  • android — «Свойству установки приложения Android» данного «Пользователя» устанавливается значение true.
01_2.1.12_1 Процедура обработки нажатия на push-уведомление в Мобильном приложении
  1. Выполняется нажатие на push-уведомление.
  2. Если «Мобильное приложение» не было запущено — выполняется его запуск.
  3. Если при нажатии на push-уведомление в объекте data:
  4. Имеются параметры entity_type и id — выполняется переход на соответствующий раздел клиентской части;
  5. Не имеется параметров entity_type и id — выполняется переход на стартовую страницу сервиса для данного пользователя.
  6. Если на этапе 3 переход не может быть выполнен, так как клиентская часть не завершила загрузку, переход выполняется после завершения загрузки клиентской части.

2.2 База данных

При обновлении сущности, для которой имеется параметр «Дата обновления», значение параметра «Дата обновления» устанавливается как текущая дата, если в СТ не указано иного.

При удалении сущности, для которой имеется параметр «Дата удаления», значение параметра «Дата удаления» устанавливается как текущая дата, если в СТ не указано иного.


2.3 Centrifugo

Centrifugo — сервис, который предоставляет возможность обмениваться сообщениями между клиентской и серверной частями сервиса Rippla в режиме реального времени.

Для обмена сообщениями клиентская часть должна подключиться к веб-сокету «Уведомления от сервиса Centrifugo».

Конфигурация сервиса Centrifugo:

Параметр Значение Описание
Время жизни токена 86400 Значение в секундах
Максимальная длина имени канала 255

01_2.3_1 Шаблон Centrifugo-уведомления

Centrifugo-уведомление является структурой данных в формате JSON.

01_2.3_1.1 Параметры Centrifugo-уведомления
Параметр Описание Значение
type Тип socket-сообщения messages_counters_changed; collaboration_status_changed; campaign_status_changed; assistant_message_created; campaign_creation_restriction; notification_contact_created; collaboration_message_created; post_or_reel_stat_updated; story_stat_updated; description_for_campaign_generated; accompanying_message_for_campaign_generated; collaboration_created; content_upload_restriction
data Массив объектов
01_2.3_1.1.1 Элемент массива «data» для типа «messages_counters_changed»
Параметр Описание Значение
object_type Тип объекта campaign; collaboration; active_campaign; hidden_campaign; finished_campaign; new_collaboration; confirmed_collaboration; scheduled_collaboration; pending_results_collaboration; results_added_collaboration; rejected_collaboration; canceled_collaboration; all_messages
id Идентификатор объекта Обязателен для типов: campaign, collaboration, new_collaboration, confirmed_collaboration, scheduled_collaboration, pending_results_collaboration, results_added_collaboration, rejected_collaboration, canceled_collaboration
value Значение счётчика
01_2.3_1.1.2 Элемент массива «data» для типа «collaboration_status_changed»
Параметр Описание
id Идентификатор коллаборации
previous_status Предыдущий статус коллаборации
new_status Новый статус коллаборации
campaign_id Идентификатор кампании
collaborations_left Количество оставшихся коллабораций
01_2.3_1.1.3 Элемент массива «data» для типа «campaign_status_changed»
Параметр Описание
id Идентификатор кампании
previous_status Предыдущий статус кампании
new_status Новый статус кампании
campaigns_left Количество оставшихся кампаний
01_2.3_1.1.4 Элемент массива «data» для типа «assistant_message_created»
Параметр Описание Значение
id Идентификатор сообщения
message Текст сообщения
created_at Дата создания сообщения
author Автор сообщения influencer; business_representative; assistant
error Объект ошибки. Структура согласно 01_2.3_1.1.4_1

01_2.3_1.1.4_1 Объект «error»

Параметр Описание
message Текст сообщения об ошибке
01_2.3_1.1.5 Элемент массива «data» для типа «campaign_creation_restriction»
Параметр Описание Значение
is_campaign_creation_locked_for_not_answering_messages Возможность создания кампании для бизнеса, который не отвечает на сообщения true; false
01_2.3_1.1.6 Элемент массива «data» для типа «notification_contact_created»
Параметр Описание
service_id Идентификатор сервиса
id Идентификатор контакта
is_active Статус активности
interval Интервал
01_2.3_1.1.7 Элемент массива «data» для типа «collaboration_message_created»
Параметр Описание Значение
id Идентификатор сообщения
collaboration_id Идентификатор коллаборации
message Текст сообщения null, если сообщение содержит только вложения
created_at Дата создания сообщения
author Автор сообщения influencer; business_representative; system
files_count Количество вложений сообщения
files Вложения сообщения (изображения и видео), отсортированные по «Дате создания» по возрастанию (сначала более старые) Массив объектов: id; url — ссылка на изображение или watch-ссылка для видео; preview — ссылка на постер для видео, null для изображений
01_2.3_1.1.8 Элемент массива «data» для типа «post_or_reel_stat_updated»
Параметр Описание
id Идентификатор поста коллаборации
total_views Количество просмотров
total_likes Количество лайков
total_comments Количество комментариев
total_reach Охват
total_shares Количество поделившихся
total_saves Количество сохранений
total_reposts Количество репостов
01_2.3_1.1.9 Элемент массива «data» для типа «story_stat_updated»
Параметр Описание
id Идентификатор поста коллаборации
total_views Количество просмотров
total_taps_on_mention Количество нажатий на упоминание
total_reach Охват
01_2.3_1.1.10 Элемент массива «data» для типа «description_for_campaign_generated»
Параметр Описание
id Идентификатор локации
description Описание кампании
01_2.3_1.1.11 Элемент массива «data» для типа «accompanying_message_for_campaign_generated»
Параметр Описание
id Идентификатор кампании
accompanying_message Сопроводительное сообщение
01_2.3_1.1.12 Элемент массива «data» для типа «collaboration_created»
Параметр Описание
active_collaborations_left Количество доступных откликов
01_2.3_1.1.13 Элемент массива «data» для типа «content_upload_restriction»
Параметр Описание Значение
is_content_upload_locked Наличие ограничения откликов Инфлюэнсера true; false

01_2.3_2 Процедура подключения к веб-сокету

  1. Клиентской частью сервиса выполняется подключение к веб-сокету с методом «Get Websocket token».

01_2.3_3 Процедура получения веб-сокет токена

API: GET /private/websocket/token

  1. Выполняется запрос «Get Websocket token».
  2. Генерируется centrifugo-токен с параметрами:
  3. sub — идентификатор пользователя, для которого выполнен запрос;
  4. exp — согласно параметру «Время жизни токена» конфигурации Centrifugo;
  5. channels — массив названий каналов: notification_{идентификатор пользователя}.
  6. На запрос «Get Websocket token» возвращается centrifugo-токен, сгенерированный на этапе 2.

2.4 MCP-сервер

MCP-сервером является сервис, который обеспечивает взаимодействие между ИИ-моделью и сервисом Rippla для получения данных, которые хранятся в сервисе Rippla или могут быть получены из внешних источников.

2.4_1 Переменные окружения

Переменная окружения Описание
MCP_SERVER_API_KEY API-ключ
MCP_SERVER_URL URL для выполнения запросов

2.4_2 Источники

Источник Описание
db Используется MCP-сервером для получения данных из базы данных Rippla
ai_api Используется MCP-сервером для передачи и получения данных из системы Rippla по API
internal_library Используется MCP-сервером как встроенный источник данных

2.4_3 Инструменты

Инструмент Источник Описание
get_locations db Получение списка локаций, доступных пользователю
get_countries internal_library Получение списка стран, доступных в системе
get_cities db Получение списка городов, доступных в системе
get_campaign_properties db Получение параметров шаблона кампании
get_age_ranges_audience db Получение возрастных групп аудитории
get_ranges_quantity_followers db Получение диапазонов количества подписчиков
get_gender_audience db Получение полов аудитории
get_influencer_engagement_rate db Получение показателей вовлечённости
create_campaign ai_api Создание кампании
update_collaboration_post_stats ai_api Обновление статистики поста коллаборации
generate_location_description_for_campaign ai_api Создание описания локации для кампании
generate_accompanying_message ai_api Создание сопроводительного сообщения

4. Web-приложение

[draft] 4.1 Возможности использования

4.2 Фильтр списка инфлюэнсеров

Фильтр списка инфлюэнсеров определяет условия, согласно которым инфлюэнсер должен отображаться в интерфейсе пользователя, в списке инфлюэнсеров.

NFR_01_4.2_1
Настройки фильтра списка инфлюэнсеров, должны хранится на устройстве пользователя(в LocalStorage браузера).

Настройки фильтра списка инфлюэнсеров представляют собой "4.2.1 Ключ "filter_settings_for_influencers".

4.2.1 Ключ "filter_settings_for_influencers"

Значение ключа является строка которая содержит, структуру данных в формате JSON "01_4.2.1_1".

01_4.2.1_1

Параметр Описание Значение
audience_countries Массив стран аудитории
audience_cities Массив городов аудитории
influencer_countries Массив стран инфлюэнсера
influencer_cities Массив городов инфлюэнсера
age_ranges_audience Массив возрастных групп аудитории
ranges_quantity_followers Массив идентификаторов диапазонов количества подписчиков.
gender_audience Массив идентификаторов пола аудитории. Массив может содержать только один идентификатор Пола аудитории. Массив используется из-за технических ограничений клиентской части.
influencer_engagement_rate Массив идентификаторов показателя вовлеченности аудитории Массив может содержать только один идентификатор Показателя вовлеченности. Массив используется из-за технических ограничений клиентской части.

Пример:
{
"filter_settings_for_influencers": {
"audience_countries": [
{
"value": "RU",
"title": "Russia"
},
{
"value": "PT",
"title": "Portugal"
}
],
"audience_cities": [
{
"value": 103103,
"title": "Moscow, Russia"
},
{
"value": 92756,
"title": "Porto, Portugal"
}
],
"influencer_countries": [
{
"value": "RU",
"title": "Russia"
}
],
"influencer_cities": [
{
"value": 103103,
"title": "Moscow, Russia"
}
],
"age_ranges_audience": [
{
"title": "18-24",
"value": 2
}
],
"ranges_quantity_followers": [
{
"title": "40000-50000",
"value": 6
},
{
"title": ">50000",
"value": 7
}
],
"gender_audience": [
{
"title": "Male",
"value": 1
}
],
"influencer_engagement_rate": [
{
"title": ">= 0.5",
"value": 1
}
]
}
}

4.3 Отображение постов инфлюэнсера

FR_4.3_1
Для отображения "Постов аккаунта" должна использоваться библиотека Instagram embed.

4.4 Query параметры адреса страницы

4.4.1 UTM-метки

FR_4.4.1_1
При навигации между маршрутами(страницами) клиентской части сервиса должны сохраняться UTM-метки(согласно FR_4.4_1.1), которые содержатся в URL текущей страницы.

FR_4.4.1_1.1
Следующие UTM-метки должны сохраняться при навигации:

  1. utm_id;
  2. utm_source;
  3. utm_medium;
  4. utm_campaign;
  5. utm_term;
  6. utm_content.

4.4.2 Идентификатор кампании

FR_4.4.2_1
При навигации между следующими маршрутами(страницами) клиентской части сервиса должны сохраняться query параметры(согласно FR_4.4.2_1.1), которые содержатся в URL текущей страницы:

  • sign-up;
  • log-in;
  • /onboarding/influencer;
  • /onboarding/business;
  • index.

FR_4.4.2_1.1
Следующие query параметры должны сохраняться при навигации:
offer_id;

4.5 Процедуры

01_4.5.1 Процедура открытия web-приложения
  1. Выполняется открытие клиентской части сервиса.
  2. Если в LocalStorage не имеется ключа "locale" и язык устройства пользователя, с которого выполняется открытие клиентской части сервиса:
  3. "en" / "pt" / "es" выполняется:
    1. Создание ключа "locale" в LocalStorage со значением согласно языку устройства пользователя;
    2. Применение локализации согласно локали, которая указана в значение ключа "locale" в LocalStorage.
  4. Не "en" / "pt" / "es" выполняется создание ключа "locale" в LocalStorage со значением "en".
  5. Если в cookies имеется ключ "access_token" и "switch_user" выполняется:
  6. Сохранение в LocalStorage ключей:
    1. "access_token" со значением ключа "access_token", который имеется в cookies;
    2. "switch_user" со значением ключа "switch_user", который имеется в cookie.
  7. Удаление из cookies ключей:
    1. "access_token";
    2. "switch_user".
  8. Если в SessionStorage не имеется ключа "X-Session-Id" выполняется:
  9. Генерация uuid;
  10. создание ключа "X-Session-Id" в SessionStorage со значением, которое было получено на этапе 4_a данной процедуры.
  11. Если в LocalStorage:
  12. Не имеется ключа "access_token" выполняется переход к странице "Авторизация";
  13. Имеется ключа "access_token" выполняется:
    1. "02_2.3_13 Процедура получения информации о профиле пользователя";
    2. Если информация о профиле пользователя получена успешно — “02_2.3_18 Процедура регистрации FCM токена”.
01_4.5.2 Процедура перехода на бота в социальных сетях
  1. Клиентской частью сервиса выполняется нажатие на кнопку перехода в бота.
  2. Если бот в:
  3. Telegram, выполняется переход по ссылке https://tg.pulse.is/rippla_com_bot?start=6943a95c45fdc7269f004334\&uuid={uuid_for_bots пользователя который инициировал данную процедуру};
  4. WhatsApp, выполняется переход по ссылке https://wa.pulse.is/15557168443?start=69475468c46b0268950e4996\&text={uuid_for_bots пользователя который инициировал данную процедуру};

5. Панель управления

5.1 Раздел — Инфлюэнсеры

5.1.1 Поиск

Администратор сервиса имеет возможность выполнить поиск по списку Инфлюэнсеров.

01_5.1.1_1 Требования к поиску в списке Инфлюэнсеров
Инфлюэнсер удовлетворяет условиям поиска если, значение указанное Администратором в поле ввода Поиска, является подстрокой, для строки которая определяется как значение одного из следующих параметров:

  1. Пользователь:
  2. Идентификатор;
  3. Email;
  4. Полное имя;
  5. Номер телефона;
  6. Мессенджеры:
    1. account.
  7. Описание.
  8. Аккаунта пользователя:
  9. Идентификатор;
  10. Полное имя;
  11. Имя в сервисе;
  12. Информация о пользователе.

6. Настройки сервиса

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

6.1 Параметры настроек(settings)

Название Параметр Формат Обяз. Уник. Примечание
Идентификатор id varchar(255) да да Наименование настройки.
Значение value json да нет Структура данных в формате JSON.

6.2 Количество бесплатных коллабораций

Настройка определяет количество Коллабораций которое может совершить Инфлюэнсер или Бизнес в рамках сервиса без активной подписки.

01_6.2_1 Виды количества бесплатных коллабораций

  • По умолчанию - применяется для всех Инфлюэнсеров или Бизнесов для которых не установлено Персональное количество бесплатных коллабораций;
  • Персональное - количество установленное для конкретного Инфлюэнсера, Бизнеса или городов. Условие по городу относится только Бизнеса для которого не имеется персонального количества коллабораций и у которого есть локация в указанном городе. Если Бизнес попадает под несколько городов, используется персональное количество коллабораций, которое было создано позднее.

FR_01_6.2_2
Для "Инфлюэнсера" имеется "Возможность использования бесплатной коллаборации" если для инфлюэнсера не имеется "Активной подписки пользователя", и сейчас:

  1. "Первый период обновления коллабораций" и количество "Использованных коллабораций", которые относятся к данному Инфлюэнсеру менее чем:
  2. Значение параметра "Количество бесплатных коллабораций в первый период" персонального количество бесплатных коллабораций, если для данного инфлюэнсера имеется Персональное количество бесплатных коллабораций;
  3. Значению параметра "free_collabs_at_first_period" с типом "influencers" настройки "Количества бесплатных коллабораций по умолчанию", если для данного инфлюэнсера не имеется "Персонального количество бесплатных коллабораций".
  4. Не "Первый период обновления коллабораций" и количество "Использованных коллабораций", которые относятся к данному Инфлюэнсеру менее чем:
  5. Значение параметра "Количество бесплатных коллабораций" персонального количество бесплатных коллабораций, если для данного инфлюэнсера имеется Персональное количество бесплатных коллабораций;
  6. Значению параметра "free_collabs" с типом "influencers" настройки "Количества бесплатных коллабораций по умолчанию", если для данного инфлюэнсера не имеется "Персонального количество бесплатных коллабораций".

FR_01_6.2_3
Для "Представителя бизнеса" имеется "Возможность использования бесплатной коллаборации" если для "Представителя бизнеса" не имеется "Активной подписка пользователя" и сейчас:

  1. "Первый период обновления коллабораций" и количество "Использованных коллабораций", которые относятся к Кампании, которая относится к Локации, которая относится к данному "Бизнесу" менее чем:
  2. Значение параметра "Количество бесплатных коллабораций в первый период" персонального количество бесплатных коллабораций, если для данного представителя бизнеса имеется Персонального количество бесплатных коллабораций;
  3. Значению параметра "free_collabs_at_first_period" с типом "businesses" настройки "Количества бесплатных коллабораций по умолчанию", если для данного представителя бизнеса не имеется "Персонального количество бесплатных коллабораций".
  4. Не "Первый период обновления коллабораций" и количество "Использованных коллабораций", которые относятся к Кампании, которая относится к Локации, которая относится к данному "Бизнесу" менее чем:
  5. Значение параметра "Количество бесплатных коллабораций" персонального количество бесплатных коллабораций, если для данного представителя бизнеса имеется Персонального количество бесплатных коллабораций;
  6. Значению параметра "free_collabs" с типом "businesses" настройки "Количества бесплатных коллабораций по умолчанию", если для данного представителя бизнеса не имеется "Персонального количество бесплатных коллабораций".

6.2.1 Количество бесплатных коллабораций по умолчанию

01_6.2.1_1
Количество бесплатных коллабораций по умолчанию должно храниться в "01_06 Настройках сервиса".

01_6.2.1_2 Количество бесплатных коллабораций по умолчанию(free_collabs)
Название Параметр Формат Обяз. Уник. Примечание
Тип type enum да да Возможны следующие типы: influencers; businesses.
Количество бесплатных коллабораций в первый период free_collabs_at_first_period smallint да нет По умолчанию 3.
Количество бесплатных коллабораций free_collabs smallint да нет По умолчанию 3.

6.2.2 Персональное количество бесплатных коллабораций

6.2.2.1 Параметры персонального количества бесплатных коллабораций(personal_free_collabs)
Название Параметр Формат Обяз. Уник. Примечание
Идентификатор id bigserial да да
Дата создания created_at timestamp да нет
Дата обновления updated_at timestamp нет нет
Дата удаления deleted_at timestamp нет нет
Идентификатор инфлюэнсера user_id bigint нет нет Обязательно если не имеется "Идентификатора бизнеса" и "Идентификатора города".
Идентификатор бизнеса business_id bigint нет нет Обязательно если не имеется "Идентификатора инфлюэнсера" и "Идентификатора города".
Список городов city_ids array да нет Одномерный массив, который содержит идентификаторы городов. Обязательно если не имеется "Идентификатора инфлюэнсера" и "Идентификатора бизнеса".
Количество бесплатных коллабораций free_collabs smallint да нет
Количество бесплатных коллабораций в первый период free_collabs_at_first_period smallint да нет
Идентификатор администратора admin_id integer нет нет Идентификатор администратора который создал или изменил Количество бесплатных коллабораций

6.3 Максимальное количество активных локаций

Настройка определяет какое максимальное количество активных Локаций может иметь один Бизнес в рамках сервиса.

01_6.3_1 Виды количества максимального количества активных локаций

  • По умолчанию - применяется для всех Бизнесов для которых не установлено Персональное количество активных локаций;
  • Персональное - количество установленное для конкретного Бизнеса.

6.3.1 Максимальное количество активных локаций по умолчанию

01_6.3.1_1
Количество активных локаций по умолчанию должно храниться в "01_06 Настройках сервиса".

01_6.3.1_2 Количество активных локаций по умолчанию

Параметр Значение
Идентификатор max_active_locations
Значение { "quantity": 3 }

6.3.2 Персональное количество активных локаций

6.3.1.1 Параметры персонального количества активных локаций(personal_max_active_locations)
Название Параметр Формат Обяз. Уник. Примечание
Идентификатор id bigserial да да
Дата создания created_at timestamp да нет
Дата обновления updated_at timestamp нет нет
Идентификатор администратора admin_id integer нет нет Идентификатор администратора который создал или изменил Количество бесплатных коллабораций
Дата удаления deleted_at timestamp нет нет
Идентификатор бизнеса business_id bigint да да
Количество активных локаций max_active_locations smallint да нет

6.4 Списки популярных геообъектов

Настройка определяет список популярных геообъектов для фильтрации:

  • Списка инфлюэнсеров по принадлежности аудитории инфлюэнсера к стране или городу;
  • Списка Кампаний и Локаций по принадлежности к стране или городу.

01_6.4_1
Списки популярных геообъектов должны храниться в "01_06 Настройках сервиса". Значением настройки является структура данных в формате JSON "01_01_6.4_2"

01_6.4_2

Параметр Описание Значение
influencer Массив геобъектов Элементом массива является объект "01_6.4_2.1"
business Массив геобъектов Элементом массива является объект "01_6.4_2.1"

01_6.4_2.1

Параметр Описание Значение
value Идентификатор геообъекта Код страны - если геообъектом является страна; Идентификатор города - если геообъектом является город.
title Название геообъекта Название страны, которую указал пользователь;
type Тип геообъекта "country" - если геообъектом является страна; "city" - если геообъектом является город.

01_6.4_3 Настройка - списки популярных геообъектов

Параметр Значение
Идентификатор favorite_geoobjects
Значение { "influencer" : [], "business" : [] }

6.5 Источник данных для аккаунтов инфлюэнсеров

Настройка определяет какой сервис должен использоваться при синхронизации данных аккаунта инфлюэнсера.

01_6.5_1 Возможные источники данных

  • yoloco - 3.2 Yoloco;
  • onSocial - 3.8 OnSocial.

01_6.5_2 Источник данных по умолчанию

Параметр Значение
Идентификатор default_data_source
Значение { "default_data_source": "onSocial" }

6.6 Подписка инфлюэнсера

Настройка определяет режим работы сервиса для Инлфлюэнсера, возможны следующие режимы работы сервиса:

  • Отсутствие активной подписки не ограничивает возможности использования инфлюэнсера;
  • Отсутствие активной подписки ограничивает возможности использования инфюэнсера согласно указанным настройкам.

Настройка определяет условия, при которых считается что для "Инфлюэнсера" имеется или не имеется "Подписка пользователя".

01_6.6_1 Хранение настройки
Настройка подписки должна храниться в "01_06 Настройках сервиса". Значением настройки является структура данных в формате JSON.

6.6.1 Параметры настройки подписки инфлюэнсера (influencer_subscription_settings)
Название Параметр Формат Обяз. Уник. Примечание
Статус активности is_always_active boolean да нет
Список городов city_ids array да нет Одномерный массив, который содержит идентификаторы городов.
Статус применения для инфлюэнсеров без города applies_to_no_city boolean да нет

6.7 Внешний доступ

Настройка определяет условия правила доступа внешнего API к сервису Rippla.

01_6.7_1 Хранение настройки
Настройка внешнего доступа должна храниться в "01_06 Настройках сервиса". Значением настройки является структура данных в формате JSON.

6.7.1 Параметры настройки внешнего доступа (external_access_settings)
Название Параметр Формат Обяз. Уник. Примечание
Список API-ключей api_keys json да нет Массив, который содержит API-ключи. Элементом массива является объект 6.7.1.1

6.7.1.1

Параметр Описание Значение
api_key API-ключ
methods Методы Одномерный массив, который содержит идентификаторы методов.
ip_allowlist Список IP-адресов Одномерный массив, который содержит IP-адреса.

Пример:
[
{
"api_key": "rpl_live_3f8a2c9b6e124e908d4b",
"methods": [
"api.collaboration.message.create",
"api.business_representative.update"
],
"ip_allowlist": [
"192.168.10.14",
"192.168.10.15"
]
},
{
"api_key": "rpl_live_7b2d1e9c4a9f62d0198e",
"methods": [
"api.location.list",
"api.location.update"
],
"ip_allowlist": [
"10.0.0.5"
]
}
]

6.9 Количество дней до отмены подписки после первого не успешного платежа

Настройка определяет количество дней, которое используется при формировании данных для уведомления об отмене подписки.

01_6.9_1 Хранение настройки
Настройка количества дней до отмены подписки должна храниться в "01_06 Настройках сервиса". Значением настройки является структура данных в формате JSON.

6.9.1 Параметры настройки количества дней до отмены подписки после первого платежа (subscription_post_period_cancel_days)
Название Параметр Формат Обяз. Уник. Примечание
Количество дней до отмены подписки days integer да нет По умолчанию 7.

6.11 Ассистент

Настройка определяет параметры работы ассистента.

01_6.11_1 Хранение настройки
Настройка ассистента должна храниться в "01_06 Настройках сервиса". Значением настройки является структура данных в формате JSON.

6.11.1 Параметры настройки ассистента (assistant)

Название Параметр Формат Обяз. Уник. Примечание
Время жизни сессии session_ttl_m int да нет Значение указывается в минутах.
Системное сообщение system_message text да нет

6.12 Ограничение на создание новой кампании

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

01_6.12_1 Хранение настройки
Настройка ограничения на создание новой кампании должна храниться в "01_06 Настройках сервиса". Значением настройки является структура данных в формате JSON.

6.12.1 Параметры настройки ограничения на создание новой кампании (business_create_campaign_restriction)

Название Параметр Формат Обяз. Уник. Примечание
Статусы коллаборации для отслеживания непрочитанных сообщений message_check_statuses array нет нет Одномерный массив статусов коллабораций.
Статус проверки просмотра всех коллабораций require_all_collaboration_viewed boolean да нет
Статус проверки коллаборации в статусе новая is_new_status_checked boolean да нет

6.13 Вариант файла в Cloudflare

Настройка определяет идентификатор варианта изображения в Cloudflare, который должен использоваться серверной частью сервиса при генерации ссылки на изображение.

01_6.13_1 Хранение настройки
Настройка варианта файла в Cloudflare должна храниться в "01_06 Настройках сервиса". Значением настройки является структура данных в формате JSON.

6.13.1 Параметры настройки варианта файла в Cloudflare(cloudflare_file_variant)

Название Параметр Формат Обяз. Уник. Примечание
Идентификатор варианта variant_id varchar(255) нет нет Если не указан вариант файла в Cloudflare определяется как "public".

6.14 Политика выполнения запросов к Apify

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

01_6.14_1 Хранение настройки
Настройка политики выполнения запросов к Apify должна храниться в "01_06 Настройках сервиса". Значением настройки является структура данных в формате JSON.

6.14.1 Параметры политики выполнения запросов к Apify(apify_request_policy)

Название Параметр Формат Обяз. Уник. Примечание
Минимальный интервал между прямыми запросами direct_request_min_interval_m smallint да нет Значение в минутах. По умолчанию 1440.
Политика выполнения запросов по расписанию schedule_update_policy array да нет Массив объектов, который содержит информацию о выполнении запросов. Элементом массива является объект 6.14.1.1

6.14.1.1

Параметр Описание Значение
attempt_number Номер попытки обновления
delay_m Период отсрочки

6.15 Правила для показа рекомендаций фильтров

Настройка определяет набор правил рекомендаций фильтров, которые используются сервисом для формирования подсказок пользователю при выборе параметров фильтрации инфлюэнсеров.

01_6.15_1 Хранение настройки
Настройка рекомендаций по фильтрам должна храниться в "01_06 Настройках сервиса". Значением настройки является структура данных в формате JSON.

6.15.1 Параметры рекомендаций по фильтрам(filter_recommendation_rules)

Название Параметр Формат Обяз. Уник. Примечание
Правила rules array да нет Массив объектов, который содержит информацию о выполнении запросов. Элементом массива является объект 6.15.1.1 Rules

6.15.1.1 Rules

Параметр Описание Значение
text Текст кнопки Объект переводов. Ключ - код локали (en, de, es, pt), значение - текст кнопки.
tooltip Выводимый в подсказке текст Объект переводов. Ключ - код локали (en, de, es, pt), значение - локализованный текст подсказки.
conditions Условия применения Элементом массива является объект 6.15.1.1.1 Conditions.
recommendations Рекомендации Элементом массива является объект 6.15.1.1.2 recommendations.

6.15.1.1.1 Conditions

Параметр Описание Значение
entity_type Тип сущности Возможны следующие фильтры: age_ranges_audience; influencer_engagement_rate; ranges_quantity_followers; audience_countries; audience_cities; influencer_countries; influencer_cities.
operator Оператор Возможны следующие операторы: only; contains; not_contains; empty.
values Значение Одномерный массив идентификаторов.

6.15.1.1.2 Recommendations

Параметр Описание Значение
entity_type Тип сущности Возможны следующие фильтры: age_ranges_audience; influencer_engagement_rate; ranges_quantity_followers; audience_countries; audience_cities; influencer_countries; influencer_cities.
action Действие Возможны следующие действие: add; set; remove.
values Значение Одномерный массив идентификаторов.

6.16 Период обновления доступных коллабораций пользователю

Настройка определяет длительность периода в который обновляются коллаборации.

01_6.16_1 Хранение настройки
Настройка периода обновления доступных коллабораций пользователю должна храниться в "01_06 Настройках сервиса". Значением настройки является структура данных в формате JSON.

6.16.1 Параметры периода обновления доступных коллабораций пользователю(collaboration_refresh_policy)

Название Параметр Формат Обяз. Уник. Примечание
Первый период обновления коллабораций first_collaboration_refresh_period_d smallint да нет Значение в днях. По умолчанию 30.
Период обновления коллабораций collaboration_refresh_period_d smallint да нет Значение в днях. По умолчанию 30.

FR_01_6.16_1
"Текущий период обновления коллаборации" для "Пользователя" для которого не имеется "Активной подписки пользователя":

  1. И не имеется "Подписки пользователя":
  2. "Текущий период обновления коллаборации" определяется начиная с "Даты создания" пользователя. Если разница между "Текущей датой" и "Датой создания" пользователя:
    1. Меньше либо равна значению параметра "first_collaboration_refresh_period_d" настройки "collaboration_refresh_policy" - текущим считается первый период;
    2. Больше значения параметра "first_collaboration_refresh_period_d" - текущий период определяется как один из последовательных периодов длительностью "collaboration_refresh_period_d", рассчитываемых от даты окончания первого периода.
  3. И имеется "Подписка пользователя":
  4. "Текущий период обновления коллаборации" определяется как один из последовательных периодов длительностью "collaboration_refresh_period_d", рассчитываемых от "Даты создания" последнего "Изменения подписки", которая относится к "Подписке пользователя", которая относится к данному пользователю.

FR_01_6.16_2
"Текущий период обновления коллаборации" для "Пользователя" для которого имеется "Активная подписка пользователя". "Текущий период обновления коллаборации" определяется начиная с "Даты начала текущего периода" подписки пользователя и заканчивается "Датой окончания текущего периода" подписки пользователя. Если для подписки пользователя не имеется "Даты начала текущего периода" — начиная с "Даты создания" подписки пользователя.

6.17 Статус отправки отчета об активности

Настройка определяет статус отправки отчета об активности.

01_6.17_1 Хранение настройки
Настройка статуса отправки отчета об активности должна храниться в "01_06 Настройках сервиса". Значением настройки является структура данных в формате JSON.

6.17.1 Параметры статуса отправки отчета об активности(activity_report_enabled)

Название Параметр Формат Обяз. Уник. Примечание
Статус активности is_active bollean да нет По умолчанию false.

6.18 Максимальное количество активных кампаний для пользователей без подписки

Настройка определяет какое максимальное количество активных Кампаний может иметь Бизнес в рамках сервиса не имея активной подписки.

01_6.18_1 Виды количества бесплатных кампаний

  • По умолчанию - применяется для всех Инфлюэнсеров или Бизнесов для которых не установлено Персональное количество бесплатных кампаний;
  • Персональное - количество установленное для конкретного Бизнеса.

6.18.1 Максимальное количество активных кампаний по умолчанию

01_6.18.1_1
Количество активных локаций по умолчанию должно храниться в "01_06 Настройках сервиса".

01_6.18.1_2 Количество активных кампаний по умолчанию

Параметр Значение
Идентификатор max_active_campaigns
Значение { "quantity": 1 }

6.18.1 Персональное количество активных кампаний

6.18.1.1 Параметры персонального количества активных кампаний(personal_max_active_campaigns)
Название Параметр Формат Обяз. Уник. Примечание
Идентификатор id bigserial да да
Дата создания created_at timestamp да нет
Дата обновления updated_at timestamp нет нет
Идентификатор администратора admin_id integer нет нет Идентификатор администратора который создал или изменил Количество бесплатных коллабораций
Дата удаления deleted_at timestamp нет нет
Идентификатор бизнеса business_id bigint да да
Количество активных кампаний max_active_campaigns smallint да нет

6.19 Количество бесплатных откликов(коллабораций)

Настройка определяет количество откликов которое может получить бизнес без активной подписки.

01_6.19_1 Виды количества бесплатных откликов

  • По умолчанию - применяется для всех Бизнесов для которых не установлено Персональное количество бесплатных коллабораций;
  • Персональное - количество установленное для конкретного Инфлюэнсера, Бизнеса или городов. Условие по городу относится только Бизнеса для которого не имеется персонального количества коллабораций и у которого есть локация в указанном городе. Если Бизнес попадает под несколько городов, используется персональное количество коллабораций, которое было создано позднее.

FR_01_6.19_2
Для "Представителя бизнеса" имеется "Доступный отклик" если для "Представителя бизнеса":

  1. Не имеется "Активной подписки пользователя" и количество "Откликов", которые относятся к Кампании, которая относится к Локации, которая относится к данному "Бизнесу" менее чем:
  2. Значение параметра "Количество бесплатных откликов" персонального количества бесплатных откликов, если для данного представителя бизнеса имеется Персонального количество бесплатных откликов;
  3. Значению параметра "Количество бесплатных откликов" с типом "businesses" настройки "Количества бесплатных коллабораций по умолчанию", если для данного представителя бизнеса не имеется "Персонального количество бесплатных коллабораций".
  4. Имеется "Активная подписки пользователя" и количество "Откликов", которые относятся к Кампании, которая относится к Локации, которая относится к данному "Бизнесу" менее чем значение параметра "Количество откликов" подписки пользователя.

FR_01_6.19_3
Для "Инфлюэнсера" имеется "Доступный отклик" если для Инфлюэнсера:

  1. Не имеется "Персонального количества бесплатных откликов";
  2. Имеется "Персональное количество бесплатных откликов", значение параметра "Количество бесплатных откликов" которого не "0", и количество "Коллабораций", созданных данным Инфлюэнсером в рамках "Текущего периода обновления коллабораций", менее значения параметра "Количество бесплатных откликов" Персонального количества бесплатных откликов.

6.19.1 Количество бесплатных откликов по умолчанию

01_6.19.1_1
Количество бесплатных откликов по умолчанию должно храниться в "01_06 Настройках сервиса".

01_6.19.1_2 Количество бесплатных откликов по умолчанию(free_active_collabs)
Название Параметр Формат Обяз. Уник. Примечание
Тип type enum да да Возможны следующие типы: businesses.
Количество бесплатных откликов free_active_collabs smallint да нет По умолчанию 10.

6.19.2 Персональное количество бесплатных откликов

6.19.2.1 Параметры персонального количества откликов коллабораций(personal_free_active_collabs)
Название Параметр Формат Обяз. Уник. Примечание
Идентификатор id bigserial да да
Дата создания created_at timestamp да нет
Дата обновления updated_at timestamp нет нет
Дата удаления deleted_at timestamp нет нет
Идентификатор инфлюэнсера user_id bigint нет нет Обязательно если не имеется "Идентификатора бизнеса" и "Идентификатора города".
Идентификатор бизнеса business_id bigint нет нет Обязательно если не имеется "Идентификатора инфлюэнсера" и "Идентификатора города".
Список городов city_ids array да нет Одномерный массив, который содержит идентификаторы городов. Обязательно если не имеется "Идентификатора инфлюэнсера" и "Идентификатора бизнеса".
Количество бесплатных откликов free_active_collabs smallint да нет
Идентификатор администратора admin_id integer нет нет Идентификатор администратора который создал или изменил Количество бесплатных откликов

6.20 Список почт офферы с которых не учитываются при создании push-уведомления

Настройка список почт офферы с которых не учитываются при создании push-уведомления.

01_6.20_1 Хранение настройки
Настройка списка почт офферы с которых не учитываются при создании push-уведомления храниться в "01_06 Настройках сервиса". Значением настройки является структура данных в формате JSON.

6.20.1 Параметры настройки списка почт офферы с которых не учитываются при создании push-уведомления (offer_push_excluded_email_patterns)
Название Параметр Формат Обяз. Уник. Примечание
Список строковых значений email email_patterns json да нет Массив, который содержит строковые значения.

Значение по умолчанию:
{
"email_patterns": [
"@rippla.com",
"da.stupakov+"
]
}

6.21 Нормализация названий стран от источников данных

Настройка определяет соответствие между нестандартными или устаревшими названиями стран, поступающими от внешних источников данных (OnSocial, Yoloco), и их ISO 3166-1 alpha-2 кодами. Используется при обработке данных аккаунта инфлюэнсера для корректного определения кода страны.

01_6.21_1 Хранение настройки
Настройка нормализации названий стран должна храниться в "01_06 Настройках сервиса". Значением настройки является структура данных в формате JSON — объект, ключами которого являются названия стран от источника данных, значениями — ISO 3166-1 alpha-2 коды.

Ключ настройки: country_name_mapping

6.21.1 Параметры нормализации названий стран (country_name_mapping)
Название Параметр Формат Обяз. Уник. Примечание
Маппинг названий стран mapping object да нет Объект, ключами которого являются названия стран от источника данных, значениями — ISO 3166-1 alpha-2 коды.

Значение по умолчанию:
{
"mapping": [
"Turkey": "TR",
"Czech Republic": "CZ",
"The Netherlands": "NL",
"UAE": "AE",
"Macedonia": "MK",
"Burma": "MM",
"Ivory Coast": "CI",
"Swaziland": "SZ",
"Cape Verde": "CV"
]
}

6.22 Политика загрузки статистики поста коллаборации

Настройка определяет, через сколько часов после публикации поста/сторис инфлюэнсер может загрузить статистику.

01_6.22_1 Хранение настройки
Настройка должна храниться в "01_06 Настройках сервиса". Значением настройки является структура данных в формате JSON.

6.22.1 Параметры политики загрузки статистики поста коллаборации(stats_upload_policy)
Название Параметр Формат Обяз. Уник. Примечание
Мин. возраст поста/рилс для загрузки статистики post_min_age_h smallint да нет Значение в часах. По умолчанию 120.
Мин. возраст сторис для загрузки статистики story_min_age_h smallint да нет Значение в часах. По умолчанию 24.