Files
Striker 531b6039c6 Add Plane→Singularity workflow docs and script
- README: описание репозитория, список workflows
- workflows/plane-singularity/README.md: полная документация по интеграции
  (схема, payload структура, маппинг 28 проектов, Singularity API)
- workflows/plane-singularity/update_workflow.py: скрипт обновления через n8n API

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-23 04:05:11 +03:00

4.6 KiB
Raw Permalink Blame History

Plane → Singularity: назначение задачи

Workflow ID: zyO77cIUNdbc4xPH
n8n URL: https://n8n.striker.su
Создан: 2026-03-23

Назначение

Автоматически синхронизирует задачи из Plane в Singularity:

  • Назначена на меня → создаёт задачу в Singularity
  • Задача завершена → находит задачу в Singularity и закрывает её

Схема

Webhook (POST /webhook/plane-assignment)
    |
Switch "Тип события"
    |-- [assignee_ids содержит gen.director@hhivp.com]
    |       |
    |   Code "Подготовить данные"  (маппинг проекта, приоритета, дедлайна)
    |       |
    |   HTTP POST /v2/task         (создать задачу в Singularity)
    |
    +-- [state_id -> state.group == completed]
            |
        HTTP GET /v2/task?search=PROJ-42   (найти задачу)
            |
        HTTP PATCH /v2/task/{id}           (закрыть {"complete": 1})

Plane Webhook

Зарегистрирован через PostgreSQL (API endpoint /api/v1/workspaces/.../webhooks/ недоступен):

-- На сервере Plane (rd.hhivp.com), БД: plane
INSERT INTO webhooks (id, url, is_active, workspace, issue, created_at, updated_at)
VALUES (
  '1d053279-658a-4987-8ee0-303f2c7b952e',
  'https://n8n.striker.su/webhook/plane-assignment',
  true,
  'c9e0fe9f-02dd-4bd4-9026-d8783e10c4b2',
  true,
  NOW(), NOW()
);

Реальная структура payload от Plane

{
  "event": "issue",
  "action": "updated",
  "data": {
    "project": "<project-uuid>",
    "project_identifier": "TCKT",
    "sequence_id": 42,
    "name": "Название задачи",
    "priority": "high",
    "target_date": "2026-04-01",
    "description_stripped": "...",
    "state": { "group": "completed" }
  },
  "activity": {
    "field": "assignee_ids",
    "new_value": ["f7a5e9db-eaf0-4314-9440-4b28094f5db1"],
    "old_value": null
  }
}

ВАЖНО: Plane шлёт field="assignee_ids" (не "assignees") и field="state_id" (не "state"). new_value для assignee -- массив строк UUID, не строка.

Пользователь

Параметр Значение
Email gen.director@hhivp.com
UUID f7a5e9db-eaf0-4314-9440-4b28094f5db1

Маппинг проектов Plane -> Singularity

Plane UUID (сокращ.) Идентификатор Singularity Project
0a821ae1 DRC P-b40d30ed (ДРЦ Нагорное)
87598e10 NAVISCOPE P-00ddf477
1099af67 NAB P-30340426 (Прочее)
2d35134d MANYH P-5a0bd9ad (ИП Маняхин)
1f4bcaee TCKT P-638ec16a (HHIVP Инфра)
74d5b2f9 CIFRA P-63c01156 (ЦифраЦифра)
26cd4aab VEHA P-39d04293 (Веха)
66748cf3 SINVS P-b1a9d408 (Олимпийский 42а)
309e735f SHAUS P-8624fef6 (СтифтерХаус)
404b4c7a YAR P-ea61bc07 (Ярослав В.)
89133e7f SBOR P-e4c50922 (Старый Большевик)
dd3495bf SMED P-cec926a1 (Северное Медведково)
94e0ddd0 SAMOI P-e73fe9a8 (А. Самойлов)
a3906157 HG P-32c6abd8 (Сад Здоровья)
ec70a115 ROMA P-281f799e (Ромашка)
04427cbb NIIH P-30340426 (Прочее)
191c0a5b LIANZ P-7377d35f (Лианозово)
5db759d0 MOIS P-db73597a (ИП Моисеев)
60c0bd07 VONDI P-04b65df5 (Вондига)
c4cdd5fb 4101 P-30340426 (Прочее)
c6b2531b BCOM P-30340426 (Прочее)
91a97d40 DELTA P-62de7005 (Дельта)
eaef875f WEB P-638ec16a (HHIVP Инфра)
51846118 REGRU P-a3f177b1 (Домены)
910aa865 HARZL P-05ca29bb (ХарцЛабс)
dfd2a49f 3DRU P-181d5832 (3Д.РУ)
46f45846 IVA P-d7a92af2 (Ива)
4df07960 HHVIP P-638ec16a (HHIVP Инфра)

Неизвестный проект -> P-91f69023 (fallback)

Singularity API

  • Base URL: https://api.singularity-app.com/v2
  • Auth: Bearer 11a4eac1-3dd9-4448-99f6-0b3c58315a5d
  • Create task: POST /task
  • Search task: GET /task?search=PROJ-42
  • Close task: PATCH /task/{id} body: {"complete": 1}

Обновление workflow

Скрипт для обновления через n8n API: update_workflow.py

python update_workflow.py

n8n API: PUT https://n8n.striker.su/api/v1/workflows/zyO77cIUNdbc4xPH