Powrót do projektów
Rejestracja czasu pracy

System RCP

Kompletny system rejestracji czasu pracy łączący terminal tabletowy, czytnik RFID, backend Symfony, panel administracyjny i raportowanie.

Rola
Architektura, UX/UI, backend, embedded
Technologie
React Native, Symfony, ESP32
Urządzenia
Tablet, RFID, terminal embedded
Status
System rozwijany iteracyjnie
Terminal aktywny
Kompletny system rejestracji czasu pracy łączący terminal tabletowy, czytnik RFID, backend Symfony, panel administracyjny i raportowanie.
Terminal tabletowy oczekujący na wybór opcji przez pracownika.
RFID przez USB OTGOdczyt karty jako urządzenie HID
Tryb offlineLokalny zapis i późniejsza synchronizacja
Kontekst

Rejestracja czasu pracy bez rozbudowanego i kosztownego sprzętu

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.

Problem

Co powinien rozwiązywać dobry system RCP?

Terminal musi być szybki i jednoznaczny dla pracownika, ale jednocześnie odporny na problemy sieciowe i nieprawidłową kolejność zdarzeń.

01

Zbyt wiele kroków

Rejestracja podstawowego zdarzenia nie powinna wymagać logowania, wpisywania identyfikatora ani przechodzenia przez formularze.

02

Brak sieci

Chwilowa awaria Wi-Fi lub serwera nie może uniemożliwiać pracownikowi zarejestrowania rozpoczęcia pracy.

03

Niespójne zdarzenia

System musi wychwytywać wielokrotne rozpoczęcia pracy, zakończenie bez rozpoczęcia albo niewłaściwie zamkniętą przerwę.

04

Trudne raportowanie

Dane powinny być dostępne zarówno jako czytelne podsumowanie dnia, jak i raport miesięczny gotowy do dalszego przetwarzania.

Rozwiązanie

Jeden spójny ekosystem od karty pracownika do raportu miesięcznego

Każda warstwa systemu została zaprojektowana pod inne zadanie: terminal pod szybkość, API pod spójność, a panel administracyjny pod kontrolę i raportowanie.

Szybka rejestracja

Pracownik rejestruje rozpoczęcie pracy, zakończenie lub przerwę za pomocą karty RFID i jednego dotknięcia.

Spójność danych

Backend kontroluje kolejność zdarzeń i ogranicza możliwość zapisania nieprawidłowej sekwencji czasu pracy.

Praca offline

Brak połączenia z serwerem nie blokuje rejestracji. Zdarzenia są zapisywane lokalnie i synchronizowane później.

Czytelne raportowanie

Administrator otrzymuje dzienne i miesięczne zestawienia czasu pracy, przerw oraz nieobecności.

Terminal pracownika

Interfejs ograniczony do niezbędnych decyzji

Aplikacja pracuje w orientacji poziomej i została przygotowana z myślą o stałym stanowisku tabletowym obsługiwanym z niewielkiej odległości.

01

Odczyt karty RFID

Czytnik USB OTG działa jako klawiatura HID. Numer karty jest przechwytywany bez potrzeby ręcznego wpisywania danych.

02

Trzy podstawowe akcje

Po odczytaniu karty pracownik wybiera rozpoczęcie pracy, zakończenie pracy albo rozpoczęcie przerwy.

03

Zamrożony czas zdarzenia

Czas prezentowany podczas rejestracji jest przypisany do momentu wyboru akcji i nie zmienia się podczas komunikacji z API.

04

Automatyczny reset

Po zakończeniu operacji lub braku aktywności interfejs samoczynnie wraca do ekranu oczekiwania na kartę.

05

Lokalna kolejka zdarzeń

Niewysłane wpisy trafiają do lokalnej bazy SQLite i są ponawiane po odzyskaniu komunikacji z serwerem.

06

Potwierdzenie pracownika

Po prawidłowej rejestracji system wyświetla imię i nazwisko pracownika oraz rodzaj zapisanego zdarzenia.

07

Bilans godzin

Terminal może pobierać i prezentować bieżący bilans czasu pracy przypisany do konkretnego pracownika.

08

Obsługa błędów

Interfejs rozróżnia błędy połączenia, nieznaną kartę, nieprawidłową kolejność zdarzeń i problemy synchronizacji.

Architektura

Modułowa budowa umożliwiająca wymianę terminala

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.

IdentyfikacjaKarta RFIDUnikalny numer przypisany do pracownika
Warstwa urządzeniaTabletWybór akcji i zapis czasu zdarzenia
Warstwa aplikacyjnaAPI SymfonyWalidacja, zapis i obsługa pracowników
Dane i raportyPanel administratoraAnaliza, korekty i eksport miesięczny
Odporność na awarie

Brak połączenia nie zatrzymuje rejestracji

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.

01
Rejestracja lokalna

Karta, typ zdarzenia i czas trafiają do pamięci terminala.

02
Próba synchronizacji

Aplikacja ponawia wysłanie danych po odzyskaniu serwera.

03
Potwierdzenie zapisu

Po odpowiedzi API lokalna kopia zdarzenia zostaje usunięta.

TerminalSQLite
Synchronizacja
Symfony APIBaza centralna
Centralne zarządzanie

Panel administracyjny oparty na Symfony i EasyAdmin

Panel umożliwia zarządzanie zdarzeniami, pracownikami, nieobecnościami i raportami bez konieczności ingerowania w aplikację terminala.

Symfony + EasyAdmin

Jedno miejsce do kontroli całego systemu

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.

  • Rejestracja zdarzeń przez API REST
  • Walidacja kolejności rozpoczęć, zakończeń i przerw
  • Obsługa urlopów, nieobecności i zdarzeń administracyjnych
  • Filtrowanie zdarzeń według pracownika, daty i rodzaju
  • Dzienne podsumowanie rozpoczęcia, zakończenia i czasu przerw
  • Miesięczne raporty eksportowane do XLSX
Panel RCP
Kompletny system rejestracji czasu pracy łączący terminal tabletowy, czytnik RFID, backend Symfony, panel administracyjny i raportowanie.
Widok panelu zarządzania zdarzeniami czasu pracy i danymi pracowników.
Raportowanie

Od pojedynczego zdarzenia do miesięcznego rozliczenia

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

Raport miesięczny
Kompletny system rejestracji czasu pracy łączący terminal tabletowy, czytnik RFID, backend Symfony, panel administracyjny i raportowanie.
Zestawienie miesięczne godzin przepracowanych przez pracownika.

Podsumowanie dnia

Pierwsze rozpoczęcie, ostatnie zakończenie, czas pracy i łączny czas przerw.

Eksport XLSX

Miesięczne zestawienie przygotowane do dalszej analizy lub przekazania do rozliczenia.

Różne typy zdarzeń

Praca, przerwa, urlop płatny i bezpłatny, opieka nad dzieckiem, lekarz oraz pozostałe nieobecności.

Warstwy projektu

System rozwijany jako jeden spójny ekosystem

1
Warstwa 1

Terminal tabletowy

Aplikacja React Native zbudowana pod tablet pracujący poziomo, obsługująca zewnętrzny czytnik RFID podłączony przez USB OTG.

Wersja użytkowa
2
Warstwa 2

Backend i panel administratora

Aplikacja Symfony odpowiada za zapis zdarzeń, walidację, zarządzanie pracownikami oraz raportowanie czasu pracy.

Centralne zarządzanie
3
Warstwa 3

Terminal wbudowany

Alternatywny czytnik oparty na ESP32-PoE, ekranie dotykowym, RFID i lokalnym RTC, przeznaczony do pracy jako samodzielne urządzenie.

Rozwój sprzętowy
Rezultat

Własny system RCP bez uzależnienia od zamkniętej platformy

Modułowa architektura pozwala rozwijać interfejs terminala, urządzenia embedded, reguły biznesowe i raporty niezależnie, zachowując jedno centralne źródło danych.

Porozmawiajmy o projekcie