Плагин «Unread issues» — как мы уведомляем сотрудников в Redmine. Общая концепция

в 5:26, , рубрики: plugins, redmine, usability, Анализ и проектирование систем, интерфейсы, плагины, Программирование, системное администрирование, уведомления, метки:

Плагин «Unread issues» — как мы уведомляем сотрудников в Redmine. Общая концепция - 1

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

Любой task-трекер имеет средства уведомления об изменениях в задачах, и Redmine — не исключение.

Электронная почта

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

Плагин «Unread issues» — как мы уведомляем сотрудников в Redmine. Общая концепция - 2

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

Кстати, у уведомлений по электронной почте в Redmine есть еще один фатальный недостаток. Redmine не отдает страничку с задачей пока не отправит письмо на сервер и, если с почтовым сервером происходит что-то плохое, то страничка с задачей не отдается пользователю достаточно долго (до 15 секунд).

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

RSS

Почти на все списки задач, комментарии к задачам и т.д. можно завести RSS –feed и использовать его в RSS-ридерах мобильных телефонов, например. Достаточно удобный способ, которым даже IT-ки пользуются редко.

Плагин «Unread issues» — как мы уведомляем сотрудников в Redmine. Общая концепция - 3

Моя страничка

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

Плагин «Unread issues» — как мы уведомляем сотрудников в Redmine. Общая концепция - 4

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

Кружочки-индикаторы

Мы придумали и реализовали синие, светло-зеленые и темно-зеленые кружочки. Что они означают!?

  • Зеленый кружочек рядом с задачей означает то, что вы никогда не читали это задачу.
  • Синий кружочек означает то, что вы читали задачу, но с момента последнего прочтения в задаче что-то изменилось и, возможно, пользователю необходимо ознакомиться с изменениями.
  • Темно-зеленый кружочек с циферкой внутри означает то, что на вас назначено n-ое количество задач и в них ничего не менялось с момента последнего прочтения.
  • Аналогичное значение имеют светло-зеленные и синие кружочки со счетчиком внутри.

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

Мы оформили эту функциональность в виде отдельного плагина — «Unread issues», и с радостью делимся им с сообществом.
Помимо кружочков-индикаторов, которые добавляются во все списки задач, плагин также позволяет определить запрос задач, на основе которого будут считаться индикаторы-счетчики для моей страницы. Это очень удобно, если пользователей, например, не нужно уведомлять об изменениях в определенных трекерах.

Плагин «Unread issues» — как мы уведомляем сотрудников в Redmine. Общая концепция - 5

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

Кружочки-индикаторы так хорошо прижились, что мы сразу стали использовать их для других сущностей:

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

Поскольку счетчики отображались в главном меню и пересчитывались практически при каждом обновление страницы, а SQL — запросы по их вычислению бывали сложными, Redmine притормаживал.

Со временем появился плагин «Ajax counter», который позволяет вычислять и отображать счетчики асинхронно. Это позволяет пользователям получать страницу еще до вычисления всех счетчиков.

Плагин «Unread issues» — как мы уведомляем сотрудников в Redmine. Общая концепция - 6

Этот же плагин позволяет устанавливать интервал обновления счетчика, чтобы значение для него не пересчитывалось каждый раз при обновлении страницы. Так например, для регламентного действия «Ознакомиться с приказами» можно поставить интервал в 1 час, поскольку новые приказы выходят редко.

Плагин «Ajax counter» находится в свободном доступе тут: bitbucket.org/dkuk/ajax_counters. Думаю, что он может быть полезен программистам, которые разрабатывают под Redmine.

Блок «Что мне нужно сделать?»

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

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

Поэтому, появился замечательный блок на моей странице «Что мне нужно сделать?», в котором популярно расписано, что сотрудник должен сделать сегодня, в ближайшие семь дней, в текущем месяце, а за одно и то, что должны сделать его подчиненные.

Плагин «Unread issues» — как мы уведомляем сотрудников в Redmine. Общая концепция - 7

Блок «Что мне нужно сделать?» здорово уменьшает входной порог для работы в системе.

Действия для блока могут задаваться в сторонних плагинах. Например, плагин «KPI» задает свой список действий для блока: согласование аванса, закрытие ЗП и т.д.

Также, действия для блока могут задаваться на основе стандартных запросов задач Redmine. Вы можете выбрать какой-то запрос и определить в нем поле с датой, по которому будет считаться срок необходимого выполнения задачи. Этот подход дает большую гибкость, поскольку превращает любой запрос задач в регламентное действие. Например, легко создать регламентные действия вида: «Проверить задачи», «Дать обратную связь по задачам» и т.д.

Кружочки-индикаторы и блок «Что мне нужно делать?» перекрывают потребности сотрудников в информирование об изменениях.

Чуть раньше у нас были уведомления по протоколу XMPP в jabber-клиент, но потребность в них со временем отпала. К тому же, постоянно сыплющиеся сообщения вида «В задаче такой-то произошли изменения», очень быстро достают пользователя.

Надеюсь, статья будет полезна. Пробуйте наш плагин «Unread issues». Любая обратная связь приветствуется!

Автор: tdvsdv

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js