Zbyt wiele kroków
Rejestracja podstawowego zdarzenia nie powinna wymagać logowania, wpisywania identyfikatora ani przechodzenia przez formularze.
Kompletny system rejestracji czasu pracy łączący terminal tabletowy, czytnik RFID, backend Symfony, panel administracyjny i raportowanie.

System powstał jako alternatywa dla zamkniętych terminali RCP, których funkcjonalność, wygląd i integracje są trudne do dostosowania do rzeczywistych procesów firmy.
Projekt obejmuje zarówno prosty interfejs używany codziennie przez pracowników, jak i zaplecze administracyjne służące do kontroli zdarzeń, korekt i raportowania.
Terminal musi być szybki i jednoznaczny dla pracownika, ale jednocześnie odporny na problemy sieciowe i nieprawidłową kolejność zdarzeń.
Rejestracja podstawowego zdarzenia nie powinna wymagać logowania, wpisywania identyfikatora ani przechodzenia przez formularze.
Chwilowa awaria Wi-Fi lub serwera nie może uniemożliwiać pracownikowi zarejestrowania rozpoczęcia pracy.
System musi wychwytywać wielokrotne rozpoczęcia pracy, zakończenie bez rozpoczęcia albo niewłaściwie zamkniętą przerwę.
Dane powinny być dostępne zarówno jako czytelne podsumowanie dnia, jak i raport miesięczny gotowy do dalszego przetwarzania.
Każda warstwa systemu została zaprojektowana pod inne zadanie: terminal pod szybkość, API pod spójność, a panel administracyjny pod kontrolę i raportowanie.
Pracownik rejestruje rozpoczęcie pracy, zakończenie lub przerwę za pomocą karty RFID i jednego dotknięcia.
Backend kontroluje kolejność zdarzeń i ogranicza możliwość zapisania nieprawidłowej sekwencji czasu pracy.
Brak połączenia z serwerem nie blokuje rejestracji. Zdarzenia są zapisywane lokalnie i synchronizowane później.
Administrator otrzymuje dzienne i miesięczne zestawienia czasu pracy, przerw oraz nieobecności.
Aplikacja pracuje w orientacji poziomej i została przygotowana z myślą o stałym stanowisku tabletowym obsługiwanym z niewielkiej odległości.
Czytnik USB OTG działa jako klawiatura HID. Numer karty jest przechwytywany bez potrzeby ręcznego wpisywania danych.
Po odczytaniu karty pracownik wybiera rozpoczęcie pracy, zakończenie pracy albo rozpoczęcie przerwy.
Czas prezentowany podczas rejestracji jest przypisany do momentu wyboru akcji i nie zmienia się podczas komunikacji z API.
Po zakończeniu operacji lub braku aktywności interfejs samoczynnie wraca do ekranu oczekiwania na kartę.
Niewysłane wpisy trafiają do lokalnej bazy SQLite i są ponawiane po odzyskaniu komunikacji z serwerem.
Po prawidłowej rejestracji system wyświetla imię i nazwisko pracownika oraz rodzaj zapisanego zdarzenia.
Terminal może pobierać i prezentować bieżący bilans czasu pracy przypisany do konkretnego pracownika.
Interfejs rozróżnia błędy połączenia, nieznaną kartę, nieprawidłową kolejność zdarzeń i problemy synchronizacji.
Tablet czy dowolny inny terminal korzystają z tej samej logiki biznesowej po stronie serwera. Warstwa urządzenia może być rozwijana niezależnie od backendu.
Terminal zapisuje niewysłane zdarzenie w lokalnej bazie SQLite. Po odzyskaniu komunikacji kolejka jest przetwarzana ponownie, a potwierdzone wpisy są usuwane z pamięci urządzenia.
Karta, typ zdarzenia i czas trafiają do pamięci terminala.
Aplikacja ponawia wysłanie danych po odzyskaniu serwera.
Po odpowiedzi API lokalna kopia zdarzenia zostaje usunięta.
Panel umożliwia zarządzanie zdarzeniami, pracownikami, nieobecnościami i raportami bez konieczności ingerowania w aplikację terminala.
Administrator może przeglądać pełną historię zdarzeń, filtrować ją według pracownika i daty, poprawiać błędne wpisy oraz generować zestawienia potrzebne do rozliczenia czasu pracy.

Dane są agregowane do dziennych podsumowań i raportów miesięcznych, z uwzględnieniem czasu pracy, przerw i zdarzeń nieobecności.

Pierwsze rozpoczęcie, ostatnie zakończenie, czas pracy i łączny czas przerw.
Miesięczne zestawienie przygotowane do dalszej analizy lub przekazania do rozliczenia.
Praca, przerwa, urlop płatny i bezpłatny, opieka nad dzieckiem, lekarz oraz pozostałe nieobecności.
Aplikacja React Native zbudowana pod tablet pracujący poziomo, obsługująca zewnętrzny czytnik RFID podłączony przez USB OTG.
Wersja użytkowaAplikacja Symfony odpowiada za zapis zdarzeń, walidację, zarządzanie pracownikami oraz raportowanie czasu pracy.
Centralne zarządzanieAlternatywny czytnik oparty na ESP32-PoE, ekranie dotykowym, RFID i lokalnym RTC, przeznaczony do pracy jako samodzielne urządzenie.
Rozwój sprzętowy