Moduły wspierające — Magazyn, HR/Kadry, Flota

Przewodnik po trzech modułach wspierających procesy operacyjne: Magazyn materiałów i obiegu dokumentów, HR (Kadry) z ewidencją pracowników oraz Flota pojazdów serwisowych.

Wersja 1.1·Opublikowano: 2026-05-08
Konwencja: Każdy moduł posiada dedykowaną stronę z listą + DetailPanel (zakładki), kreator 4‑5 fazowy dla nowych rekordów oraz pełną integrację z obiegiem dokumentów (cloud storage, audit log).

Spis treści

  1. Magazyn materiałów i obieg dokumentów
  2. Partie FIFO i rezerwacje
  3. Dokumenty PZ / WZ / MM / INW
  4. Potwierdzenie odbioru podpisem (mobile)
  5. HR / Kadry — pracownicy, nieobecności, badania
  6. Flota pojazdów serwisowych
  7. Dokumenty, transfery, przejazdy

1 Magazyn materiałów i obieg dokumentów

Magazyny
Lista magazynow dane zanonimizowane.
Material detailPanel
Material w detailPanel dane zanonimizowane — zdjecia, dostawcy, partie FIFO.

Moduł Magazyn wspiera pełen obieg materiałów: od zakupu (PZ z faktury zakupowej lub zamówienia), przez transfery między magazynami (MM), aż po wydanie na protokół serwisowy (WZ) i fakturę końcową.

Docelowy łańcuch obiegu

Kosztorys → ZATWIERDZENIE → Zamówienie → PZ → MM do technika → WZ do protokołu → ZUŻYTY → Faktura → ZAFAKTUROWANY

Struktura magazynów

Typ magazynuPrzeznaczenieOdpowiedzialny
centralMagazyn centralny oddziału — zakupy hurtowe, zasoby strategiczneMagazynier / kierownik
technicianMagazyn technika — samochód/biurko; materiały „na trasie"Konkretny technik (responsible_user_id)
branchMagazyn oddziału — pośredni poziomKierownik oddziału

Każdy magazyn ma przypisany oddział (branch_id) — filtrowanie RBAC działa automatycznie. Techników nie widzą magazynów innych oddziałów.


2 Partie FIFO i rezerwacje

Tabela material_batches — śledzenie dostaw

Każde PZ tworzy partię materiału z unikalnymi danymi:

Konsumpcja FIFO przy potwierdzeniu WZ

Gdy technik wydaje materiał (potwierdzenie WZ), system konsumuje od najstarszej partii:

  1. SELECT batches WHERE material_id = ? AND remaining_quantity > 0 ORDER BY purchase_date ASC
  2. Dekrementacja remaining_quantity aż do pokrycia całej ilości
  3. Zapis do batch_consumptions — audit trail: który WZ zjadł którą partię
  4. Aktualizacja ceny pozycji WZ wg średniej ważonej (przy mieszanych partiach)
Korzyść biznesowa: Rachunek zysków i strat oblicza się precyzyjnie na podstawie rzeczywistych kosztów zakupu, a nie średniej „katalogowej".

Rezerwacje (material_reservations)

System automatycznie rezerwuje materiały przy zatwierdzeniu kosztorysu, aby zapobiec podwójnemu wydaniu:

ZdarzenieAkcja
Zatwierdzenie kosztorysu (klient akceptuje)reserveMaterials()warehouse_stock.reserved_quantity += qty, status active
Odrzucenie / anulowanie kosztorysureleaseReservation()reserved_quantity -= qty, status released
Potwierdzenie WZ z pozycji kosztorysuconsumeReservation() — status consumed

Przed zatwierdzeniem kosztorysu frontend wywołuje GET /api/cost-estimates/:id/check-availability. Jeśli brakuje materiałów, użytkownik widzi ostrzeżenie z listą braków.


3 Dokumenty PZ / WZ / MM / INW

Zamowienia
Zamowienia do dostawcow dane zanonimizowane.
Wyposazenie
Ewidencja wyposazenia dane zanonimizowane.
TypNazwa pełnaOpisAkcja bazodanowa
PZPrzyjęcie zewnętrznePrzyjęcie materiału od dostawcy (z faktury zakupu)+ stan magazynu, nowa partia
WZWydanie zewnętrzneWydanie do protokołu / klienta− stan, konsumpcja FIFO
MMMiędzymagazynoweTransfer między magazynami firmy− źródło, + cel
INWInwentaryzacjaKorekta stanu po spisie z natury± stan, protokół różnic
PRZMProtokół zużyciaMateriały instalacyjne rozliczane okresowo− stan technika

Przepływ dokumentu

draft → confirmed (stan magazynu się zmienia) → [optional: cancelled]

Dokument w statusie draft nie wpływa na stan. Dopiero confirmDocument aktualizuje warehouse_stock i tworzy/konsumuje partie.

Numeracja

Format: {TYP}-{ROK}-{NUMER_5_CYFR} — np. PZ-2026-00042. Numeracja per typ + rok (warehouse_document_sequence), zerowanie na przełomie roku.


4 Potwierdzenie odbioru podpisem (mobile)

Nowość 2026‑04‑17: Dokumenty MM tworzone z aplikacji mobilnej przy pobieraniu materiałów/wyposażenia do magazynu technika są potwierdzane podpisem odbiorcy. Podpis zapisywany jako base64 PNG w kolumnach recipient_signature, recipient_signed_at, recipient_name (migracja 222).

Flow w aplikacji mobilnej

  1. Technik w module „Wirtualny Magazyn" (/mobile/warehouse) wybiera zakładkę CAŁY STAN
  2. Wyszukuje materiał i klika przycisk POBIERZ
  3. Otwiera się Popup z nazwą materiału, docelowym magazynem i polem podpisu
  4. Technik podpisuje ekran palcem (canvas)
  5. Klika Potwierdź odbiór
  6. Backend tworzy dokument MM z polami:
  7. Toast: „Odebrano i potwierdzono podpisem"

Analogiczny mechanizm jak przy protokole konserwacji/naprawy — audyt każdego ruchu materiału z podpisem odbiorcy.


5 HR / Kadry — pracownicy, nieobecności, badania

Kadry lista
Kadry — lista pracownikow. dane osobowe zanonimizowane
Kadry detail
DetailPanel pracownika, 6 zakladek. dane osobowe zanonimizowane
Uzytkownicy
Uzytkownicy systemu — kolumna Kadry. dane osobowe zanonimizowane

Moduł HR zarządza wszystkimi pracownikami firmy niezależnie od tego, czy mają konto użytkownika w systemie (rola admin / client / demo może, ale nie musi być pracownikiem).

Architektura — Users vs Employees

Kluczowa separacja: employees = wszyscy pracownicy firmy (pełna kadra); users = konta logowania (subset). Powiązane przez users.employee_id.

Zakładki DetailPanel w module Kadry (6)

ZakładkaZawartość
Dane osoboweImię, nazwisko, PESEL, data urodzenia, kontakt, adres, zdjęcie ID‑photo (350x450)
Nieobecności20 typów wg polskiego Kodeksu Pracy (urlop wypoczynkowy, L4, opieka art.188, szkolenie, delegacja...)
CertyfikatySEP, UDT, manufacturer, BHP — analiza skanu przez AI (vision), ekstrakcja daty ważności
Dokumenty pracowniczeUpload skanów do cloud storage SerwisRun/Kadry/{Imię Nazwisko}/
Badania lekarskieTyp badania, data, data ważności, wynik
MetadaneUtworzono, zaktualizowano, kto

Typy zatrudnienia (employees.employment_type)

Zdjęcie pracownika

Przy uploadzie przez POST /api/employees/:id/photo serwer (sharp):

  1. Crop do proporcji dowodowych 350x450 z białym tłem
  2. Tworzy miniaturkę 150x150 → zapis do employees.avatar_base64
  3. Pełne zdjęcie na OneDrive: SerwisRun/Kadry/{firstName} {lastName}/{firstName}_{lastName}.jpg

Kreator pracownika (wizard 4‑fazowy)

Trasa: /hr/wizard. Fazy: Dane osobowe → Zatrudnienie → Kontakt i notatki → Podsumowanie. Navigation guard + draft saving (klucz hr w draftStore).


6 Flota pojazdów serwisowych

Flota lista
Flota pojazdow. numery rejestracyjne i dane zanonimizowane
Flota detail
DetailPanel pojazdu, 4 zakladki. dane zanonimizowane

Moduł Flota ewidencjonuje wszystkie pojazdy firmowe używane przez techników — z pełną historią przejazdów, dokumentów i przekazań.

Dane pojazdu (service_vehicles)

PoleOpis
registration_number / plate_numberNumer rejestracyjny
vinNumer VIN
typeTyp: van, bus, car, truck...
fuel_typepetrol / diesel / lpg / electric / hybrid
tank_capacityPojemność zbiornika (do kalkulacji tankowań)
branch_idOddział bazowy
assigned_user_idAktualnie przypisany technik
insurance_expiry_dateData wygaśnięcia OC/AC
next_inspection_dateData następnego przeglądu

Zakładki DetailPanel (4)

  1. Dane — rejestracja, VIN, typ, paliwo, ubezpieczenie, przegląd, oddział, technik
  2. Przejazdy — historia z vehicle_trips: data, start/koniec lokalizacji, kilometry, cel (powiązanie z konserwacją/zleceniem), koszt
  3. Dokumentyvehicle_documents: dowód rejestracyjny, polisa OC, badanie techniczne. Cloud storage: SerwisRun/Samochody/{nr_rejestracyjny}/
  4. Transferyvehicle_transfers: kto od kogo do kogo przekazał, kilometry przy przekazaniu, notatki o stanie

Integracja z aplikacją mobilną

Pojazd jest integralnym elementem aplikacji mobilnej technika:

System automatycznie koreluje każdy przejazd (vehicle_trips) z konkretną konserwacją/zleceniem serwisowym, co pozwala liczyć rzeczywisty koszt dojazdu na podstawie spalania pojazdu, a nie tylko stawki kilometrowej.

Kreator pojazdu (wizard 4‑fazowy)

Trasa: /fleet/wizard. Fazy: Dane pojazdu → Przypisanie → Dokumenty → Podsumowanie.


7 Dokumenty, transfery, przejazdy

Cloud storage — struktura folderów

ModułŚcieżka
Kadry (zdjęcia, skany umów)SerwisRun/Kadry/{Imię Nazwisko}/
Samochody (dokumenty)SerwisRun/Samochody/{nr_rejestracyjny}/
WyposażenieSerwisRun/Obiekty-Materiały/Wyposazenie/{kategoria}
MateriałySerwisRun/Obiekty-Materiały/Materialy/{kategoria}

Abstrakcja cloudStorage.service.ts przełącza między Google Drive, OneDrive lub S3 wg konfiguracji w Ustawieniach → Integracje.

Audit trail

Każda akcja CRUD w tych modułach loguje się do audit_logs przez HOF withAuditLog. Widok /audit-logs pokazuje pełną historię z możliwością filtrowania per encja, akcja, użytkownik.



D Dostawcy

Modul Dostawcy (/suppliers) ewidencjonuje dostawcow. Integracja z API MF (Biala Lista VAT) + Delta-Poznan.

Dostawcy lista
Dostawcy — lista. NIP i dane zanonimizowane
Dostawcy detail
DetailPanel dostawcy + badge statusu VAT z MF. dane zanonimizowane