Привет, Хабр!

Зовут меня Егор, и в этой статье я хочу рассказать, как мы с ребятами из компании АИСА запилили свой аналог 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)


  1. Yohohori-san
    05.12.2024 08:49

    и при чём тут го? показать картинки можно было и без отсылки к ЯПу.

    ни слова ни про проблемы в процессе создания, ни про замену стандартных библиотек для расширения функционала, ни про сложности экспорта из "джиры", ни про ноу-хау.

    вы собрали свой велосипед и только проверка временем покажет как дорого он вам обойдётся при поддержке\расширении и как скоро у вас появится отдельная команда для этого.


    1. YourgenAP
      05.12.2024 08:49

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


    1. sshikov
      05.12.2024 08:49

       без отсылки к ЯПу.

      Jira расширяется. Плагинами. Пишутся они на Java. Go тут при том, что написанные плагины можно будет выкинуть на помойку.

      Абсолютно бессмысленная статья...


  1. m1skam
    05.12.2024 08:49

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

    А вы считали во сколько вам вышла разработка своего решения?

    ИМХО в статье очень не хватает описания какого уровня сложности проекты были у вас в Jira. Jira это же не только про заведение проектов, задач, исполнителей, сроков выполнения и отслеживание статусов задач. Это большой мощный комбайн даже в базовой поставке, который позволяет создавать кастомные поля, настраивать бизнес-процессы, создавать кастомные экраны с кастомными полями и тд и тп. А если все это еще и плагинами обмазать, то вопрос миграции превращается в муки выбора, если вообще коммерчески выгоден.

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


    1. zpss
      05.12.2024 08:49

      Пилили фоном с коммерческими проектами. Затраты по сути сопоставимы со стоимостью онпремис лицензии.  Действительно, вопрос с плагинами жиры еще подвешен. Нам нужен был базовый инструмент. 
      Как раз в планах рассказать как развиваем и что уже есть из нового.


  1. arcenic
    05.12.2024 08:49

    заодно, а Индия-то причём? ни индуских кодеров, не фоток коров, так для красного словца? Плюс Индия - это не Австралия, где джиру клепают.


    1. EgorShevtsov Автор
      05.12.2024 08:49

      Клепают то возможно в Австралии(не факт что не те же индусы), а вот на форуме, поддержке и описании API сидят как раз любители острой еды и обладатели прекрасного английского. Любой администратор жиры с "радостью" расскажет про поиски маломальски важной инфы и ответов на вопросы))

      Вообще печаль про импорт из Jira - тема для отдельной статьи


  1. webnetkz
    05.12.2024 08:49

    Егор ждём open source, для детального изучения и внедрения на рынок СНГ. И статью по использованию с AI ждём. Спасибо за то что Вы есть!


  1. krotos139
    05.12.2024 08:49

    Если это не open source оно в СНГ не нужно.


  1. zwalker
    05.12.2024 08:49

    А есть интеграция с AD/LDAP?


  1. SvoboniiLogin
    05.12.2024 08:49

    Реклама без особых технических деталей. Нда. Хабр катится...