Привет, Хабр!
Зовут меня Егор, и в этой статье я хочу рассказать, как мы с ребятами из компании АИСА запилили свой аналог Jira – с блэкджеком и быстрым API на Go.
Рождение идеи
Чуть больше года назад мы поняли, что планирование и отслеживание работы над проектами с помощью Jira всё ощутимее бьёт по карману. Atlassian тогда еще не ушла из России, но всё равно хотелось адекватной замены для внутреннего использования.
Беглый анализ рынка показал, что аналоги или облачные, или заоблачно дорогие. Отдельные варианты совмещали первое со вторым.
Мы поставили себе несколько задач:
концепт интерфейса должен быть максимально простым, чтобы всё было под рукой;
писать систему нужно на go, с упором на скорость и современность;
легковесность – уж если делать свое, то делать легче и шустрее, чем Jira;
скриптование триггеров и логики в настройках;
удобный поиск;
программа должна «дружить» с Telegram, не заходя в систему.
Ну и, разумеется, импорт из Jira.
Как это работает
Некоторое (кто считал?) число рабочих ночей спустя мы запустили бесплатный сервис plan.aisa.ru. Наше решение для управления проектами.
В плане интерфейса мы пошли от общего к частному. Первый шаг – создание пространства, области, созданной для эффективного управления деятельностью в процессе реализации идеи или создания продукта.
Пространство состоит из проектов, создание которых обусловлено необходимостью работы в определённых направлениях. С помощью различных проектов пользователь может дирижировать отдельными направлениями в конкретном пространстве, поставленными в них задачами и выполняющими их пользователями.
Идем дальше от общего к частному! В каждом проекте можно создавать отдельные задания разного уровня сложности и объёма, которые необходимо выполнить для реализации проекта.
В карточке каждой задачи можно прописать основную инфу:
ID – идентификатор проекта и номер задачи;
название;
описание;
автор
статус – текущая стадия выполнения;
исполнители – пользователи, которые выполняют задачу;
наблюдатели – пользователи, которые контролируют процесс;
приоритет – срочность выполнения;
родитель – главная задача по отношению к текущей;
блокирует – задача, мешающая выполнению текущей;
заблокирована – задача, которую блокирует текущая;
дата создания;
дата выполнения – срок выполнения задачи;
теги – цветные метки для удобства фильтрации задач;
ссылки – ссылки, прикреплённые к задаче;
вложения – добавленные к задаче файлы;
подзадачи – задачи, к которым текущая выбрана родителем;
связи - двухсторонние связи с другими задачами(по типу linked в jira).
Каждая задача также содержит блок «Активность», расположенный под описанием. В блоке есть три категории: комментарии (для коммуникации участников проекта), активность (история изменений задачи) и статусы (история изменений статусов задачи, а также время нахождения в каждом статусе).
Все текущие задачи можно держать перед глазами. При выбранном отображении «доска» в выпадающем списке в правом верхнем углу задачи отображаются по столбцам. Если не по душе канбан-доски – можно просто выставить их списком, отображать данные по каждой задаче в отдельной колонке, группировать их по тэгам или приоритетности, показывать пустые группы (где нет задач) или скрыть их с глаз долой, фильтровать по текущим статусам.
В пространства и проекты можно добавлять участников с разным статусом – от гостя (смотреть может, трогать нет) до администратора, которому доступны все действия с настройками пространств и проектов. Система поддерживает назначение исполнителей и наблюдателей по умолчанию: выбранный пользователь будет автоматически добавлен в новую задачу, если задана такая настройка.
Чтобы упростить работу по администрированию проектов, мы прописали поддержку переноса задач между проектами. Упор на легко и быстро, помните?
Также в системе АИПлан есть возможность упоминания пользователей в комментариях к задаче. Пользователь получит уведомление при отметке в задаче, даже если не является ни её автором, ни исполнителем, ни наблюдателем.
Уведомления о любых действиях с задачей можно получать на e-mail либо с помощью Telegram-бота, кому как удобнее. @aiplan_demo_bot помогает взаимодействовать с командой, создавать и управлять задачами прямо из Telegram.
Ну и то, с чего всё начиналось - импорт проектов из Jira. Можно перенести свой проект сразу при создании нового в АИПлан. Вводим свои логин и пароль, указываем пространство в системе, куда будет импортирован проект, выбираем блокирующую связь и указываем соответствие приоритетов.
Кроме ролей, в АИПлан в настройках проекта в разделе «Сценарии» можно дополнительно настроить доступ пользователей к функциям в процессе редактирования задачи. Скрипты пишутся на Lua.
Доступны события:
изменение статуса;
изменение исполнителя;
изменения наблюдателя;
изменение тегов.
Ниже пример скрипта, запрещающего конкретному участнику проекта переводить задачи в статус «Выполнена».
function BeforeStatusChange(params, newstatus)
if newstatus.name == "Выполнена" and params.user.email == "iuliia.trusova@aisa.ru" then
return { status = false, error = "У вас нет прав переводить в этот статус." }
end
return { status = true }
end
Чувствую, мой эпос несколько затянулся. Остается добавить, что мы в АИСА планируем вывести наше творение в opensource и выложить его на Github. Если будет интересно – могу рассказать про API и как мы его используем с ИИ, или о том, как после блокировки Дискорда в России мы прикрутили в АИПлан jitsi.
Комментарии (11)
m1skam
05.12.2024 08:49Чуть больше года назад мы поняли, что планирование и отслеживание работы над проектами с помощью Jira всё ощутимее бьёт по карману.
А вы считали во сколько вам вышла разработка своего решения?
ИМХО в статье очень не хватает описания какого уровня сложности проекты были у вас в Jira. Jira это же не только про заведение проектов, задач, исполнителей, сроков выполнения и отслеживание статусов задач. Это большой мощный комбайн даже в базовой поставке, который позволяет создавать кастомные поля, настраивать бизнес-процессы, создавать кастомные экраны с кастомными полями и тд и тп. А если все это еще и плагинами обмазать, то вопрос миграции превращается в муки выбора, если вообще коммерчески выгоден.
Я может по диагонали читал но не увидел, как у вас решается вопрос с кастомными бизнес-процессами
zpss
05.12.2024 08:49Пилили фоном с коммерческими проектами. Затраты по сути сопоставимы со стоимостью онпремис лицензии. Действительно, вопрос с плагинами жиры еще подвешен. Нам нужен был базовый инструмент.
Как раз в планах рассказать как развиваем и что уже есть из нового.
arcenic
05.12.2024 08:49заодно, а Индия-то причём? ни индуских кодеров, не фоток коров, так для красного словца? Плюс Индия - это не Австралия, где джиру клепают.
EgorShevtsov Автор
05.12.2024 08:49Клепают то возможно в Австралии(не факт что не те же индусы), а вот на форуме, поддержке и описании API сидят как раз любители острой еды и обладатели прекрасного английского. Любой администратор жиры с "радостью" расскажет про поиски маломальски важной инфы и ответов на вопросы))
Вообще печаль про импорт из Jira - тема для отдельной статьи
webnetkz
05.12.2024 08:49Егор ждём open source, для детального изучения и внедрения на рынок СНГ. И статью по использованию с AI ждём. Спасибо за то что Вы есть!
Yohohori-san
и при чём тут го? показать картинки можно было и без отсылки к ЯПу.
ни слова ни про проблемы в процессе создания, ни про замену стандартных библиотек для расширения функционала, ни про сложности экспорта из "джиры", ни про ноу-хау.
вы собрали свой велосипед и только проверка временем покажет как дорого он вам обойдётся при поддержке\расширении и как скоро у вас появится отдельная команда для этого.
YourgenAP
Очередная статья с целью рекламы своего продукта без какого-либо реального технического наполнения. Полезность таких материалов на хабре стремится к нулю. Пора привыкнуть уже к этому.
sshikov
Jira расширяется. Плагинами. Пишутся они на Java. Go тут при том, что написанные плагины можно будет выкинуть на помойку.
Абсолютно бессмысленная статья...