Przejdź do głównej zawartości

Cron Jobs

Funkcja Cron Jobs pozwala tworzyć unikalne URL endpointy, które po wyzwoleniu automatycznie zamykają wszystkie aktywne logi śledzenia czasu dla wybranego zestawu stanowisk. Jest to przydatne do kończenia zmian, zamykania niedokończonych timerów na koniec dnia lub koordynacji z zewnętrznymi schedulerami (cron serwera, platformy automatyzacji, zaplanowane webhooki).

Ustawienia Aplikacji — Cron Jobs


Każdy cron job składa się z:

PoleOpis
NazwaPrzyjazna etykieta opisująca, co robi cron job (na przykład „Koniec dnia — zespół montażu”). Ta nazwa jest też używana jako temat wiadomości email z podsumowaniem.
URL endpointuUnikalny, automatycznie wygenerowany URL zawierający sekretny token. Każdy z tym URL może wyzwolić cron job, więc traktuj go jak poświadczenie.
Email powiadomień (opcjonalnie)Jeśli wypełnione, na ten adres wysyłany jest email z podsumowaniem za każdym razem, gdy cron job zostaje wyzwolony. Pozostaw puste, aby wyłączyć powiadomienia email.
StanowiskaJedno lub więcej stanowisk, których aktywne wpisy śledzenia czasu zostaną zamknięte przy wywołaniu URL.
Ostatnie uruchomienieZnacznik czasu ostatniego udanego wyzwolenia.

Możesz tworzyć tyle cron jobów, ile potrzebujesz, każdy z własnym zestawem stanowisk i własnym URL. Dzięki temu łatwo zamykać logi o różnych porach dla różnych zespołów lub działów — na przykład jeden cron job dla linii montażowej o 16:00 i drugi dla lakierni o 18:00.


Typowe scenariusze:

  • Sprzątanie końca zmiany — automatyczne zatrzymanie wpisów śledzenia czasu, których pracownik zapomniał zatrzymać przed wyjściem.
  • Harmonogramy per-zespół — różne działy kończą o różnych porach, więc każdy dostaje własny cron job i własną porę dnia.
  • Integracja z platformami automatyzacji — zaplanuj przepływ Zapier, Make.com lub podobny do cyklicznego trafiania w URL.
  • Cron serwera — wywołaj endpoint z crona Linuksa, Harmonogramu Zadań Windows lub dowolnego schedulera opartego o HTTP.

Otwórz Ustawienia Aplikacji → Cron Jobs, aby zarządzać listą.

  1. Kliknij Dodaj cron job.
  2. Nadaj mu opisową Nazwę — będzie też używana jako temat wiadomości z powiadomieniem.
  3. Opcjonalnie wpisz Email powiadomień. Jeśli wypełnione, na ten adres wysyłany jest email z podsumowaniem za każdym razem, gdy cron job zostaje wyzwolony. Pozostaw puste, aby wyłączyć powiadomienia email.
  4. Zaznacz jedno lub więcej Stanowisk na liście. Tylko aktywne logi czasu tych stanowisk zostaną zamknięte przez ten URL.
  5. Kliknij Zapisz.

Unikalny URL endpointu jest generowany automatycznie.

Kliknij ikonę ołówka obok cron joba, aby zmienić jego nazwę lub przypisania stanowisk. URL endpointu pozostaje ten sam — istniejące integracje dalej działają.

Kliknij ikonę kosza i potwierdź. URL endpointu przestaje działać natychmiast. Jest to trwałe i nie można cofnąć.

Kliknij ikonę kopiowania obok URL. Ikona zmienia się na chwilę w zielony znacznik, by potwierdzić, że URL znajduje się w schowku.


URL endpointu akceptuje zarówno żądania GET, jak i POST — wybierz to, co łatwiejsze dla Twojego schedulera. Nie jest wymagany żaden nagłówek uwierzytelniania; tokenem poświadczającym jest token w URL.

curl

Okno terminala
curl https://your-board.example.com/cron/abc123xyz...

Linux crontab (zamknij zmianę w każdy dzień roboczy o 17:00)

0 17 * * 1-5 curl -fsS https://your-board.example.com/cron/abc123xyz... > /dev/null

Zapier / Make.com / n8n — użyj wbudowanej akcji Webhooks / HTTP Request i wskaż na URL.

Udane wyzwolenie zwraca payload JSON w stylu:

{
"success": true,
"closed": 3,
"cron_job": "End of day - assembly"
}

closed to liczba aktywnych wpisów śledzenia czasu, które zostały zatrzymane.

Jeśli cron job nie ma przypisanych stanowisk, odpowiedź będzie:

{
"success": true,
"closed": 0,
"message": "No workstations assigned."
}

Gdy endpoint zostaje wywołany, system:

  1. Znajduje każdy aktywny wpis śledzenia czasu (uruchomiony timer bez czasu zatrzymania), którego stanowisko jest przypisane do tego cron joba.
  2. Ustawia stopped_at na bieżący czas i zapisuje upływny czas trwania.
  3. Pisze automatyczny wpis logu na każdym dotkniętym zadaniu, oznaczony jako Auto-closed by cron job: {name}, dzięki czemu zarejestrowany czas jest zachowany w logu stanowiska.
  4. Aktualizuje znacznik czasu Ostatnie uruchomienie cron joba.
  5. Jeśli ustawiony jest Email powiadomień, wysyła email z podsumowaniem (patrz niżej).

Wpisy, które nie są aktywne (timery już zatrzymane lub działające na stanowiskach spoza listy tego crona), nie są ruszane.


Jeśli pole Email powiadomień na cron jobie jest wypełnione, każde wyzwolenie tego endpointu wysyła email z podsumowaniem na ten adres.

Email zawiera:

  • Temat — Nazwę cron joba, dokładnie tak, jak skonfigurowana.
  • Wyzwolono o — datę i czas, kiedy nastąpiło wyzwolenie.
  • Zamknięte logi — tabelę z każdym aktywnym wpisem śledzenia czasu, który został zamknięty, z nazwiskiem pracownika, stanowiskiem i upływnym czasem trwania.

Jeśli w momencie wyzwolenia nie znaleziono aktywnych wpisów, email i tak jest wysyłany, ale treść zaznacza, że żadne logi nie zostały zamknięte. Jest to przydatne jako sygnał heartbeat potwierdzający, że scheduler działa.

Przykładowa treść maila:

Wyzwolono o: 2026-05-26 17:00:03

Zamknięte logi (2):

PracownikStanowiskoCzas trwania
Jan KowalskiMontaż 13h 12min
Anna NowakKabina Lakiernicza45min

Aby wyłączyć powiadomienia email, po prostu wyczyść pole na cron jobie i zapisz.

Dostarczanie maili używa tego samego transportu poczty (SMTP itp.) skonfigurowanego dla reszty aplikacji. Jeśli dostarczenie zawiedzie z jakiegokolwiek powodu, awaria jest logowana, a odpowiedź wyzwolenia i tak zwraca sukces — zamykanie logów czasu nie jest blokowane problemami z pocztą.


  • URL endpointu zawiera 40-znakowy losowy token i jest jedyną rzeczą stojącą między publicznym internetem a tą akcją. Traktuj go jak hasło.
  • Jeśli URL wycieknie, usuń cron job — to natychmiast unieważnia URL — i utwórz nowy, by wydać świeży URL.
  • Endpoint jest ograniczony do 60 żądań na minutę na IP, by zapobiec nadużyciom.
  • Akcja jest per-tenant: token zawsze wpływa tylko na wpisy czasu należące do tenanta, który utworzył cron job.

  • Nadaj każdemu cron jobowi nazwę odzwierciedlającą zarówno zespół, jak i harmonogram (na przykład „17:00 dni robocze — montaż”), by móc je rozróżnić na pierwszy rzut oka.
  • Używaj osobnego cron joba na zespół, zamiast jednego dużego — daje to drobniejszą kontrolę nad harmonogramami i ułatwia wyłączenie lub zmianę zachowania dla jednego zespołu.
  • Przetestuj URL raz ręcznie (z przeglądarki lub curl) po utworzeniu, by potwierdzić, że zwraca odpowiedź success: true.