История создания плагина в Redmine, решающего проблемы с оценкой
Redmine Estimates – это плагин к трекеру Redmine который упрощает жизнь и экономит время менеджеров проектов и менеджеров управляющих технической поддержкой.
С чего всё начиналось: как возникла идея написать систему согласования оценки для Redmine
Идея плагина возникла когда на задачах технической поддержки мы постоянно сталкивались с тем что оценку должны давать несколько специалистов, например: дизайнер, front-end разработчик и back-end разработчик, и в процессе выполнения задачи и поступления дополнительных пожеланий от заказчика возникает необходимость в дооценке. А дальше при согласовании месячного отчета начинают возникать вопросы, почему задача, оцененная в 2 часа по факту заняла 10 часов, ведь это становится видно только в конце месяца.
Как удобно согласовывать оценки в задачах и дооценивать их по ходу выполнения чтобы это было просто и понятно и команде, и клиенту?
Первая же идея, которая пришла в голову — ограничить одну задачу техподдержки одним видом деятельности, каждое новое пожелание вести отдельной задачей и всё это связывать через подзадачи. Но, такая реализация в Redmine крайне неудобная, порождает сложности и необходимость контролировать что у тебя происходит в 10 задачах вместо одной.
Мы видели, что модули, которые позволяют красиво решить задачу оценки по видам работ и дооценки по ходу выполнения, есть в других задачниках и системах управления проектами, но ничего подобного для Redmine найти не смогли.
В итоге всё свелось к тому что до разработки Redmine Estimates мы просто вели всё в комментариях, примерно так, и это было крайне неудобно:
Как ставили задачу по разработке Redmine плагина для согласования оценки
Задачу ставили так:
- Оценка теперь, как и затраченное время, дробится на разные виды деятельности. Общее поле "оценка" считается как сумма оценок по всем видам деятельности
- На странице редактирования оценки список несогласованных позиций оценки - вот так
- Когда мы обновляем задачу или нажимаем добавить оценку" - открывается форма редактирования задачи, в ней добавляется графа согласования оценки
- Оценки хранятся в базе, в отдельной таблице аналогично time_entries (встроенная сущность "Затраченное время" в Redmine)
- При любом обновлении оценок поле "оценка" задачи обновляется как сумма всех оценок, привязанных к этой задаче. Как обновлять - при сохранении, при открытии или как-то еще - вопрос к размышлению
- Кнопка "Согласовать" в таблице оценок доступна только определенным ролям (менеджер, клиент). Идеальная реализация - сделать в rm отдельное право доступа, чтобы можно было его выставлять в управлении ролями
- Когда происходит согласование оценки, должно быть видно кто и когда её согласовал
- Подтвержденные записи удалять и редактировать не может никто (кроме администратора)! После подтверждения даем 1 минуту в течении которой можно опять нажать на кнопку и подтверждение пропадёт, а после 1 минуты или если перезагрузил страницу - всё, отменить подтверждение нельзя
- Если есть несогласованная оценка - возле поля оценка появляется иконка warning и надпись "есть несогласованная оценка". Это поле должно быть доступно для фильтра в списке задач
- Редактировать и удалять записи согласования оценки (неподтвержденные) могут:
- тот, кто её сделал
- администраторы
- сделать в Redmine отдельное право доступа, чтобы можно было его выставлять в управлении ролями.
Реализация или что Redmine Estimates умеет сейчас
Задача почти год лежала на полке, ожидая своего часа, но наконец, в июле 2016 года, мы поручили разработку нашему тогда R&D Developer'у Николаю Михно.
Не буду долго описывать как это реализовывалось, опыта в разработке под Redmine у нас было мало, у Николая опыта в Ruby не было вообще, и мы, похоже, собрали все шишки, какие было можно собрать на этом пути. Но мы это сделали! Плагин назвали Redmine Estimates.
Сейчас плагин умеет накапливать оценки по разным видам деятельности в рамках одной задачи. К каждой оценке можно задать деятельность, оценку в часах и прокомментировать:
Подтвержденные оценки по умолчанию скрываются, но можно посмотреть все оценки если нажать "Показать подтвержденные оценки"
Право на подтверждение оценки, редактирование записей оценки выставляется отдельным полем в разделе "Администрирование".
Если у пользователя не установлено право на редактирование оценки, у него есть 1 минута для того чтобы изменить оценку, если он ошибся. Если в течении этого времени он не отредактирует оценку - больше возможности отредактировать оценку у него не будет.
В общем списке задач можно вывести поля "Всего часов оценок" и "Всего подтверждено оценок", и использовать их как фильтры.
Планы на ближайшее будущее
В ближайшем будущем планируем доделать то, что не готово в текущем релизе:
- Уведомления о подтверждении оценки и соответствующая запись в Journal
- Запрет на редактирование подтвержденных оценок
- Признак "Есть неподтвержденные оценки" и соответствующая иконка warning
- Вычистить код от упоминаний time_entries на базе которых мы делали плагин
Где скачать плагин и как установить?
Ссылку на репозиторий GitHub и инструкцию по установке вы найдете в нашем блоге: http://evergreens.com.ua/ru/articles/redmine-estim...