Есть проблема, мы вынуждены работать в разных трекерах задач, и нам приходится бегать туда-сюда, и переносить задачи вручную.
Зенит ставит задачи в своём redmine
, мы работаем в своем redmine
.
А еще у нас есть gogs
, где тоже есть задачи. И еще мы хотим работать в github
, где тоже есть задачи.
Синхронизировать задачи автоматически.
Можно определить, что задачи из такого-то проекта в одном трекере нужно синхронизировать с задачами из такого-то milestone проекта другого трекера.
И теперь все новые задачи и все изменения в задачах будут автоматически синхронизироваться.
Пользователь авторизуется в системе, и в своем личном кабинете прописывает API-ключи, открывающие авторизованный доступ к трекерам.
Затем пользователь создает планы синхронизации.
Пользователь выбирает один трекер, в нем выбирает проект и, если нужно, milestone. Потом пользователь выбирает второй трекер, в нем проект и, если нужно, milestone.
И всё. Дальше действует робот.
Синхронизировать нужно тикеты, описание, вложения, статусы и комментарии.
При добавлении тикета его исполнителем назначается тот пользователь, который создал этот план синхронизации. Если исполнитель был изменен, то эта информация синхронизируется, только если это возможно.
Например, Зенит назначает тикеты группе 101 Медиа, соответственно, какого бы исполнителя не назначили мы у себя, в Зенит эту информацию не передать (да и не нужно).
Во всех трекерах своя система именования статусов и типов. Сопоставить одно другому можно только вручную.
Поэтому, когда пользователь создает план синхронизации, он должен указать, как статусы соответствуют друг другу, а какие статусы вообще следует игнорировать (то есть не синхронизировать тикеты с такими статусами).
Когда другой пользователь создает очередной план синхронизации между трекерами, для которых уже составлена карта сопоставления статусов, он может её изменить.
Комментарии оставляют всякие люди, в том числе и те, кто не известен системе. Очевидно, что сервис не сможет синхронизировать такие комментарии.
Тут следует заметить, что синхронизации комментария происходит от лица пользователя, его оставившего. Если Вася Пупкин оставил комментарий в трекере А, то в трекере Б он должен появиться от имени Васи Пупкина. Если Вася Пупкин не предоставил API-ключа от трекера Б, то синхронизация комментария невозможна.
Синхронизировать ли milestone? Непонятно.
Можно предположить, что если пользователь настроил план синхронизации между проектами, то можно синхронизировать и их milestone.
А если план синхронизации настроен между milestone, то тогда синхронизация milestone, конечно, невозможна.
Трекеру пофиг, как был добавлен комментарий. Оставил ли его пользователь лично через веб-интерфейс или это сделал робот от его имени — разницы нет, не отличить.
Поэтому такой момент. Когда робот синхронизировал комментарий, он должен где-то запомнить, что он его синхронизировал, чтобы не синхронизировать его повторно, создав дубликат.
Не надо забывать, что пользователь может редактировать комментарий.