Release 20260503_01 — globalny czat AI, niekompletne pojazdy, edytor statusów

Filip Borkowski, Backend/Frontend/Fullstack Engineer

Globalny czat AI — synchronizacja w 3 miejscach

Asystent AI ma teraz wspólny stan w całej aplikacji. Powstał nowy globalny context (AiChatProvider), który synchronizuje wiadomości i licznik nieprzeczytanych pomiędzy:

  • FAB w lewym dolnym rogu (rozwijany panel czatu)
  • Sidebar — link "Czat AI" z czerwonym badge
  • Dock menu w Plan 2.0 i Mapie

Gdy AI odpowiada a panel jest zwinięty — licznik nieprzeczytanych zwiększa się i pojawia się jako badge w sidebarze. Otwarcie panelu, wejście na stronę /dashboard/czat lub workdesk-2 automatycznie zeruje licznik. Stan przeżywa reload strony (localStorage).

FAB — drag prawym klikiem przez menu

Prawy klik na ikonkę FAB otwiera teraz menu kontekstowe z dwiema opcjami:

  • Przesuń — aktywuje tryb przesuwania (FAB zmienia kolor na pomarańczowy z pulsującym ringiem), drag lewym klikiem
  • Zwiń do menu na dole — FAB zamienia się w pigułkę "✨ Czat AI" na środku ekranu

Pozycja jest pamiętana w localStorage i automatycznie przeskakuje z powrotem do widocznego obszaru przy zmniejszeniu okna.

Park maszyn — niekompletne pojazdy

Wcześniej dodanie pojazdu było zablokowane dopóki user nie wypełnił WSZYSTKICH wymaganych pól (producent, model, numer rejestracyjny, podmiot). Teraz można zapisać pojazd z brakującymi danymi i uzupełnić je później.

  • Tag automatycznie wygenerowany dopiero gdy wszystkie wymagane pola są wypełnione
  • Format taga: ENTITY_TAG-TYPE_CODE-REGISTRATION (np. TSR-P-WX12345A)
  • W tabeli niekompletny pojazd ma badge ⚠ Niekompletny z tooltipem listującym brakujące pola

Jednorazowa migracja SQL naprawiła 11 istniejących rekordów z wadliwymi tagami. 7 pojazdów oznaczonych prefiksem UNK- czeka na ręczne przypisanie podmiotu.

Edytor statusów we wszystkich tabelach

W każdej tabeli zawierającej kolumnę "Status" — w menu nagłówka pojawiła się opcja "Ustawienia statusów". Klik otwiera dialog gdzie można:

  • Edytować nazwy istniejących statusów
  • Zmieniać kolory (color picker)
  • Dodawać nowe statusy
  • Usuwać niepotrzebne

Zmiany zapisują się do bazy (app_settings.order_statuses) i obowiązują we wszystkich tabelach.

Plan 2.0 — pinezki pojazdów i naczep

W panelach POJAZDY i NACZEPY (prawy pasek) dodano przyciski pinezki — klik przypina pojazd/naczepę jako Card do obszaru roboczego (analogicznie jak istniejące pinezki kierowców i zleceń). Stan zapisywany jest w autosave razem z resztą planu dnia.

Wydajność

Lista 1500+ zleceń wcześniej powodowała zacinanie się strony. Teraz:

  • Filtrowanie/sortowanie wyniesione do useMemo
  • Wyszukiwarki z debounce 200ms
  • Lista pokazuje pierwsze 80 zleceń + komunikat "Pokazano 80 z 1538. Zawęź wyszukiwarką"
  • React.memo na komponentach drag

Biblioteka danych — pliki tras widoczne od razu

Przy każdym pojeździe pojawia się badge {N} tras pokazujący ile plików tras GPS jest dostępnych w bazie. Wcześniej user musiał klikać przez 3 poziomy folderów żeby to sprawdzić.

Dodano też nową kolumnę "Stron" w tabeli plików — pokazuje liczbę stron PDF.

Pracownicy — Data urodzenia

Dodana nowa kolumna w tabeli pracowników oraz pole w dialogu edycji/dodawania (tab "Dane osobowe"). Status pracownika prezentowany jest teraz przez animowaną kropkę (pulse + ping) — spójnie z resztą tabel w aplikacji.

Strona Tablica — wrapper Card

Strona "Tablica" otrzymała zewnętrzny Card z nagłówkiem "Tablica" — wewnątrz zachowano istniejącą zawartość "Zlecenia - Harmonogram". Teraz wszystkie strony dashboardu mają spójną strukturę.

Drobiazgi

  • Strona Komunikacja — usunięty zbędny opis pod nagłówkiem
  • Email-zlecenia — prawy panel podglądu ma sztywne 600px (czytelniejszy podgląd)
  • Mapa — aktywny przycisk "Ustawienia" ma czarne tło, "Styl mapy" w submenu
  • Strona Rozkład — klik "Zlecenia" zamyka "Kierowców" i odwrotnie (toggle ekskluzywny)
  • Strona Urlopy — spójny styl z innymi stronami (jeden Card główny)
  • Edytor dokumentów — block handles większe, znikają po 5s zamiast natychmiast, toolbar z flex-wrap (wszystkie ikony widoczne)
  • Park maszyn — usunięte naprzemienne kolorowanie wierszy (zebra striping)
  • Naprawiona literówka "In Planing" → "In Planning"
  • Status planned w "Szczegółach rekordu" pokazuje teraz label "In Planning" zamiast raw value

Suma: 6 commitów na dev, 5 migracji SQL, 21 plików zmienionych, 2 nowe pliki (ai-chat-context.jsx, route-files-summary/route.js).

Więcej artykułów

Release 20260510_01 — Matrix auto-spaces, BoxGrupy kolumn, mapa tras GPS, edycja statusów inline

Pierwszy release dnia: 3-warstwowa redundancja auto-tworzenia Matrix Space dla każdego nowego zlecenia (cron + Realtime + naprawa endpointu), 14 BoxGrup kolumn /zlecenia-baza spójnych z widokiem karty zlecenia, mapa MapLibre z auto-load tras dla pinnymi pojazdów w /trasy-gps, edycja statusów inline w Sheet (KLUCZ vs ETYKIETA + dziedziczenie koloru parent-a), Tree wg statusów głównych (podstatusy bez folderów), breadcrumb wg sidebara, IntegrationsPanel w ustawieniach, Plan TimeLine card, fix konwersji PDF→MD (unpdf + structured post-processing).

Czytaj więcej

Release 20260510_02 — refaktor UI dashboardu, akcje statusów, widoki kolumn

Drugi release dnia: refaktor UI 28 stron dashboardu (sidebar z motion layoutId, headers bez podtytułów, tabela trasy na DataTable29, MapControls, wszędzie spójne padding/borders). Parametry Logiki dostają trzy widoki (Tabela / Diagram / Akcje) z schemą akcji statusów (5 typów × 3 triggery × JSON config). Edycja klucza statusu z AlertDialog potwierdzającym + endpoint migracji DB. Nowy widoki kolumn w /zlecenia-baza (zapisz/wczytaj/usuń presety per-user). Edytowalne user-tabele w /tablica. Blokady ownerAccount w ustawieniach konta.

Czytaj więcej