Системи відстеження завдань

Перетворюйте сеанс на заявку під час перегляду: одна кнопка в плеєрі, опис вашими словами й уже додане посилання відтворення.

1. Чому тут усе вручну

Кожен інший міст MousePlayer спрацьовує сам. Цей — ні, і саме так задумано.

Заявка — це робота для людини. Якби ми відкривали її для кожного гнівного кліку, дошка заповнилася б завданнями, які ніхто не розібрав, і за тиждень команда почала б їх відфільтровувати — разом зі справжніми проблемами.

Тому тригер — ви. Ви дивитеся сеанс, помічаєте проблему, натискаєте кнопку й описуєте побачене. Посилання на запис уже в описі; рішення за вами.

Кнопка з’являється лише для власників і адміністраторів і ніколи — під час перегляду за спільним посиланням. Людина, якій ви надіслали запис, не повинна мати змоги створювати заявки у вашій системі.

2. П’ять систем і вимоги кожної

Куди потрапляєВи задаєте
Jiraпроблема в проєктіURL сайту, електронна адреса облікового запису, токен API, ключ проєкту, тип проблеми
Linearпроблема в командіключ API, ідентифікатор команди
Asanaзавдання в проєктіперсональний токен доступу, ідентифікатор проєкту
Trelloкартка в спискуключ, токен, ідентифікатор списку
GitHubпроблема в репозиторіїперсональний токен доступу, owner/repo

Одна плитка, один вибраний постачальник одночасно. Додати згодом іншу систему означає змінити вибір, а не виконати міграцію.

Звідки беруться ідентифікатори

Ідентифікатор команди Linear та ідентифікатор проєкту Asana видно в URL, коли ви відкриваєте команду чи проєкт у браузері. Ідентифікатор списку Trello знайти найважче з усіх п’яти: додайте .json до URL дошки й знайдіть потрібний список. Ключ проєкту Jira — це префікс перед кожним номером проблеми: ACME у ACME-1234.

3. Посилання в заявці створює наш сервер

Введений опис належить вам. Посилання відтворення — ні: воно збирається на нашому боці з того сеансу, який ви справді дивилися, і форма не може на нього вплинути.

Це важливо, адже в заявці інші люди натискають посилання. Якби воно надходило з браузера, спеціально сформований запит міг би підставити команді будь-яку адресу в тому, що виглядає як ваш власний інструмент.

HTTP 200 не означає, що заявка існує

Linear відповідає через GraphQL, а GraphQL під час відмови відповідає 200 OK із масивом errors. Міст, який перевіряв би лише код статусу, повідомив би про успіх для заявки, якої ніколи не було створено. Ми читаємо тіло відповіді.

Якщо система повертає ідентифікатор нової проблеми, ми додаємо його до підтвердження, щоб ви могли перевірити її наявність, а не покладатися на зелене повідомлення.

4. Чого тут свідомо немає

Без автоматичних заявок

Див. вище. Якщо потрібна автоматизація, міст вебхуків може надсилати сигнали роздратування до Zapier чи Make, а ви вирішуватимете там, що заслуговує на заявку.

Без двобічної синхронізації

Закриття заявки нічого не змінює в MousePlayer, а жодна дія в MousePlayer не відкриває її знову. Синхронізація, яка працює в півтора напрямках, гірша за її відсутність, адже люди починають на неї покладатися.

Без вкладень

Запис залишається в нас і переглядається в нас. Експорт відео до системи завдань передав би персональні дані в систему з іншими правилами зберігання, ніж погоджені з вашими відвідувачами.

Токен зберігається зашифрованим AES-256-GCM і більше не показується. Він також ніколи не потрапляє до внутрішньої черги: цей виклик відбувається, поки ви очікуєте, безпосередньо із запиту.

5. GitLab, Azure DevOps і ClickUp

Ще три системи, та сама кнопка, той самий ручний запуск.

Ви задаєте
GitLabхост, ідентифікатор проєкту й токен — ваш власний GitLab теж підходить
Azure DevOpsорганізацію, проєкт, тип робочого елемента й PAT
ClickUpідентифікатор списку й персональний токен

GitLab запитує хост, бо він може належати вам

На відміну від інших, GitLab часто розміщують самостійно, тому хост — це поле, а не константа. Вставте gitlab.com, якщо ви використовуєте саме його.

Azure DevOps має одразу дві особливості

Тіло запиту — документ JSON Patch, а не об’єкт, а тип вмісту має бути application/json-patch+json — будь-який інший дає відповідь 415. Знак долара перед типом робочого елемента в URL є частиною адреси, а не заповнювачем, який ми забули заповнити.

ClickUp потрібен токен без доповнень

Без Bearer перед ним. Токен із цим словом на початку відхиляється з кодом 401, що виглядає так само, як неправильний токен.

Усі згадані тут торговельні марки належать їхнім відповідним власникам. MousePlayer не має ділових відносин із цими постачальниками.