Komunikacja Realtime, Mapa etykiety, Parametry logiki
Filip Borkowski, Backend/Frontend/Fullstack Engineer
Mapa — etykiety, filtry i historia trasy
Nowe etykiety pojazdów na mapie
Markery pojazdów otrzymały nowy design etykiet w formie prostokątnych ramek z TAG firmy (ciemne tło) i numerem rejestracyjnym (białe tło). Etykiety automatycznie rozmieszczają się tak, aby nie nachodziły na siebie — w gęstych skupiskach ukrywane są mniej istotne etykiety (widoczne po najechaniu kursorem). Linie odnośników łączą etykiety z symbolami pojazdów, a algorytm zapobiega ich wzajemnemu przecinaniu.
Filtry typów pojazdów i statusu ruchu
- Pojazdy (ciężarówki i ciągniki) — domyślnie włączone
- Naczepy i Kontenery — domyślnie wyłączone
- W ruchu (zielona kropka) — filtruje pojazdy z włączonym silnikiem
- Stoi (szara kropka) — filtruje pojazdy z wyłączonym silnikiem
Historia trasy z przełącznikiem
Po kliknięciu pojazdu dane historii trasy (3 dni) ładują się automatycznie w tle. Obok przełącznika widoczny jest status: „Wczytywanie...", „Gotowe" lub „Brak danych". Trasa wyświetlana jest na mapie dopiero po włączeniu toggle — domyślnie widok jest wyłączony.
Kierowca na etykiecie i w popupie
Pod numerem rejestracyjnym na etykiecie wyświetla się imię i nazwisko aktualnie zalogowanego kierowcy. Dane pobierane są z GBOX API na podstawie numeru karty tachografu (cardNo). Nowy endpoint /api/gbox/drivers skanuje bazę kierowców GBOX i mapuje karty na nazwiska. Kierowca widoczny jest również w popupie i panelu szczegółów pojazdu.
Popup pojazdu — TAG podmiotu
Popup po kliknięciu markera wyświetla w nagłówku TAG podmiotu (np. UTB, TSR) zamiast generycznego „Pojazd" — dane pobierane z tabeli entities w Supabase.
Strona Zlecenia — kontakty i akcje
Wyszukiwarka kontaktów pracowników
Na stronie zlecenia kierowcy dodano wyszukiwarkę kontaktów z bazy pracowników firmy. Można szukać po nazwisku, stanowisku lub numerze telefonu, a następnie bezpośrednio zadzwonić lub wysłać SMS.
Przycisk „Dodaj Akcję" przy każdym kroku TimeLine
Każdy status na osi czasu zlecenia ma teraz przycisk dodania akcji — nie tylko aktywny krok, ale wszystkie etapy.
Historia trasy — checkboxy per dzień
Zamiast jednego przełącznika ON/OFF dla całej historii trasy, każdy dzień ma teraz osobny checkbox z kolorowym wskaźnikiem. Użytkownik może selektywnie włączać i wyłączać poszczególne dni. Naprawiono wyświetlanie daty (wcześniej „Invalid Date"). Pasek statusu na liście pojazdów pokazuje teraz „26 aktywnych połączeń" z zieloną animacją.
Fleet — status pojazdu z GPS
Kolumna Status w tabeli Park Maszyn pobiera teraz dane bezpośrednio z GPS (engineOn) — tak samo jak na Mapie. Aktywny pojazd oznaczony jest zieloną kropką z prędkością w km/h, nieaktywny szarą. Puste komórki tabeli wyświetlają czerwone migające „Brak danych".
WorkDesk — TAG podmiotu i kontrahent
Karty pojazdów w obszarze roboczym WorkDesk wyświetlają TAG podmiotu (np. UTB, TSR). Karty zleceń zawierają teraz kontrahenta w nagłówku.
Agent Query API
Nowy endpoint /api/agent/query umożliwia zunifikowany dostęp do wszystkich danych — 26 tabel Supabase (z filtrami, joinami, paginacją) oraz dane GPS z GBOX (pozycje, kierowcy, historia trasy).
Komunikacja — kanały i wiadomości w czasie rzeczywistym
Kanały komunikacyjne przeniesione z localStorage do Supabase. Wiadomości DM i kanałowe są teraz widoczne natychmiast u wszystkich użytkowników dzięki Supabase Realtime. Subskrypcje nasłuchują na 3 tabelach: internal_messages, channel_messages i channels. Naprawiono dostarczanie wiadomości do odbiorców — dynamiczny ID użytkownika zamiast zahardkodowanego identyfikatora DEV_BYPASS.
Mapa — nowy design etykiety pojazdu
Etykieta pojazdu na mapie otrzymała nowy prostokątny design: lewa część zawiera TAG podmiotu wyświetlany pionowo (litera pod literą, np. U/T/B) na czarnym tle, prawa część podzielona jest poziomo na numer rejestracyjny (góra) i nazwisko kierowcy (dół).
Parametry logiki — auto-layout diagramów
Diagramy w panelu Parametry logiki automatycznie rozmieszczają węzły z równymi odstępami. Algorytm oblicza wysokość poddrzewa każdego elementu i centruje go względem dzieci. Przycisk „Wyrównaj" w prawym górnym rogu resetuje pozycje do optymalnego układu.