Покажите нам свои рабочие процессы

Продолжаем обсуждение из Предварительный обзор новой функции Workflows:

Я в восторге от запуска Workflows. Я мечтал об этой функции, когда был активным менеджером сообщества и искал способы автоматизировать рутинные тактические процессы.

Мне очень любопытно, для каких задач вы используете Workflows (или будете использовать, теперь когда о них узнали!).

Начну я, но признаюсь, что мне пришлось делегировать фактическое создание этого механизма @zogstrip и @chapoi, так как у меня нет нужных навыков.

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

Этот workflow ищет тему с обновлениями и постепенно ухудшает CSS, который отображается у пользователя, чем дольше он не вносит изменения.

Невероятно, насколько это эффективно!

11 лайков

Мне очень нравится этот CSS :laughing:! Можете им поделиться, если это возможно?

2 лайка

Пожалуйста, не говорите, что вы… хотите самый уродливый шаблон, который я когда-либо делал? :sweat_smile:

3 лайка

Я правда :laughing: . Выглядит очень… креативно :eyes: .

2 лайка

Это действительно невероятно. Я знаю, потому что, пытаясь протестировать что-то не связанное с этим, я случайно попал в Группу 4 и вынужден был отлаживать проблему, пока всё на экране продолжало улетать. :laughing: @zogstrip был очень терпелив.

2 лайка

из обзора рабочего процесса это не совсем очевидно, поэтому вот как это работает

часть 1 — жёлтая рамка

  • для каждого поста, созданного или отредактированного в категории #updates, мы проверяем, исходит ли он от автора темы
  • если пост не от автора темы (op), мы «выходим» (bail out)
  • если пост от автора темы, мы прогоняем его через LLM-классификатор, который возвращает JSON, указывающий, является ли пост фактическим еженедельным обновлением (мы не требуем конкретного формата), а не случайным ответом на другой пост
  • затем мы сохраняем результат этой классификации в таблицу данных
  • если пост классифицирован как еженедельное обновление, мы немедленно удаляем пользователя из всех групп «просрочено» (зелёная рамка)

часть 2 — синяя рамка

  • каждый день в 6:00 UTC мы запускаем запрос Data Explorer, который объединяет все отпуска, праздники и «последнее еженедельное обновление», чтобы распределить людей по одной из четырёх групп «просрочено»

часть 3 — не показано на рабочем процессе

  • у нас есть компонент пользовательской темы[1], который проверяет, находится ли текущий пользователь в одной из групп «просрочено», и применяет ещё больше… раздражения :sweat_smile:

  1. применяется ко всем нашим темам ↩︎

5 лайков

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

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

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

2 лайка

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

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

Фаза A: Поиск и суммаризация

Находите посты, которым более 30 дней, и которые соответствуют одному из следующих критериев (или их комбинации):

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

Когда такая тема находится, запускается агент «AI Summary» в Discourse. ИИ-агент пишет краткое содержание. Он делает это, отправляя HTTP-запрос POST на конечную точку API для суммаризации. После того как краткое содержание готово, наличие этого рабочего процесса сохраняется в таблице данных.

(Это выполняется один раз в час, но потенциально может запускаться чаще).

Фаза B: Оценка краткого содержания для последующих действий

Другой запланированный рабочий процесс работает независимо по собственному расписанию. Он проверяет таблицу данных на наличие строк, для которых создано краткое содержание, но которые ещё не были оценены. Он выбирает одну тему из таблицы данных и затем получает 5–10 последних постов по этой теме.

Далее данные передаются в ИИ-агента, который занимается сортировкой (триаж). Он принимает решение. Стоит ли оживить эту тему? Если да, то как? Он решает, нужно ли просто поднять тему (бамп), или стоит сделать пост, который повторно вовлечёт пользователей в обсуждение темы: задать вопрос, задать уточняющий вопрос или вообще ничего не делать.

Он обновляет таблицу данных с принятым решением.

(Эта фаза должна выполняться примерно с той же частотой, что и Фаза A. Её также можно запускать из Фазы A или объединить с ней).

Фаза C: Повторное вовлечение в тему

Ещё один запланированный рабочий процесс работает по собственному расписанию, но не так часто. Его первый шаг — проверить, насколько активен форум был в последнее время. Он делает это, проверяя, сколько в среднем постов было создано в час за последние 3 часа. Затем он вычисляет среднюю загруженность форума за 3-часовые периоды в то же время суток за последние 2 месяца. Если сайт не так загружен, как обычно в это же время в этот же день, он выносит вердикт: «мы можем выполнить повторное вовлечение сейчас».

Затем он получает до 10 доступных возможностей для повторного вовлечения. Он отправляет их в ИИ-агента и просит выбрать из списка самого сильного кандидата для повторного вовлечения. ИИ принимает решение и возвращает topic_id. Классификатор в Фазе B выбрал один из трёх вариантов: поднять тему, сделать последующий пост, ничего не делать.

Рабочий процесс выполнит бамп, если только не назначен последующий пост. Если выбран последующий пост, он возьмет topic_id и получит последние посты из этой темы. Затем он передаст их ИИ-агенту, который определит, каким будет лучший ответ для повторного вовлечения в тему. У него есть ограничения (guardrails), чтобы обеспечить очень базовый ответ, который остаётся в рамках темы и не даёт рекомендаций или комментариев. В основном он просто просит о новостях, спрашивает, есть ли у первоначального автора обновления по поводу того, что произошло, и т. д. Он публикует ответ, а затем обновляет таблицу данных с датой завершения.

Надеюсь, я не просто дублирую какую-то скрытую функцию Discourse, о которой я не знал! Пришлось пощупать методом проб и ошибок, но у меня получилось.

6 лайков

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

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

(Возможно, вам придётся вручную отредактировать файлы перед импортом. Я вручную заменил значения на TOPIC_ID после экспорта, чтобы избежать случайных ошибок)

Еженедельный отчёт о модерации
файл: weekly-moderation-report.json (21.4 KB)

  • Включает таблицы со списком:
    • сводка по модерации (количество различных действий модераторов)
    • количество обработанных флагов разными пользователями
    • количество отправленных флагов разными пользователями
    • список помеченных сообщений с соответствующими метаданными
    • выданные предупреждения
    • добавленные заметки о пользователях

Еженедельный отчёт об изменениях настроек сайта
файл: weekly-site-settings-report.json (3.3 KB)

  • Включает таблицу со списком изменённых настроек сайта:
    • название настройки
    • кто и когда её изменил
    • старое значение, новое значение

Еженедельный отчёт об уровнях доверия
файл: weekly-trust-level-report.json (9.8 KB)

  • Включает таблицы со списком:
    • сводка (количество пользователей, предложенных к каждому уровню доверия за последнюю неделю)
    • список пользователей, получивших уровень доверия 2 или 3
8 лайков

В настоящее время мы достаточно активно используем Workflows в нашем сообществе Discourse, и они становятся по-настоящему полезной частью процесса адаптации новых участников и управления мероприятиями.

В нашем сообществе более 9 000 зарегистрированных пользователей и множество различных онлайн- и офлайн-групп взаимопомощи, поэтому автоматизация очень нам помогает.

Вот некоторые из рабочих процессов, которые мы используем в настоящее время:

:waving_hand: Персонализированная адаптация

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

Содержание зависит от интересов, которые они выбрали при регистрации (например, группы взаимопомощи, мероприятия, наш виртуальный кафе, body doubling или письменное общение).

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

:date: Напоминания о мероприятиях

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

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

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

:laptop: Контекстно-зависимые инструкции для alfaview

Многие наши онлайн-группы взаимопомощи встречаются через alfaview, в то время как другие мероприятия проходят через Zoom или в офлайн-формате.

Поэтому мы проверяем пост мероприятия на наличие ссылки alfaview.

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

Если ссылки alfaview нет, отправляется обычное напоминание без этих инструкций.

Это означает, что нам не нужно вести списки «онлайн» и «офлайн» групп.

:door: Адаптация для видеоконференций

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

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

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

:bell: Уведомления для конкретных групп

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

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


Что мне особенно нравится в Workflows, так это то, что мы можем комбинировать формы, SQL-запросы, группы, запланированные проверки и личные сообщения.

Есть еще несколько вещей, которые я хотел бы видеть в будущем. Один пример — более глубокая интеграция с календарем: в идеале, когда кто-то выбирает Участвую для мероприятия, нам хотелось бы автоматически отправлять им электронное письмо с прикрепленным файлом календаря .ics.

7 лайков

Очень интересный сценарий использования, определённо стоит об этом подумать @j.jaffeux / @martin / @lindsey

Неужели это можно реализовать через workflows, или же это встроенная функция в discourse events?

4 лайка

Спасибо за отличный фидбэк и обмен опытом! Очень интересно читать, как вы используете рабочие процессы и как они решают реальные проблемы ваших сообществ :heart:

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

6 лайков