Один продукт, а не общий движок задач

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

Направление вызова одно

Другой продукт вызывает API A3.Projects. Обратного опроса нет: продукт-источник знает, когда его сущность изменилась, а A3.Projects был бы вынужден опрашивать всех по расписанию.

Сущность живёт в родном продукте

Юрист создаёт поручение по делу в A3.Lawyer, как и раньше. Ни одна функция не переносится сюда.

Проверяется подписка

Перед вызовом продукт-источник спрашивает у A3.ID, активна ли подписка на A3.Projects у организации.

Создаётся внешнее назначение

Заголовок, исполнитель, срок, тип сущности и ссылка обратно. Ключ идемпотентности не даёт повторному вызову создать дубль.

Работа попадает в общий список

Поручение видно рядом с обычными задачами. На него списывается время, его видно в срезе просроченного.

Интеграционный вызов всегда выполняется вне основной транзакции продукта-источника. Поручение юриста сохранится, даже если A3.Projects в этот момент недоступен.

Кто владеет полями

Разделение владения делает одностороннюю интеграцию честной. Пользователь видит, что срок пришёл извне и меняется не здесь.

Принадлежит продукту-источнику

  • Заголовок
  • Срок
  • Исполнитель
  • Состояние сущности

Принадлежит A3.Projects

  • Комментарии
  • Теги
  • Списания времени
  • Принадлежность проекту

Что передают продукты экосистемы

ПродуктСодержание связи
A3.IDВход, организации, права и подписка. Единственная обязательная зависимость
A3.HRСебестоимостные ставки сотрудников: в продукте они только читаются
A3.LawyerПоручения по делам приходят внешними назначениями, акт хранит ссылку на акт по договору
A3.AccountingУчётные поручения приходят внешними назначениями, расходы проекта пока вносятся по статьям бюджета
A3.SalesАкт по оплачиваемым часам хранит ссылку на счёт, сделки приходят внешними назначениями
A3.MeetЗвонок по задаче, запись и расшифровка вложением, поручения из протокола встречи
A3.DriveФайлы задач и комментариев. Обязательная зависимость для вложений
A3.TrustЗапросы на проверку контрагента приходят как внешние назначения

Связи, которым нужна доработка соседних продуктов, перечислены на странице развития. Без них расчёт работает на ручных ставках и расходах, а интерфейс сообщает, что канал не настроен.

Виджет списания времени

Юрист, работавший над делом в своём продукте, не пойдёт в другой продукт, чтобы списать час. На практике это означает, что час не попадёт в себестоимость проекта вовсе.

  • Виджет встраивается в карточку дела, проверки или заявки на стороне продукта-источника
  • Показывает только трудозатраты: ни ставок, ни экономики в нём нет
  • Без активной подписки на A3.Projects виджет не отображается
  • Задача создаётся при первом списании: требование «сначала заведите задачу» убило бы сценарий
  • Канал сообщений односторонний. Виджет сообщает хосту высоту и факт списания, обратных команд не принимает

Нужна своя интеграция?

Публичный API документирован и версионируется по пути. Если ваш продукт умеет вызывать REST, он умеет создавать внешние назначения.