---
title: Dzienniki czasowe
description: "#### Struktura danych Skyplanner Zanim zagłębimy się w dzienniki czasowe, musimy omówić nieco strukturę danych w Skyplanner i sposób działania pod maską. Wszystko to zostanie omówione później. Jeśli zintegrowałeś swoje dane dotyczące zamówień/zleceń/zadań w Skyplanner, najprawdopodobniej korzystałeś przynajmniej z tych…"
url: "https://skyplanner.ai/pl/docs/dzienniki-czasowe/"
updated: "2025-10-07"
category: Integracje
tags:
  - API
  - Integracja
---

# Dzienniki czasowe

#### Struktura danych Skyplanner

Zanim zagłębimy się w dzienniki czasowe, musimy omówić nieco strukturę danych w Skyplanner i sposób działania pod maską. Wszystko to zostanie omówione później.

Jeśli zintegrowałeś swoje dane dotyczące zamówień/zleceń/zadań w Skyplanner, najprawdopodobniej korzystałeś przynajmniej z tych punktów końcowych API:

- phaser-orders
- phaser-order-rows
- phaser-jobs

W rzeczywistości dane wprowadzane do tych punktów końcowych są reprezentowane w interfejsie użytkownika Skyplanner w następujący sposób:

![](https://skyplanner.ai/wp-content/uploads/2025/03/image-25-1024x714.png)
**Rys. 1.** Zamówienie (phaser-orders)

![](https://skyplanner.ai/wp-content/uploads/2025/03/image-26-1024x715.png)
**Rys. 2.** Pozycje zamówienia (phaser-order-rows (czerwony)), Kroki procesu (phaser-jobs (zielony))

Po wstawieniu zamówień do Skyplannera należy **je wyeksportować** (można to zrobić za pośrednictwem interfejsu użytkownika lub punktu końcowego /phaser-orders/export-endpoint) do modułu planowania produkcji:

![](https://skyplanner.ai/wp-content/uploads/2025/03/image-27-1024x596.png)
**Rys. 3.** Eksportowanie przez interfejs użytkownika

![](https://skyplanner.ai/wp-content/uploads/2025/03/image-28-1024x597.png)
**Rys. 4.** Wyeksportowane zlecenie w harmonogramie produkcji

Podczas eksportowania zamówień Skyplanner skutecznie kopiuje dane zamówienia z jednej tabeli bazy danych do drugiej. Jeśli więc zmienisz coś, na przykład za pomocą punktu końcowego /phaser-orders, musisz ponownie wyeksportować dane, aby zaktualizować je w Harmonogramie produkcji. Oznacza to również, że aby uzyskać dostęp do zamówień widocznych w oknie harmonogramu produkcji, należy użyć różnych punktów końcowych API!

"Zmienione" punkty końcowe wyglądają następująco:

- /phaser-orders → /orders
- /phaser-order-rows → /order-rows
- /phaser-jobs → /jobs

Warto o tym wiedzieć, ponieważ podczas korzystania z punktu **końcowego** /timelogs do rejestrowania zdarzeń produkcyjnych itp. **należy używać powiązanych jednostek znajdujących się w punktach końcowych harmonogramu produkcji!**

Na przykład, potrzebujesz **production_planning_job_id**(aby powtórzyć: production_planning_jobs to jednostki dostępne z punktu końcowego /jobs), aby POST nowy dziennik czasu:

![](https://skyplanner.ai/wp-content/uploads/2025/03/image-29.png)
**Rys. 5.** Żądanie POST dziennika czasu

Potrzebny identyfikator production_planning_job_id można znaleźć w punkcie końcowym /phaser-jobs:

![](https://skyplanner.ai/wp-content/uploads/2025/03/image-30.png)
**Rys. 6.** Żądanie GET zadania Phaser (czerwony to phaser_job_id, **NIE UŻYWAJ GO W TIMELOGACH**)

Lub z punktu końcowego /job:

![](https://skyplanner.ai/wp-content/uploads/2025/03/image-31.png)
**Rys. 7.** /job GET request

#### Tworzenie dzienników czasu przy użyciu interfejsu REST-API

Tworzenie dzienników czasowych do Skyplanner przez API wykorzystuje te same zasady i systemy, które są w interfejsie użytkownika. Warto więc zapoznać się z działaniem systemu w interfejsie użytkownika przed podjęciem próby korzystania z niego za pośrednictwem API.

##### Podstawy dziennika czasu

Skyplanner posiada cztery typy zdarzeń dziennika czasu:

- shift_begin
- wstrzymany
- cd.
- shift_end

Zdarzenie Shift_begin jest wysyłane, gdy zadanie jest uruchamiane po raz pierwszy. **Nigdy nie wysyłaj więcej niż jednego zdarzenia shift_begin dla każdego zadania!**

Wstrzymane - zdarzenie wstrzymuje zadanie.

Zdarzenie kontynuowane wznawia wstrzymane zadanie.

Shift_end kończy zadanie. **Nigdy nie wysyłaj więcej niż jednego zdarzenia shift_end dla każdego zadania!**

Wymagane dane dla dzienników czasowych:

- person_id
  - Można go znaleźć w punkcie końcowym /people
  - To nie to samo co user_id!
- planned_workstation_id
  - Stanowisko pracy, na którym wykonywane jest zadanie
  - Można go znaleźć w punkcie końcowym /workstations
- date_time
  - Moment, w którym zdarzenie jest wykonywane
  - Format: 2024-01-01 10:30:11

Aby określić, który dziennik czasu Skyplanner jest powiązany z dziennikiem czasu z dowolnego używanego systemu zewnętrznego, można użyć pola **external_id**. Następnie można na przykład wysyłać żądania GET przy użyciu tego identyfikatora w celu znalezienia określonego dziennika czasowego ze Skyplanner.

![](https://skyplanner.ai/wp-content/uploads/2025/03/image-32-1024x438.png)
**Rys. 8.** External_id w dziennikach czasowych

#### Rozpoczęcie pracy

Zadania można uruchamiać, wysyłając do interfejsu API żądanie POST w następujący sposób:

![](https://skyplanner.ai/wp-content/uploads/2025/03/image-33.png)
**Rys. 9.** Shift_begin timelog

Podczas ustawiania danych POST dla dzienników czasowych ustaw **workshift_id**na 0 i **timelog_finalized**na **true**.

#### Wstrzymywanie zadania

Wstrzymaj zadania, wysyłając żądanie POST w następujący sposób:

![](https://skyplanner.ai/wp-content/uploads/2025/03/image-34.png)
**Rys. 10.** Wstrzymany dziennik czasu

W dziennikach czasu typu wstrzymanego można ustawić **kwotę**i **faulty_amount**. Należy również zwrócić uwagę na **typ**dziennika czasu i **date_time**.

#### Kontynuacja pracy

Oto jak kontynuować wstrzymany dziennik czasu:

![](https://skyplanner.ai/wp-content/uploads/2025/03/image-35.png)
**Rys. 11.** Ciąg dalszy dziennika czasu

Należy pamiętać, że próba kontynuowania zadania, które zostało zakończone przez zdarzenie shift_end, spowoduje wyświetlenie błędu.

#### Zakończenie pracy

Oto jak zakończyć zadanie za pomocą dziennika czasu shift_end:

![](https://skyplanner.ai/wp-content/uploads/2025/03/image-36.png)
**Rys. 12.** Dziennik czasu Shift_end

W shift_end-events można podać wartości **amount**i **faulty_amount**, tak jak w paused-events. Należy pamiętać, że próba wykonania zdarzenia shift_end dla zadania, które nie jest uruchomione, spowoduje wyświetlenie błędu.

#### Aktualizacja dzienników czasowych

Dane dziennika czasu można aktualizować, wysyłając żądania PUT do punktu końcowego /timelogs-endpoint w następujący sposób:

![](https://skyplanner.ai/wp-content/uploads/2025/03/image-37.png)
**Rys. 13.** Edycja dzienników czasowych

Należy pamiętać, że aby wykonać aktualizację, trzeba mieć ustawione zarówno dane **beginTimelog**, jak i **endTimelog**. Dzienniki czasowe w Skyplanner są przechowywane w następujący sposób: każdy "pełny" (dziennik czasowy, który ma zarówno początek, jak i koniec (np. shift_begin/continued & paused/shift_end) dziennik czasowy ma oddzielną jednostkę dla początku i końca.

Są one sparowane przez wartość **begin_id**znalezioną w endlog. W powyższym przykładzie beginTimelog ma wartość id równą 1, a zatem jego endTimelog ma wartość **begin_id**równą 1.

Musisz również podać wartości **person_id**i **endTimelog**za każdym razem, gdy wykonujesz żądanie aktualizacji, nawet jeśli ich nie zmieniasz.

#### Alternatywne sposoby tworzenia dzienników czasowych

Oto kilka alternatywnych sposobów logowania się do zadań przy użyciu interfejsu API.

##### Logfull

Jeśli chcesz wysłać zarówno początkowe, jak i końcowe dzienniki czasowe w jednym żądaniu, możesz użyć punktu końcowego **/timelogs/log-full**, jak poniżej:

![](https://skyplanner.ai/wp-content/uploads/2025/03/image-38.png)
**Rys. 14.** Żądanie logfull

Zwróć uwagę, w jaki sposób przesyłane są tutaj kwoty: pierwsza wartość "amount" oznacza **błędną kwotę**, a druga **kwotę**. To żądanie tworzy encje beginlog i endlog w jednym żądaniu.

##### Quicklog

"Szybkie logowanie" do zadania kończy je w jednym żądaniu, ustawia ukończoną ilość produktów, aby odpowiadała wartości ustawionej w pozycji zamówienia. Szybkie logowanie odbywa się za pomocą punktu końcowego **/timelogs/quick-log**:

![](https://skyplanner.ai/wp-content/uploads/2025/03/image-39.png)
**Rys. 15.** Szybkie logowanie

Należy pamiętać, że tutaj wystarczy podać tylko **production_planning_job_id**, **planned_workstation_id**i **person_id**. Wartości czasu i kwoty są wypełniane automatycznie. Należy również pamiętać, że szybkie rejestrowanie zadań jest zawsze zakończone zdarzeniem shift_end, więc dalsze rejestrowanie nie jest możliwe po szybkim rejestrowaniu!
