Discourse Yearly Review

:discourse2: Summary Discourse Yearly Review creates a topic on January 1st that summarizes the previous year’s forum activity. (See our examples here on Meta - year-in-review)
:hammer_and_wrench: Repository Link https://github.com/discourse/discourse-yearly-review
:open_book: Install Guide How to install plugins in Discourse

Initial Setup

Head to your /admin/plugins page to click the discourse-yearly-review :gear: Settings button:

Yearly Review settings

  1. Enter categories to pull data from into the yearly review categories setting. If left blank, it will default to the top 5 public categories.

  2. Using the yearly review publish category setting, choose a destination category for the review to be posted.

    :bulb: It is highly recommended to set the yearly review publish category to the staff or other private category so that you can view the topic before making it public. You might also like to edit it first.

  3. Then, enable the plugin using the yearly review enabled setting.

Features

As you can see at 2022: The Year in Review, data is displayed in two sections - users and topics.

The users section includes:

  • Most Time Reading
  • Most Topics Created
  • Most Replies Created
  • Most Replied to
  • Most Likes Given
  • Most Likes Received
  • Most Visits
  • Users who have been granted a featured badge (the badge is set by the yearly review featured badge Site Setting

The topics section includes:

  • Most Read
  • Most Liked
  • Most Replied to
  • Most Popular
  • Most Bookmarked

Generating the Yearly Review

The plugin sets thresholds for deciding which topics to display. There need to be a minimum of 10 likes or replies, 5 bookmarks, a score of 10, or one hour’s read time before a topic will be displayed. The topic is published automatically through a background job. The job checks that the plugin is enabled and that it is within the first 31 days of the first month of the year. It then checks to see if a topic with the title yearly_review.topic_title has already been published by the system user. If all checks pass, the topic is published to the category set in the yearly review publish category setting. If this is not configured, the topic will be published to the Uncategorized category.

Extra Options

Yearly review categories

Categories used in this section are those set in the yearly review categories Site Setting. If this setting is not configured, the 5 best public categories from the forum will be chosen. “Best” is determined by the category topics_year count.

Sub-categories of any categories specified in the yearly review categories Site Setting will not be included in the yearly review report. If you want sub-categories to be included in the yearly review report, you will need to explicitly specify them in the yearly review categories Site Setting.

Yearly review exclude staff

The plugin has a yearly review exclude staff setting. It is enabled by default so that staff members are excluded from the users section and topics created by staff are excluded from the topics section.

Yearly review featured badge

A featured badge can be set via the yearly review featured badge setting. A maximum of 15 badge users are displayed. If more than 15 users have been granted this badge, a link to the badge’s page is displayed. If the yearly review featured badge is not configured, this section will not be displayed.

Running the Yearly Review manually

If you don’t want to wait for the background job, you can publish the topic from the rails console with:

Jobs::YearlyReview.new.execute(force: true)

If you want to generate a report for a specific year just add review_year: 'year', e.g.:

Jobs::YearlyReview.new.execute(force: true, review_year: '2021')

:discourse2: Hosted by us? If you would like to run the Yearly Review manually you can contact us at team@discourse.org and we’ll be happy to arrange that for you.

Settings

Name Description
yearly review enabled Enable the yearly review.
yearly review categories Public categories to pull topics from. The top 5 categories from this group will be selected. If left blank will default to the top 5 public categories.
yearly review exclude staff Exclude Staff from user stats.
yearly review include user stats Add user-identifying stats to the first post of the review topic.
yearly review include private categories Include user activity from private or read-restricted categories in the review.
yearly review publish category The category the review will be published in.
yearly review featured badge Enter the full badge name. Can be left blank.

:discourse2: Hosted by us? This plugin is available on all of our hosting tiers Yearly Review | Discourse - Civilized Discussion


Known Issues

  • The data is displayed in HTML tables. Tables are wrapped in div tags that have data-review-topic-users="true' and data-review-featured-topics="true" attributes. This allows the tables to be styled when they are displayed on Discourse. The styles are not copied when emails for the topics are created. Emails sent out for the topic don’t look great.

  • The first post in the generated topic is ≈ 40,000 characters due to using HTML. As a result, it cannot be edited unless you first increase the body character limit above this (see Body is limited to 32000 characters; you entered 43659)

  • emojis in titles are not rendered in the featured topic links

Last edited by @nathank 2025-01-06T21:23:15Z

Check documentPerform check on document:
90 лайков

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

  • Возможность исключать сотрудников из списка пользователей, но при этом включать созданные ими темы
  • Возможность исключать TL4 из списка пользователей (и, как и выше, включать созданные ими темы)
  • Возможность создавать несколько постов с отзывами, чтобы можно было иметь один для TL4 (мы используем это для сотрудников) и сотрудников, а затем — пост только для участников сообщества
5 лайков

Привет!
Я установил этот плагин в этом году, но, несмотря на то что он включён, я не знаю, когда будет опубликован отзыв, или нужно ли мне что-то ещё сделать для его публикации.

Не могли бы вы подсказать?
Большое спасибо!!

2 лайка

Приветствую, @Ayelen_Rives,

При просмотре административной консоли вы увидите следующее визуальное руководство:

Дальнейшее изучение плагина под названием ‘plugin:discourse-yearly-review’ показывает ещё один наглядный пример:

При настройке параметров обязательно укажите категорию публикации ежегодного обзора как для сотрудников, так и для любой другой ограниченной категории. Это обеспечит предварительную проверку перед предоставлением более широкой видимости.

6 лайков

Огромное спасибо, Аарон!

Неожиданно я не вижу этих сообщений в административной консоли, ни в настройках:

Категория публикации — Staff, поэтому я узнаю, создана ли она, 1 января.

Ещё раз спасибо и счастливых праздников!

2 лайка

С Новым годом! :partying_face:

Плагин не сработал здесь в двух форумах. А теперь показывает сообщение для 1 января 2025 года. Странно.

Я запустил его вручную в консоли Rails на одном из форумов, и он вернулся на английском, а не на немецком, который является языком этого форума.

Здесь что-то не так или было не так.

2 лайка

Ещё не пришло и сюда в Meta. Я последовал совету и настроил публикацию сначала в #staff, что, думаю, является единственным отличием от прошлого года?

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

2 лайка

Я ничего не менял в конфигурации, даже не проверял форум сначала как сотрудник, а затем не перемещал его.

На моём втором форуме всё ещё ничего нет. А у меня уже 11:24.

Кажется, что что-то сломалось.

Нужен ли языковой флаг при ручном запуске? Я не хочу переводить всё во втором форуме тоже. :wink:

1 лайк

Мне хотелось бы подождать чуть дольше, чтобы проверить, не возникнет ли задержка в фоновой задаче, но я также не понимаю, почему ручное её запуск может дать иной результат, чем автоматическое выполнение фоновой задачи?

Возможно, нам потребуется помощь более опытного специалиста.

3 лайка

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

1 лайк

Сегодня утром Sidekiq сообщил мне, что ежегодный обзор будет запланирован через 50 минут, и на данный момент это будет около 11:00 по местному времени. Я не стал ждать, а сделал это вручную. Проблем не возникло, и язык тоже был правильным.

После этого мне пришлось понизить уровень моих модераторов и снова запустить Sidekiq, потому что они были очень недовольны — я исключил их из состава сотрудников. Я не мог оставить их сотрудниками, так как тогда я, как очень активный администратор, полностью доминировал бы в списках, поэтому выбрал самый быстрый путь.

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

2 лайка

Чёрт возьми… На другом форуме тема за 2023 год уже есть… 14:31 по местному времени. И на немецком. Так что всё ещё загадка…

1 лайк

В итоге я запустил наш из Sidekiq. :rocket:

2 лайка

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

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

Тем временем в этом цикле вы можете отредактировать пост после его публикации так, как считаете нужным.

Одно интересное поведение, которое я заметил: если вы удалите сгенерированную тему, на следующий день будет создана новая, при условии, что плагин включён. Таким образом, вы можете поэкспериментировать с настройками, сгенерировать несколько версий темы годового обзора, скопировать текст из них, а затем самостоятельно опубликовать новые темы, как вам удобно. Если у вас есть доступ к /sidekiq, вы можете найти там задачу и запустить её немедленно.

2 лайка

Именно поэтому совет сначала опубликовать отзыв в более приватной категории, например, «Сотрудники», а затем переместить её в публичную, на самом деле не такой уж и хороший :wink: Если только администратор не хочет сохранить две версии.

Впрочем, это не большая проблема.

1 лайк

Привет! К счастью, плагин сработал 1 января без каких-либо проблем! :raised_hands:

Теперь у меня есть несколько вопросов о том, как он работает, поскольку некоторые отчёты (например, «Самые популярные темы» и «Больше всего полученных лайков») показывают иные результаты, чем страница «Пользователи» за тот же период.

Например, в разделе Самые популярные темы на странице «Пользователи» первым указан пользователь «S»:

А в годовом обзоре первым указан пользователь «C», и пользователь «S» вообще не отображается в таблице:

(Извините, мне пришлось размыть изображения из-за коммерческой тайны, но, думаю, так будет понятнее. Также таблица сломана, её можно игнорировать :upside_down_face:)

Не знает ли кто-нибудь, почему это может происходить? Остальные отчёты показывают абсолютно одинаковую информацию, а вот «Самые популярные темы» и «Больше всего полученных лайков» указывают разных пользователей.

Огромное спасибо за вашу помощь! :100:

1 лайк

Ого, я не знал, что происходит именно так. Я только что протестировал это, и вы правы! Это баг. Не должно создаваться второй темы ежегодного обзора, если она уже существует.

Шаги для воспроизведения:

  1. После создания темы ежегодного обзора переместите её в другую категорию.
  2. Запустите создание темы ежегодного обзора через /sidekiq.
  3. Будет создана вторая тема ежегодного обзора.

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

1 лайк

:thinking: насколько это устойчиво? Если я буду постоянно удалять её, будем ли мы всё ещё танцевать этот танец в июне? :joy:

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

1 лайк

Действительно. Это работает через Sidekiq каждый день.

1 лайк

Надеюсь, это прекратится в конце января.

2 лайка