Process Hub в Utracker: canvas на @xyflow/react читает живые статусы, hooks и cadence и пишет в те же API, что вкладки настроек.
Process Hub в Utracker: canvas на @xyflow/react читает живые статусы, hooks и cadence и пишет в те же API, что вкладки настроек.
В проекте Utracker уже жил полный процесс, но по кускам: статусы и переходы, board hooks, ритм спринтов, исходящие webhook. Каждый контур сидел в своей вкладке. Графа не было. Чтобы объяснить, как едет задача, приходилось кликать по пяти местам или рисовать BPMN руками.
Нужна была одна визуальная карта живых сущностей: смотреть и править на том же экране. На демо заказчик показал похожий плагин в Jira. Нужен паритет: процесс целиком, без сборки по вкладкам.
Canvas на @xyflow/react читает живые статусы, hooks и cadence и пишет в те же API, что вкладки настроек. Слои: scheme, automation, cadence, webhooks. Своё только layout: позиции, viewport, какие слои открыты. Рёбра читаются из issue_states, transition rules, board_hooks, cadence и подписок. Новый engine process_hub_rules не заводили: второй SoT разъедется с бордом.
Рабочий стол: 3-pane (palette, canvas, inspector), снизу журнал запусков и simulate. На тулбаре чип «Проекция / не engine». Формы во вкладках оставили: если canvas тупит, процесс правится таблицами. BPMN 2.0 XML уходит как документ. Import в Camunda и запись в bpml_* нет. Admin BPML на project canvas не вытаскивали: другой license-контур со своими definition. Open workflow на карте показывается hint «any».
С canvas правятся статус, transition rule (соединили два статуса), hook, duplicate, disable, delete, guards on/off. Inspector: панель свойств на том же экране. Last-run на хуках, журнал запусков, activity strip. Auto-layout, фильтры, Ctrl+K, PNG.
ACL не размазывали: project admin с canvas не получает CRUD site webhook. URL и секрет на карте не светятся.
Dry-run simulate: переход, конкретная issue или path. Подсветка, какие hooks сработали бы. Side effects нет, guards те же, что у живого перехода. n8n как runtime не ставили: на экране появились бы wait и code node, которых продукт не исполняет.
Соседние разборы в том же контуре: RAG в Postgres заказчика и STT-worker в комнате LiveKit.