English עברית Українська Polski Русский

System ERP do harmonogramowania dla centrum edukacyjnego

Product & Systems Architect — Alex Shevchuk
Streszczenie: zastąpienie przestarzałego systemu opartego na Excelu nowoczesną aplikacją webową.
Rozpoczęcie prac: luty 2026.
Produkcja: od 1 września 2026.
Status: system działa stabilnie na produkcji, bez awarii, trwają prace nad nowymi funkcjami i dodatkowymi modułami.

Kontekst i problem

Po rozpoczęciu pracy w naukowo-edukacyjnym centrum fizyki i chemii odkryłem, że organizacja korzysta z ciężkiego systemu zbudowanego na bazie Excela. System stale się zawieszał, nie radził sobie pod obciążeniem, a codzienne zmiany operacyjne były wyjątkowo uciążliwe i podatne na błędy.

Skala obciążenia operacyjnego:
26 szkół partnerskich do 50 lekcji dziennie 105 grup uczniowskich specjalistyczne laboratoria częste zastępstwa nauczycieli, odwołania i przełożenia lekcji zamówienia sprzętu

Właśnie dlatego postanowiłem stworzyć system, który uczyniłby zarządzanie harmonogramem i zasobami bardziej niezawodnym i przewidywalnym. W czasie wolnym od pracy głównej opracowałem własny produkt — Scheduling System, a w połowie sierpnia, tuż przed rozpoczęciem nowego roku szkolnego, bezpłatnie wdrożyłem i skonfigurowałem dedykowaną kopię systemu dla centrum edukacyjnego, aby ułatwić kolegom codzienną pracę.

Doświadczenie w pracy z relacyjnymi bazami danych ukształtowało główną zasadę architektoniczną projektu: zmiany w harmonogramie i zasobach powinny być obsługiwane jak transakcje, a nie jak zwykła edycja tabel.

Kontrola spójności danych została przeniesiona na poziom bazy danych, historia zmian jest niezmienna dzięki Audit Log, a architektura pozwala bezpiecznie przywrócić stan harmonogramu na dowolny dzień.

Moja rola

Przegląd systemu

4
schematy bazy danych (campus / laboratory / notifications / settings)
31
tabel w schemacie bazy danych
43
funkcji PL/pgSQL — logika biznesowa w bazie danych
655
commitów w ciągu 9 miesięcy rozwoju
391
automatycznych testów regresyjnych przed każdym wdrożeniem
24/7
dostępność systemu produkcyjnego

System ERP do zarządzania harmonogramem i działalnością operacyjną:

Stos technologiczny:

PostgreSQL 16 PL/pgSQL Node.js + Express Vue 3 + PrimeVue (RTL) Docker · AWS · Cloudflare Tunnel

Struktura projektu:

Struktura projektu
Struktura repozytorium — system od początku zaprojektowany z wyraźnym podziałem aplikacji, logiki bazy danych i infrastruktury.

System w praktyce:

Telebim korytarzowy w pokoju nauczycielskim w budynku centrum
Telebim korytarzowy w pokoju nauczycielskim — na żywo, na ścianie centrum edukacyjnego.
Telebim korytarzowy dla uczniów
Telebim korytarzowy dla uczniów — na żywo, na ścianie centrum edukacyjnego.
Production monitoring
Production monitoring — system znajduje się pod stałym zewnętrznym monitoringiem dostępności. 100% uptime w ciągu ostatnich 30 dni; 99,995% od 1 września 2026 — jedyny incydent trwający 5 minut to planowany przestój podczas wdrażania nowej wersji (migracja bazy danych i restart kontenerów backend/frontend). Od tego czasu — bez awarii.
Email delivery infrastructure
Infrastruktura wysyłki e-maili — powiadomienia są wysyłane przez zweryfikowaną domenę za pomocą transakcyjnego dostawcy poczty (Resend), co zapewnia niezawodne doręczanie i poprawną autentykację (SPF/DKIM).

Interfejs systemu

Kliknij dowolny zrzut ekranu, aby otworzyć go w pełnym rozmiarze.

Dzienny wykres Gantta
Dzienny wykres Gantta — aktualny harmonogram dnia w podziale na sale. Kolorowe oznaczenia przedmiotów, podświetlenie zastępstw, wskaźnik bieżącego czasu.
Szablon podstawowy
Szablon roczny (Basic Schedule) — źródło prawdy. Zmiany z niego są bezpiecznie propagowane do wygenerowanego harmonogramu rocznego za pomocą dwufazowego algorytmu.
Panel nauczyciela
Panel nauczyciela — osobisty pulpit: najbliższe lekcje, zgłoszenia sprzętu, historia zastępstw i grafik pracy.
Panel administratora
Panel administratora — centralne „jedno okienko". Nauczyciele wyłącznie tworzą zgłoszenia, administratorzy je rozpatrują, korygują i wprowadzają zmiany.
Panel laborantów
Panel laborantów — operacyjny widok: zamówienia sprzętu i notatki na wybrany dzień.
Audit Log
Audit Log — w pełni niezmienna historia wszystkich istotnych działań. Nawet superadministrator nie może zmienić ani usunąć wpisów.
Reguły wysyłki powiadomień e-mail
Reguły wysyłki powiadomień e-mail — komu o czym informować. Każdy typ zdarzenia (nowe zgłoszenie, zatwierdzenie, zamówienie sprzętu, zastępstwo, konserwacja serwera...) można skierować niezależnie do wybranych ról i uczestników zdarzenia (autor zgłoszenia, nauczyciel lekcji, zastępca, nauczyciel prowadzący) — konfigurowane na ekranie „Control Panel", z globalnym wyłącznikiem do natychmiastowego wstrzymania całej wysyłki.
Rzeczywista skrzynka pocztowa systemu
Rzeczywista skrzynka pocztowa systemu — przychodzące powiadomienia same sortują się według typu zdarzenia (zamówienie sprzętu, odwołanie lekcji, zmiana sali, zastępstwo...) do osobnych folderów, każdy z własnym adresem nadawcy.
E-mail z potwierdzeniem zamówienia sprzętu
Potwierdzenie zamówienia sprzętu — z kodami pozycji i bezpośrednimi linkami do biblioteki materiałów Hemda.
Tablica dla uczniów
Tablica dla uczniów — publiczny ekran z bieżącym harmonogramem.

Kultura inżynierska — kod i dokumentacja

Jedna z kluczowych zasad projektu: logika i decyzje są wyjaśnione bezpośrednio w kodzie — nie tylko co robi dana funkcja, ale też dlaczego jest potrzebna i co się zepsuje, jeśli naruszy się dany niezmiennik.

1. Wyraźny podział struktury i logiki biznesowej

Komentarze w schema.sql
schema.sql — jasna zasada: tu znajduje się wyłącznie struktura. Logika biznesowa mieszka w plikach modułowych.

2. Dobór sal z jawnie zapisanymi regułami biznesowymi

Funkcja _find_room
campus._find_room() — reguły priorytetów sal dla fizyki i chemii są udokumentowane i zakodowane wprost w zapytaniu.
Nagłówek year_schedule.sql
year_schedule.sql — w nagłówku pliku wyjaśniono przeznaczenie każdej kluczowej funkcji oraz przepływ freeze / unfreeze dnia.

3. Kontrola jakości i weryfikacja niezmienników

391 automatycznych testów regresyjnych (warstwy API i bazy danych) uruchamianych przed każdym wdrożeniem — obejmujących przepływy zatwierdzania zgłoszeń, zastępstwa nauczycieli, mechanikę zamrażania/wycofywania dnia, zapobieganie konfliktom harmonogramu (EXCLUDE USING GIST), zamówienia sprzętu oraz macierz reguł powiadomień.

4. Dyscyplina wdrożeń i eksploatacji

Każde z ~20 wdrożeń na produkcję w ciągu 9 miesięcy przechodzi przez ten sam protokół: próba migracji na świeżej kopii bazy produkcyjnej, obrazy Docker otagowane :rollback przed przebudową, backup tuż przed nałożeniem zmian i pisemny dziennik wdrożenia na serwerze. Rzeczywiste okno przełączenia kontenerów to 13–55 sekund.

Plan odzyskiwania po całkowitej awarii nie jest tylko teorią: pełny cykl (usunięcie wolumenu → czysta inicjalizacja od zera → przywrócenie prawdziwego zrzutu produkcyjnego do tymczasowej bazy) został przeprowadzony od początku do końca, a kluczowe tabele (pracownicy, lekcje, zgłoszenia, uprawnienia) zostały zweryfikowane wiersz po wierszu względem żywej bazy.

5. Wdrażanie i zarządzanie zmianą

Aby przejście ze starego Excela przebiegło sprawnie, opracowałem stopniową strategię wdrożenia:

Rezultaty