Time slot management software online - zasada działania
Time slot management software online zastępuje telefoniczne ustalanie terminów kalendarzem ramp, do którego przewoźnicy mają dostęp przez przeglądarkę. Magazyn definiuje, ile transportów może obsłużyć w danej godzinie. Przewoźnik wybiera wolny termin sam, a system pilnuje, żeby żadna rampa nie została zarezerwowana ponad swoją pojemność.
Różnica w stosunku do arkusza albo wspólnego kalendarza pocztowego polega na regułach. Kalendarz przyjmie każdą rezerwację, którą ktoś wpisze. System slotów sprawdza przy zapisie zgodność rampy z ładunkiem oraz liczbę rezerwacji w tym samym przedziale. Z systemu korzystają cztery grupy użytkowników:
- Przewoźnik lub spedytor - rezerwuje slot z numerem rejestracyjnym pojazdu i danymi ładunku, a w odpowiedzi dostaje numer rezerwacji.
- Dostawca - zakłada awizo dostawy i wskazuje przewoźnika albo rezerwuje slot samodzielnie, jeśli organizuje transport.
- Magazyn - definiuje rampy i siatkę slotów oraz zatwierdza wyjątki od reguł rezerwacji.
- Ochrona na bramie - weryfikuje przyjeżdżający pojazd z listą rezerwacji i kieruje go na rampę albo parking.
Pojęcia okna i slotu bywają używane zamiennie. W tym artykule okna czasowe oznaczają ramy godzinowe pracy magazynu, a slot to pojedyncza rezerwacja w tych ramach. Szersze omówienie tego rozróżnienia zawiera tekst o tym, czym są sloty czasowe w logistyce.
Wersja online ma istotną konsekwencję organizacyjną. Z systemu korzystają firmy zewnętrzne, które nie podlegają poleceniom kierownika zmiany, więc reguły rezerwacji muszą być zapisane w konfiguracji, a nie w zwyczajach magazynu. Każdy wyjątek, którego system nie potrafi obsłużyć, wraca do telefonu i e-maila, czyli do stanu sprzed wdrożenia.
Rezerwacja okien czasowych w przeglądarce
Rezerwacja przebiega w kilku krokach. Przewoźnik wskazuje magazyn i dzień, a potem rodzaj operacji. Portal pobiera wtedy listę wolnych slotów asynchronicznie, bez przeładowania strony. Zapytanie przekazuje liczbę palet, bo od niej zależy długość slotu, a więc to, które terminy w ogóle się zmieszczą.
// Pobranie wolnych slotów dla magazynu i dnia (endpoint poglądowy)
$.ajax({
url: '/api/sloty/wolne',
method: 'GET',
data: { magazynId: 3, dzien: '2026-10-05', liczbaPalet: 24 },
dataType: 'json'
}).done(function (sloty) {
renderujKalendarz(sloty); // [{ rampaId, start, koniec }, ...]
}).fail(function (xhr) {
pokazKomunikat('Nie udało się pobrać wolnych terminów (' + xhr.status + ').');
});
Lista wolnych slotów jest tylko podpowiedzią. Między jej pobraniem a kliknięciem „Rezerwuj” inny przewoźnik może zająć ten sam termin, dlatego ostateczna weryfikacja odbywa się w bazie danych przy zapisie. Część systemów zakłada rezerwację wstępną na czas wypełniania formularza. Wygasa ona automatycznie, jeśli przewoźnik nie potwierdzi jej w ciągu kilku minut.
Statusy rezerwacji
Rezerwacja przechodzi przez stałą sekwencję statusów. Każde przejście zapisuje się z czasem i autorem, co pozwala później policzyć punktualność przewoźników.
| Status | Zdarzenie wyzwalające | Czy blokuje slot |
|---|---|---|
| Wstępna | Wybór terminu w portalu | Tak, do upływu limitu czasu |
| Potwierdzona | Zapis formularza z danymi pojazdu | Tak |
| Na placu | Rejestracja wjazdu na bramie | Tak |
| Zakończona | Zwolnienie rampy po obsłudze | Nie, slot zamknięty |
| Anulowana | Rezygnacja przewoźnika albo magazynu | Nie, slot wraca do puli |
Rezygnacja przed terminem zwalnia slot dla innych przewoźników. Mechanikę rezerwacji od strony przewoźnika, łącznie z anulowaniem i zmianą terminu, opisuje artykuł o tym, jak działa slot booking w praktyce.
Powiadomienia o zmianie statusu wysyła się e-mailem albo SMS-em. Kierowca dostaje numer rezerwacji, który podaje na bramie. Przy spóźnieniu przekraczającym tolerancję system zmienia status rezerwacji i zwalnia rampę dla kolejnego pojazdu z kolejki. Tolerancję ustala magazyn, zwykle osobno dla rozładunku i załadunku.

Pojemność ramp i siatka slotów
Pojemność magazynu w systemie slotów nie jest jedną liczbą. Składa się z pojemności poszczególnych ramp w kolejnych przedziałach czasu, pomniejszonej o przerwy i okna zarezerwowane dla transportów stałych. Konfiguracja zaczyna się od opisu ramp.
| Parametr rampy | Przykładowa wartość | Wpływ na przydział |
|---|---|---|
| Godziny pracy | 6:00-22:00, przerwa 13:00-13:30 | Wyznacza zakres siatki slotów |
| Podstawowa jednostka slotu | 15 minut | Długość każdego slotu jest jej wielokrotnością |
| Obsługiwane operacje | Rozładunek, załadunek | Odrzuca rezerwacje innego typu |
| Typ rampy | Chłodnicza, z uszczelnieniem | Towar chłodzony trafia tylko na rampy tego typu |
| Transporty jednocześnie | 1 | Pojemność pojedynczego slotu |
Pojemność zużywa się proporcjonalnie do czasu obsługi. Transport 33 palet z rozładunkiem ręcznym zajmuje rampę dłużej niż ten sam wolumen rozładowywany wózkiem, więc konsumuje więcej jednostek siatki. Sposób liczenia takiej konsumpcji w Studio VSS.net opisuje artykuł o tym, jak system zarządza konsumpcją pojemności bram.
Siatka slotów ma też wymiar tygodniowy. Transporty stałe, na przykład codzienne dostawy od jednego producenta o stałej godzinie, rezerwuje się z góry jako sloty cykliczne. Pozostała pojemność trafia do puli dostępnej dla przewoźników w portalu. Proporcję między slotami cyklicznymi a pulą otwartą warto przeglądać co kwartał, bo sloty cykliczne mają tendencję do zajmowania coraz większej części dnia.
Wpływ liczby ramp na przepustowość, łącznie z rezerwą na transporty nieplanowane, omawia tekst o tym, jak planować rezerwowanie doków magazynowych pod kątem pojemności. Organizację pracy przy samych rampach, od podstawienia pojazdu po zwolnienie doku, opisuje artykuł o tym, jak wygląda zarządzanie dokami w magazynie.

Algorytm przydziału slotów
Algorytm odpowiada na pytanie, które sloty pokazać przewoźnikowi jako wolne. Najprostsza wersja przegląda rampy w ustalonej kolejności i zwraca pierwsze przedziały, w których zmieści się transport. Metoda jest szybka i przewidywalna, ale prowadzi do przeciążenia pierwszych ramp na liście.
Lepsze wyniki daje przydział z kilkoma kryteriami. Algorytm najpierw odrzuca rampy, które nie spełniają warunków twardych, a pozostałe sortuje według obciążenia. Warunki uwzględniane przy wyliczaniu wolnych slotów to zwykle:
- Zgodność rampy - typ operacji i typ rampy muszą pasować do ładunku. Towar chłodzony nie trafi na rampę bez uszczelnienia.
- Czas obsługi - długość slotu liczona z liczby palet i sposobu rozładunku, zaokrąglona w górę do jednostki siatki.
- Bufor między slotami - czas na odjazd poprzedniego pojazdu i podstawienie następnego. Bez niego jedno opóźnienie przesuwa cały dzień.
- Obciążenie rampy - przy kilku pasujących rampach system proponuje najpierw tę, która ma w danym dniu najwięcej wolnego czasu.
Reguła: długość slotu liczy system, nie przewoźnik. Przewoźnik podaje ładunek, a nie czas obsługi.
Zmiana liczby palet po rezerwacji zmienia długość slotu. Jeśli nowy czas obsługi nie mieści się w zarezerwowanym przedziale, system proponuje inny termin, zamiast po cichu wydłużać slot kosztem następnej rezerwacji na tej samej rampie.
Przewidywany czas obsługi warto kalibrować na danych historycznych. Porównanie zaplanowanej długości slotu z czasem faktycznym, zapisanym przy zwolnieniu rampy, pokazuje po kilku tygodniach, czy współczynniki na paletę są realistyczne. Zasady definiowania okien i ich długości dla poszczególnych ramp zebraliśmy w artykule o tym, jak przebiega definiowanie okien czasowych i rezerwacja doków.

Konflikty rezerwacji w SQL Server
Najtrudniejszy moment w systemie slotów to chwila, w której dwóch przewoźników klika ten sam termin w odstępie kilkudziesięciu milisekund. Obie aplikacje sprawdziły wcześniej, że slot jest wolny. Jeśli zapis nie jest chroniony w bazie, obie rezerwacje trafią do tabeli i na rampę przyjadą dwie ciężarówki.
Przy pojemności jednego transportu na slot wystarcza ograniczenie w strukturze tabeli. Unikalny indeks filtrowany na parze rampa i początek slotu odrzuci drugi zapis błędem 2601, a aplikacja pokaże komunikat o zajętym terminie.
-- Jedna aktywna rezerwacja na rampę i początek slotu (nazwy poglądowe)
CREATE UNIQUE NONCLUSTERED INDEX UX_Rezerwacja_RampaSlot
ON dbo.Rezerwacja (RampaId, SlotStart)
WHERE Anulowana = 0;
Blokada wiersza slotu
Indeks nie wystarcza, gdy slot ma pojemność większą niż jeden albo gdy sloty różnej długości mogą się nakładać. Wtedy procedura rezerwacji musi najpierw zablokować wiersz opisujący slot. Nową rezerwację wstawia dopiero po policzeniu istniejących. Wskazówki UPDLOCK i HOLDLOCK sprawiają, że druga transakcja czeka na zakończenie pierwszej.
CREATE PROCEDURE dbo.RezerwujSlot
@RampaId int, @SlotStart datetime2(0), @PrzewoznikId int, @AwizoId int
AS
BEGIN
SET NOCOUNT ON;
SET XACT_ABORT ON;
BEGIN TRANSACTION;
DECLARE @Pojemnosc int, @Zajete int;
-- Blokada aktualizacji na wierszu slotu do końca transakcji
SELECT @Pojemnosc = s.Pojemnosc
FROM dbo.SlotRampy AS s WITH (UPDLOCK, HOLDLOCK)
WHERE s.RampaId = @RampaId AND s.SlotStart = @SlotStart;
SELECT @Zajete = COUNT(*)
FROM dbo.Rezerwacja AS r
WHERE r.RampaId = @RampaId AND r.SlotStart = @SlotStart AND r.Anulowana = 0;
IF @Pojemnosc IS NULL OR @Zajete >= @Pojemnosc
THROW 50010, N'Slot jest już zajęty.', 1;
INSERT dbo.Rezerwacja (RampaId, SlotStart, PrzewoznikId, AwizoId, Anulowana)
VALUES (@RampaId, @SlotStart, @PrzewoznikId, @AwizoId, 0);
COMMIT TRANSACTION;
END;
Przy włączonym SET XACT_ABORT ON instrukcja THROW wycofuje otwartą transakcję i zwalnia blokady. Obie wskazówki opisuje strona Microsoft Learn o wskazówkach tabeli w T-SQL. Porównanie obu podejść zestawia tabela.
| Mechanizm | Kiedy wystarcza | Zachowanie przy konflikcie |
|---|---|---|
| Unikalny indeks filtrowany | Pojemność slotu = 1, stała siatka | Drugi INSERT kończy się błędem 2601 |
| UPDLOCK + HOLDLOCK w procedurze | Pojemność większa niż 1 albo sloty różnej długości | Druga transakcja czeka, potem widzi zajęty slot |
Zakleszczenia i ponowienia
Blokady utrzymywane do końca transakcji zwiększają ryzyko zakleszczenia, gdy dwie procedury blokują zasoby w różnej kolejności. SQL Server przerywa wtedy jedną z transakcji błędem 1205. Aplikacja powinna rozpoznać ten numer i ponowić rezerwację raz albo dwa razy z krótkim opóźnieniem, zanim pokaże błąd przewoźnikowi. Stała kolejność blokowania, najpierw wiersz slotu, potem tabela rezerwacji, ogranicza takie przypadki do minimum.
Rezerwacje wstępne wygasają dzięki zadaniu cyklicznemu, które zmienia status wierszy starszych niż limit czasu. Zadanie aktualizuje małe partie, na przykład po 500 wierszy w jednej transakcji, żeby nie wywołać eskalacji blokad do poziomu tabeli. SQL Server próbuje eskalować blokady, gdy pojedyncza instrukcja założy około 5000 blokad na jednym obiekcie. Mechanizmy blokad i wersjonowania wierszy opisuje przewodnik po blokadach i wersjonowaniu wierszy w SQL Server.
Integracja z WMS i obsługą placu
Rezerwacja slotu jest początkiem łańcucha zdarzeń. Po zapisie system przekazuje awizo do WMS, który przygotowuje zlecenie przyjęcia i przydziela obsadę rampy. Zakres danych wymienianych między systemami i momenty synchronizacji opisuje artykuł o tym, jak rezerwacja okien czasowych integruje się z WMS.
Na terenie zakładu rezerwację przejmuje moduł obsługi placu. Yard management system porównuje numer rejestracyjny przy bramie z listą rezerwacji na dany dzień. Pojazd z rezerwacją jedzie na rampę albo na parking buforowy, a pojazd bez niej trafia do osobnej kolejki. Zasady obsługi takiego przypadku omawia tekst o tym, jak magazyn traktuje transport nieawizowany.
Po stronie dostawcy rezerwacja slotu łączy się z zapowiedzią ładunku. Awizo niesie dane o towarze i nośnikach, a slot niesie termin i rampę. Sekwencję obu kroków opisuje artykuł o tym, jak przebiega awizowanie dostawy. Rozwiązanie SoftwareStudio w tym obszarze przedstawia strona Time Slot Management System.
Wymagania techniczne wdrożenia
Po stronie przewoźnika wystarczy przeglądarka i dostęp do Internetu. Portal działa przez HTTPS, a konta zakłada magazyn, nadając uprawnienia do wybranych obiektów. Po stronie magazynu system potrzebuje serwera aplikacji, najczęściej IIS na Windows Server, oraz bazy danych.
Wybór edycji SQL Server zależy od skali. Edycja Express jest bezpłatna, ale ma limity, które przy kilku obiektach i kilkuletniej historii rezerwacji szybko stają się odczuwalne. Poniższe wartości dotyczą wersji od 2016 do 2022.
| Parametr | SQL Server Express | SQL Server Standard |
|---|---|---|
| Maksymalny rozmiar bazy | 10 GB | Brak limitu edycji |
| Pula buforów | 1410 MB | 128 GB |
| Moc obliczeniowa | Mniejsza z wartości: 1 gniazdo lub 4 rdzenie | Mniejsza z wartości: 4 gniazda lub 24 rdzenie |
| SQL Server Agent | Niedostępny | Dostępny |
Brak SQL Server Agent w edycji Express ma praktyczne znaczenie. Zadania cykliczne, takie jak wygaszanie rezerwacji wstępnych albo archiwizacja historii, trzeba wtedy uruchamiać z harmonogramu zadań Windows albo z samej aplikacji. Aktualne limity poszczególnych edycji podaje strona edycje i funkcje SQL Server 2022.
Portal rezerwacji jest dostępny z Internetu, więc wymaga tych samych zabezpieczeń co inne systemy zewnętrzne. Certyfikat TLS na serwerze IIS i blokada konta po serii nieudanych logowań to minimum. Przewoźnik widzi wyłącznie własne rezerwacje, dlatego procedury filtrują dane po identyfikatorze firmy przypisanym do sesji, a nie po parametrze przesłanym z przeglądarki. Ta sama zasada dotyczy wywołań AJAX: każdy endpoint sprawdza uprawnienia po stronie serwera, niezależnie od tego, co pokazuje interfejs.




