Главное Авторские колонки Вакансии Образование
Выбор редакции:
1 799 0 В избр. Сохранено
Авторизуйтесь
Вход с паролем

История создания плагина в Redmine, решающего проблемы с оценкой

При управлении проектами на поддержке в Redmine, мы постоянно сталкивались с тем, что в процессе выполнения задачи и поступления дополнительных пожеланий от заказчика возникает необходимость в дооценке. А дальше начинают возникать вопросы, почему задача, оцененная в 2 часа по факту, заняла 10 часов, ведь это становится видно только в конце месяца. Недавно мы разработали плагин, который поможет решить эту проблему. Историю создания, описание возможностей, ссылку на скачивание и инструкцию по установке Redmine Estimates Plugin вы найдете ниже.
Мнение автора может не совпадать с мнением редакции

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

С чего всё начиналось: как возникла идея написать систему согласования оценки для Redmine

Идея плагина возникла когда на задачах технической поддержки мы постоянно сталкивались с тем что оценку должны давать несколько специалистов, например: дизайнер, front-end разработчик и back-end разработчик, и в процессе выполнения задачи и поступления дополнительных пожеланий от заказчика возникает необходимость в дооценке. А дальше при согласовании месячного отчета начинают возникать вопросы, почему задача, оцененная в 2 часа по факту заняла 10 часов, ведь это становится видно только в конце месяца.

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

Первая же идея, которая пришла в голову — ограничить одну задачу техподдержки одним видом деятельности, каждое новое пожелание вести отдельной задачей и всё это связывать через подзадачи. Но, такая реализация в Redmine крайне неудобная, порождает сложности и необходимость контролировать что у тебя происходит в 10 задачах вместо одной.

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

В итоге всё свелось к тому что до разработки Redmine Estimates мы просто вели всё в комментариях, примерно так, и это было крайне неудобно:

b_57f270f82c60a.jpg

Как ставили задачу по разработке Redmine плагина для согласования оценки

Задачу ставили так:

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

b_57f270f881787.jpg

  • Когда мы обновляем задачу или нажимаем добавить оценку" - открывается форма редактирования задачи, в ней добавляется графа согласования оценки
  • Оценки хранятся в базе, в отдельной таблице аналогично time_entries (встроенная сущность "Затраченное время" в Redmine)
  • При любом обновлении оценок поле "оценка" задачи обновляется как сумма всех оценок, привязанных к этой задаче. Как обновлять - при сохранении, при открытии или как-то еще - вопрос к размышлению
  • Кнопка "Согласовать" в таблице оценок доступна только определенным ролям (менеджер, клиент). Идеальная реализация - сделать в rm отдельное право доступа, чтобы можно было его выставлять в управлении ролями
  • Когда происходит согласование оценки, должно быть видно кто и когда её согласовал
  • Подтвержденные записи удалять и редактировать не может никто (кроме администратора)! После подтверждения даем 1 минуту в течении которой можно опять нажать на кнопку и подтверждение пропадёт, а после 1 минуты или если перезагрузил страницу - всё, отменить подтверждение нельзя
  • Если есть несогласованная оценка - возле поля оценка появляется иконка warning и надпись "есть несогласованная оценка". Это поле должно быть доступно для фильтра в списке задач
  • Редактировать и удалять записи согласования оценки (неподтвержденные) могут:
    • тот, кто её сделал
    • администраторы
    • сделать в Redmine отдельное право доступа, чтобы можно было его выставлять в управлении ролями.

Реализация или что Redmine Estimates умеет сейчас

Задача почти год лежала на полке, ожидая своего часа, но наконец, в июле 2016 года, мы поручили разработку нашему тогда R&D Developer'у Николаю Михно.

b_57f270f8b8f0d.jpg

Не буду долго описывать как это реализовывалось, опыта в разработке под Redmine у нас было мало, у Николая опыта в Ruby не было вообще, и мы, похоже, собрали все шишки, какие было можно собрать на этом пути. Но мы это сделали! Плагин назвали Redmine Estimates.

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

b_57f270f901cdd.jpg

Подтвержденные оценки по умолчанию скрываются, но можно посмотреть все оценки если нажать "Показать подтвержденные оценки"

b_57f270f9513b8.jpg

Право на подтверждение оценки, редактирование записей оценки выставляется отдельным полем в разделе "Администрирование".

b_57f270f98e546.jpg

Если у пользователя не установлено право на редактирование оценки, у него есть 1 минута для того чтобы изменить оценку, если он ошибся. Если в течении этого времени он не отредактирует оценку - больше возможности отредактировать оценку у него не будет.

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

b_57f270f9c50a6.jpg

Планы на ближайшее будущее

В ближайшем будущем планируем доделать то, что не готово в текущем релизе:

  • Уведомления о подтверждении оценки и соответствующая запись в Journal
  • Запрет на редактирование подтвержденных оценок
  • Признак "Есть неподтвержденные оценки" и соответствующая иконка warning
  • Вычистить код от упоминаний time_entries на базе которых мы делали плагин

Где скачать плагин и как установить?

Ссылку на репозиторий GitHub и инструкцию по установке вы найдете в нашем блоге: http://evergreens.com.ua/ru/articles/redmine-estim...

0
В избр. Сохранено
Авторизуйтесь
Вход с паролем
Комментарии
Выбрать файл
Блог проекта
Расскажите историю о создании или развитии проекта, поиске команды, проблемах и решениях
Написать
Личный блог
Продвигайте свои услуги или личный бренд через интересные кейсы и статьи
Написать

Spark использует cookie-файлы. С их помощью мы улучшаем работу нашего сайта и ваше взаимодействие с ним.