Выдать пользовательский значок после прочтения Условий использования

Продолжаем обсуждение из темы Как работают значки «Прочитал правила»?:

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


Найдены ресурсы:

Это для значка «Прочитал правила»:

а также это… хотя я не знаю, куда вставлять SQL-запрос для значка:

…а также возникает основной вопрос: считается ли страница /tos темой, если пользователи могут видеть её только через вкладки:

Это поможет?

О, похоже, это поможет или направит меня в правильном направлении!
Спасибо!

Не уверен, что можно аналогичным образом связать похожий документ с Условиями использования (ToS). :thinking: Ссылка «Правила чтения» работает за счёт того, что в таблице user_stats фиксируется запись read_faq, а на данный момент механизма для аналогичной фиксации по Условиям использования не предусмотрено.

Поскольку версия для просмотра пользователем не является самой темой, я полагаю, что факт просмотра этой страницы нигде не фиксируется (например, в topic_views и т. п.).

Возможно ли изменить базу данных/таблицы, чтобы добавить новое поле read_tos?


Существует потенциально неуклюжее решение…
…публикация темы как опубликованной страницы вместо использования бесшовной интеграции, как в разделах FAQ и О нас. Не знаю, сработает ли это на самом деле…

Тестирование и результаты:

  • SQL-запрос возвращает пользователей, которые прочитали тему, и они должны получить значок, но я не получил это уведомление.

  • Могу подтвердить, что посещения /pub/slug без прямого перехода к теме обновляют счётчик просмотров темы… однако даже при крайне малом времени чтения значок автоматически не был выдан.

  • Также стоит отметить, что сама тема по-прежнему помечается как новая и непрочитанная для пользователя.

  • Дальнейшее изолированное тестирование показывает, что SQL-запрос подразумевает, что пользователи должны перейти к теме напрямую, чтобы считаться прочитавшими её. Подтвердить или опровергнуть это я не могу, так как значок не был выдан, но это наиболее вероятно.

Когда срабатывает триггер «обновлять ежедневно»?

Вы случайно не знаете, что именно сделала команда при обновлении Условий использования, когда нам нужно было подтвердить, что мы их ознакомились? Хотя это и не бейдж, не это ли был плагин Policy?

Вы можете ускорить этот процесс, вручную запустив jobs::BadgeGrant со страницы /sidekiq/scheduler (для тех, у кого есть доступ). У меня оно сработало 3 часа назад, но время может отличаться от сайта к сайту.

Если бы вас устраивало размещение информации в обычной теме, вы могли бы создать новую тему и добавить ссылку на неё в настройку tos url в панели администратора, чтобы она отображалась во вкладках. Затем можно было бы легко выдать значок на основе просмотра этой темы (хотя ваши эксперименты с опубликованными страницами также могут принести плоды :crossed_fingers:).

По-моему, чтобы реализовать это так же, как с «Прочитать правила», вам потребуется создать плагин, воспроизводящий поведение для Условий использования (хотя это не моя сильная сторона, так что воспринимайте это с долей скептицизма :slight_smile:).

Это необязательное пользовательское поле, которое, на мой взгляд, отлично подходит для этой цели. Хотя вы лишь подтверждаете, что прочитали их, а не факт прочтения, поэтому всё зависит от основной цели выдачи значка.

Подождите, это на самом деле гениально!

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

К сожалению, это не будет работать так же просто, как описано выше.