Системи відстеження завдань
Перетворюйте сеанс на заявку під час перегляду: одна кнопка в плеєрі, опис вашими словами й уже додане посилання відтворення.
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 не має ділових відносин із цими постачальниками.