Systemy zgłoszeń
Zamień sesję w zgłoszenie, oglądając ją - jeden przycisk w odtwarzaczu, Twoje własne słowa w opisie i już dołączony odnośnik do nagrania.
1. Dlaczego akurat ten mostek uruchamiasz ręcznie
Każdy inny mostek w MousePlayerze działa sam. Ten nie - i na tym polega cały pomysł.
Zgłoszenie to praca dla człowieka. Gdybyśmy zakładali je przy każdym kliknięciu ze złości, Twoja tablica zapełniłaby się pozycjami, których nikt nie przejrzał - a w ciągu tygodnia zespół zacząłby je odfiltrowywać. Od tej chwili odfiltrowane są też te prawdziwe.
Wyzwalaczem jesteś więc Ty. Oglądasz sesję, widzisz to miejsce, naciskasz przycisk i piszesz, co zobaczyłeś. Odnośnik jest już w opisie; osąd dokładasz Ty.
Przycisk pojawia się tylko dla właścicieli i administratorów i nigdy w widoku przez link udostępniony. Ktoś, komu wysłałeś nagranie, nie powinien móc zakładać zgłoszeń w Twoim systemie.
2. Pięć systemów i czego wymaga każdy
| Gdzie trafia | Podajesz | |
|---|---|---|
| Jira | zadanie w projekcie | adres site, e-mail konta, token API, klucz projektu, typ zadania |
| Linear | zgłoszenie w zespole | klucz API, identyfikator zespołu |
| Asana | zadanie w projekcie | personal access token, identyfikator projektu |
| Trello | karta na liście | key, token, identyfikator listy |
| GitHub | zgłoszenie w repozytorium | personal access token, owner/repo |
Jeden kafelek, jeden wybrany dostawca. Przejście później na inny system to zmiana wyboru, a nie migracja.
Skąd wziąć identyfikatory
Identyfikator zespołu w Linear i projektu w Asanie widać w adresie, gdy otworzysz je w przeglądarce. Identyfikator listy w Trello jest najbardziej kłopotliwy z całej piątki: dopisz .json do adresu tablicy i odszukaj właściwą listę. Klucz projektu w Jirze to przedrostek przed każdym numerem zadania - ACME w ACME-1234.
3. Odnośnik w zgłoszeniu buduje nasz serwer
Opis, który wpisujesz, należy do Ciebie. Odnośnik do nagrania nie - powstaje po naszej stronie z sesji, którą faktycznie oglądałeś, a formularz nie ma na niego wpływu.
To ważne, bo zgłoszenie jest czymś, w co klikają inni ludzie. Gdyby odnośnik pochodził z przeglądarki, spreparowane żądanie mogłoby podsunąć Twojemu zespołowi dowolny adres w czymś, co wygląda jak Wasze własne narzędzie.
HTTP 200 nie znaczy, że zgłoszenie istnieje
Linear odpowiada przez GraphQL, a GraphQL także przy odmowie odpowiada 200 OK z tablicą errors. Mostek patrzący wyłącznie na kod statusu zgłosiłby sukces dla zgłoszenia, które nigdy nie powstało. My czytamy treść.
Tam, gdzie system zwraca identyfikator nowego zadania, umieszczamy go w potwierdzeniu - żebyś mógł sprawdzić, że naprawdę tam jest, zamiast wierzyć zielonemu komunikatowi.
4. Czego tu świadomie nie ma
Żadnych automatycznych zgłoszeń
Patrz wyżej. Kto chce automatyzacji, może przez mostek webhooków wysyłać sygnały frustracji do Zapiera lub Make i tam decydować, co zasługuje na zgłoszenie.
Żadnej synchronizacji w obie strony
Zamknięcie zgłoszenia nic nie zmienia w MousePlayerze, a nic w MousePlayerze go nie otwiera ponownie. Synchronizacja działająca w półtora kierunku jest gorsza niż żadna, bo ludzie zaczynają na niej polegać.
Żadnych załączników
Nagranie zostaje u nas i u nas jest oglądane. Eksport wideo do systemu zgłoszeń przeniósłby dane osobowe do systemu o innych zasadach przechowywania niż te, które obiecałeś swoim odwiedzającym.
Token jest przechowywany z szyfrowaniem AES-256-GCM i nigdy więcej nie pokazywany. Nigdy też nie trafia do wewnętrznej kolejki - to wywołanie dzieje się, gdy czekasz, wprost z żądania.
5. GitLab, Azure DevOps i ClickUp
Trzy kolejne systemy, ten sam przycisk, to samo ręczne uruchamianie.
| Podajesz | |
|---|---|
| GitLab | host, identyfikator projektu i token - własny GitLab też działa |
| Azure DevOps | organizację, projekt, typ elementu pracy i PAT |
| ClickUp | identyfikator listy i token osobisty |
GitLab pyta o host, bo może należeć do Ciebie
W odróżnieniu od pozostałych GitLab bywa często prowadzony samodzielnie, więc host jest polem, a nie stałą. Wpisz gitlab.com, jeśli tam jesteś.
Azure DevOps ma dwie osobliwości naraz
Jego treść to dokument JSON Patch, a nie obiekt, a typ zawartości musi brzmieć application/json-patch+json - wszystko inne odpowiada 415. Znak dolara przed typem elementu pracy w adresie jest częścią adresu, a nie zapomnianym przez nas symbolem zastępczym.
ClickUp chce token nagi
Bez Bearer z przodu. Token z tym słowem zostaje odrzucony z 401, co wygląda dokładnie jak zły token.
Wszystkie wymienione znaki towarowe należą do ich właścicieli. MousePlayer nie pozostaje w żadnych relacjach biznesowych z tymi dostawcami.