Interaktywny projekt. Połączenie produkcyjne nie jest aktywne.Prezentowane zlecenia, kody, godziny i zdarzenia są przykładowe. Poniżej docelowe reguły wdrożenia.
Jeden transport przez cały proces
1 Zlecenie zapisaneRoman → dysk2 RealizacjaGPS + aktualizacja ETA3 DokumentySkany / oryginały4 Faktura i wysyłkaDMS → archiwum
Co aktualizuje Roman
Po trwałym zapisaniu zlecenia na dysku tworzy pozycję po stałym ID transportu. Dodaje pojazd, kierowcę, numer zlecenia, punkty trasy i warunki dokumentów.
Potwierdzony rozładunek zmienia etap. Zapisany dokument jest przypisywany do transportu i sprawdzany pod kątem kompletności. Niepewne dopasowanie trafia do wyjaśnienia.
Co 15 minut
Jeden proces na serwerze liczy ETA wyłącznie dla transportów w realizacji, do następnego niezakończonego punktu. Uwzględnia GPS, trasę ciężarową, postoje, czas kierowcy i przeprawy.
Przeglądarka odczytuje gotowy wynik. Kolejny telewizor nie uruchamia dodatkowych obliczeń. Przy braku danych pojawia się „Brak ETA”, a przeterminowany wynik jest oznaczony.
Dokumenty odblokowują rozliczenie
- Skany wystarczą: potwierdzony rozładunek + kompletny zestaw zapisanych skanów → „Do wystawienia”.
- Wymagane oryginały: do wystawienia dopiero po potwierdzeniu ich fizycznego otrzymania i kompletności.
- Niejasne warunki: „Do wyjaśnienia”; bez automatycznego przyjęcia zgody na skany.
- Faktura wystawiona: pozycja zostaje jako „Do wysłania”.
- Wysyłka potwierdzona: pozycja znika z tablicy. Historia pozostaje w archiwum, bez kasowania dokumentów.
Niezawodność
Trwała kolejka zdarzeń, ponawianie po awarii, unikalne event_id i wersja transportu zapobiegają duplikatom oraz cofnięciu statusu przez spóźnione zdarzenie.
Kontrakt techniczny i plan uruchomienia
Proponowany backend tablicy w istniejącym środowisku KRAFT. Roman i DMS komunikują się przez uwierzytelnione adaptery API, bez bezpośredniego współdzielenia baz.
POST /api/dispo/events — zapis zdarzenia z Roman / DMS
GET /api/dispo/board — gotowy widok dla telewizora
GET /api/dispo/health — wiek ostatniej synchronizacji
Zdarzenia:
order.saved · assignment.updated · stop.completed
documents.saved · originals.received · eta.updated
invoice.issued · invoice.sent · transport.cancelled
Identyfikacja: event_id + transport_id + version
Dowody: source_id + occurred_at + document_refs
Czas: ISO 8601 z UTC; wyświetlanie Europe/Warsaw
- Utworzyć projekcję transportów i API z sesją tylko do odczytu dla TV.
- Podłączyć trwały outbox Romana po zapisie pliku oraz zdarzenia z DMS.
- Uruchomić serwerowe zadanie ETA co 15 minut z blokadą równoległych uruchomień.
- Zaimportować otwarte transporty i porównać je z dokumentami źródłowymi.
- Przetestować drogę od maila do wysłanej faktury, retry, brak GPS i awarię sieci.
To kontrakt do wdrożenia, a nie potwierdzenie istniejących endpointów. Obecny projekt nie łączy się z danymi operacyjnymi.