1. O systemie ERP Scheduling System
ERP Scheduling System został zbudowany dla centrów edukacyjnych
STEM, które oferują pogłębioną naukę określonych przedmiotów (fizyki i/lub chemii) uczniom z wielu szkół.
Centra takie jak ten stoją przed specyficznym wyzwaniem harmonogramowania — dni i godziny zajęć muszą być
skoordynowane ze wszystkimi szkołami partnerskimi, których uczniowie tworzą daną grupę.
Aplikacja ułatwia różnym rolom personelu — administratorom, nauczycielom, asystentom laboratoryjnym —
zarządzanie dziesiątkami procesów operacyjnych: od koordynacji ze szkołami partnerskimi po przydzielanie
laboratoriów i sal na podstawie sprzętu zamówionego przez nauczycieli. Daje kierownictwu centrum
możliwość zarządzania obciążeniem nauczycieli (łączny czas pracy, godziny nauczania, liczebność grup) i
podejmowania różnych decyzji operacyjnych. System zbiera również, przetwarza i analizuje wszystkie dane
statystyczne dotyczące działalności centrum.
W takich centrach harmonogram nigdy nie jest statyczny. Zmienia się codziennie — przełożenia zajęć,
zastępstwa, odwołania.
Podstawowym zadaniem Scheduling System jest uczynienie
zarządzania harmonogramem i zasobami centrum przejrzystym, intuicyjnym i łatwym w obsłudze.
Kluczowe możliwości
Gwarancje techniczne
Niezmienne
dane
Atomowe
transakcje
Granularne
uprawnienia dostępu
Token dostępu
z auto-wylogowaniem
Ochrona przed konfliktami
na poziomie bazy danych
Zero Trust
Cloudflare Tunnel
2. Kto korzysta z systemu
System ma osiem ról. Jednemu pracownikowi można przypisać więcej niż jedną rolę jednocześnie.
| Rola |
Kim jest |
Co robi |
| Super Admin |
Lider techniczny |
Pełny dostęp. Zarządza danymi referencyjnymi, personelem i ustawieniami globalnymi. |
| Admin |
Dowolny pracownik z uprawnieniami administratora — także jako rola dodatkowa |
Przegląda przychodzące wnioski o zmianę harmonogramu, wyjaśnia szczegóły i je zatwierdza.
Jedyna rola, która faktycznie wprowadza zmiany w danych — zatwierdza lub odrzuca. |
| Nauczyciel |
Prowadzący zajęcia |
Inicjuje zmiany w harmonogramie: przełożenia, odwołania, zastępstwa, zamówienia sprzętu.
Wszystko odbywa się przez wniosek do administratora — nauczyciele nigdy nie edytują danych
bezpośrednio. |
| Asystent laboratoryjny |
Pracownik laboratorium |
Widzi listę nadchodzących lekcji z zamówionym sprzętem. Przygotowuje i dostarcza zestawy.
Nigdy nie tworzy ani nie edytuje zamówień — tylko je realizuje. |
| Dyrektor |
Dyrektor centrum |
Pełny dostęp do odczytu harmonogramu i raportów za dowolny okres. Zarządza obciążeniem
nauczycieli i przydziela zastępstwa. Może też prowadzić lekcje (jeśli przypisany także jako
nauczyciel). |
| Wicedyrektor |
Zastępca dyrektora ds. dydaktycznych |
Dostęp do odczytu harmonogramu i raportów nauczycieli swojego przedmiotu. Zarządza
obciążeniem nauczycieli i przydziela zastępstwa. Może też prowadzić lekcje (jeśli przypisany
także jako nauczyciel).
|
| Sekretarz |
Sekretarz / administrator biura |
Tylko odczyt: pełny harmonogram, wszystkie raporty, dowolny okres. Nie może wprowadzać
zmian. |
| Koordynator centrum |
Pracownik centrum |
Obsługuje komunikację ze szkołami w imieniu centrum. Wspiera szkoły partnerskie, koordynuje
logistykę.
|
Uprawnienia dostępu są konfigurowane granularnie — nie tylko według całej roli, ale
według pojedynczych akcji na konkretnych ekranach (na przykład "otwórz dzień do edycji" lub
"przydziel zastępstwo nauczyciela" można nadać dyrektorowi i wicedyrektorowi oddzielnie od pełnego
dostępu administratora). Pozwala to na precyzyjne, niskoryzykowne rozszerzanie uprawnień.
3. Główne procesy
3.1 Szablon roczny i propagacja
Harmonogram ma dwa poziomy. Poziom górny to roczny szablon tygodniowy: standardowe obciążenie
każdego nauczyciela i grupy. Poziom dolny to rzeczywisty harmonogram tydzień po tygodniu na cały
rok szkolny, wygenerowany na podstawie tego szablonu.
1Administrator edytuje
szablon — zmienia nauczyciela, godzinę lub dzień slotu szablonu.
2System propaguje
zmianę — w ciągu kilku sekund aktualizuje tylko dotknięte tygodnie i sloty: zmienione
są aktualizowane, nowe dodawane, odwołane usuwane. Cały harmonogram nigdy nie jest przebudowywany
od zera.
3Istniejąca praca nie jest
tracona — wszystko, co już zgromadzono wokół lekcji, których propagacja nie dotknęła —
zamówienia sprzętu, komentarze, wnioski nauczycieli — pozostaje bez zmian.
Sala na lekcję nie jest wybierana dowolnie — jest dopasowana do rzeczywistej potrzeby: dygestorium,
zlew, możliwość zaciemnienia lub już zamówiony sprzęt.
Lekcja usunięta jednorazowym odwołaniem pozostaje w harmonogramie przekreślona — nauczyciel i
uczniowie widzą, że tego dnia lekcji nie będzie. Jeśli jednak lekcję usunęła przebudowa samego
szablonu (zmiana slotu, skrócenie roku szkolnego) — przechodzi do osobnego statusu
archived: całkowicie znika ze wszystkich harmonogramów i widoków, więc do końca roku
nie gromadzą się „lekcje-widma", ale fizycznie pozostaje w tabeli — klucze obce z historii
wniosków i audytu nie pozwalają jej usunąć.
3.2 Zmiany w harmonogramie
Harmonogram jest budowany na cały rok szkolny, ale codzienne korekty pojawiają się na bieżąco.
System prowadzi je jasną ścieżką:
1Nauczyciel składa
wniosek — określa dokładnie, co ma się zmienić: przełożenie lekcji, odwołanie jej,
korekta zamówienia sprzętu lub zmiana sali. Dyrektorzy i wicedyrektorzy, gdy również uczą,
korzystają z tego samego systemu co zwykli nauczyciele.
2System sprawdza
konflikty — w momencie złożenia wniosku pokazuje, czy sala lub nauczyciel są już
zajęci w danym terminie. Nauczyciel widzi ostrzeżenie i może skorygować wniosek albo i tak go
złożyć z oznaczonym konfliktem — administrator rozwiązuje go wtedy ręcznie.
3Administrator przegląda
wniosek — widzi kolejkę przychodzących wniosków, w razie potrzeby koryguje szczegóły z
nauczycielem i zatwierdza zmianę.
4Harmonogram się
aktualizuje — po każdej zatwierdzonej zmianie harmonogram natychmiast się aktualizuje i
wszyscy od razu widzą aktualny stan.
5Lekcja zostaje
zakończona — system automatycznie oznacza ją jako zakończoną po upływie czasu
zakończenia lekcji.
Pełna historia zmian jest przechowywana automatycznie — administrator zawsze może zobaczyć, jak
wyglądał harmonogram przed zmianą i kto jej dokonał.
Salę lekcji można zmienić na trzy sposoby: przypisać bezpośrednio, wyprzeć lekcję z zajętej sali
(system sam dobiera wypartej lekcji nową salę, a jeśli żadna nie jest wolna — zostawia lekcję bez
sali, nie blokując akcji) albo zamienić sale między dwiema lekcjami. E-mail o zmianie sali nie
wychodzi przy każdym ruchu wewnątrz sesji edycji, tylko raz — przy zamknięciu dnia — i tylko do
osób, u których sala rzeczywiście się zmieniła.
3.3 Przygotowanie sprzętu
1Nauczyciel dodaje sprzęt do
wniosku o lekcję — składając wniosek o nową lub zmienioną lekcję, wybiera potrzebne
doświadczenie z katalogu oraz liczbę zestawów: do demonstracji lub do pracy własnej uczniów. Cały
wniosek — lekcja i sprzęt — trafia do administratora razem.
2Administrator zatwierdza
wniosek — przegląda lekcję i sprzęt razem i podejmuje jedną decyzję. Po zatwierdzeniu
zamówienie sprzętu jest automatycznie powiązane z lekcją.
3Asystent laboratoryjny widzi
codzienne podsumowanie — jego interfejs pokazuje nadchodzące zamówienia: co
przygotować, ile zestawów, dla której klasy i do której sali.
4Asystent laboratoryjny kompletuje
i dostarcza sprzęt — składa zestawy dla każdej lekcji na podstawie danych
systemu.
5Zamówienie zamyka się
automatycznie po lekcji — system oznacza je jako zakończone po zakończeniu
lekcji.
Fizyczne śledzenie zapasów i automatyczna rezerwacja komponentów są planowane jako osobny moduł na
późniejszym etapie.
3.4 Zastępstwa nauczycieli
Jeśli nauczyciel nie może poprowadzić lekcji, administrator, dyrektor lub wicedyrektor wybiera
zastępstwo z listy nauczycieli dostępnych w danym czasie o odpowiednim profilu przedmiotowym. Lekcja
natychmiast pokazuje się jako zastępstwo wszędzie — w harmonogramie i na wyświetlaczach
korytarzowych.
Lista kandydatów jest generowana automatycznie — system pokazuje tylko tych nauczycieli, którzy
jednocześnie: pracują w centrum tego dnia i o tej godzinie (na podstawie grafiku pracy nauczyciela),
są uprawnieni do nauczania przedmiotu na tym poziomie klasy i nie są już zajęci inną lekcją.
Jeśli żadne odpowiednie zastępstwo nie jest dostępne — lekcja zostaje oznaczona specjalnym
systemowym symbolem zastępczym „oczekuje na odwołanie", a dla administratora automatycznie
powstaje wniosek o odwołanie lekcji. Jeśli później znajdzie się rzeczywisty zastępca, wniosek
wycofuje się sam, bez udziału administratora.
3.5 Wypełnianie systemu danymi (przepływ danych)
Dane są wprowadzane w ścisłej kolejności — każdy krok zależy od poprzedniego.
- 11 tabel — pierwotne wypełnienie systemu (bootstrap)
- 2 tabele — katalogi doświadczeń (fizyka i chemia)
- 2 tabele — zgłoszenia i wątki komentarzy
- 4 tabele — blokady i migawki dnia
- 2 tabele — historia i dzienniki
- 1 tabela — uprawnienia dostępu
- 4 tabele — kolejka e-maili, reguły, adresy nadawców, status dostarczenia
- 1 tabela — ustawienia systemu
- 2 tabele — kalendarz roku szkolnego
- 2 tabele — dane kadrowe
Wszystkie identyfikatory tabel są stałe i nigdy się nie zmieniają przy ponownej instalacji ani
przywracaniu z kopii zapasowej. Gwarantuje to, że każde odwołanie między tabelami pozostaje
prawidłowe na każdym etapie.
4. Z czego zbudowany jest system
System składa się z kilku niezależnych komponentów, z których każdy odpowiada za swoją
część:
| Komponent |
Co robi |
| Baza danych |
Przechowuje wszystkie dane i egzekwuje każdą regułę: walidację, blokady, historię zmian |
| Serwer API |
Przyjmuje żądania, sprawdza, kto ma prawo co zrobić, i przekazuje polecenia do bazy danych |
| Interfejs webowy |
Scheduling System, w całości po hebrajsku (RTL) |
| Wyświetlacze korytarzowe |
Dedykowane ekrany na korytarzach centrum — bieżący harmonogram dnia dla nauczycieli i
uproszczona wersja dla uczniów, bez osobistego logowania (uwierzytelnianie za pomocą statycznego
klucza urządzenia) |
| Powiadomienia |
Potok zdarzeniowy: każda akcja (wniosek złożony/zatwierdzony/odrzucony, zamówienie sprzętu,
zastępstwo nauczyciela, konserwacja serwera) zapisuje zdarzenie do kolejki w tej samej
transakcji — nieudany zapis nigdy nie blokuje samej akcji. Proces w tle wyznacza odbiorców na
podstawie roli, przedmiotu i uczestników zdarzenia z tabeli reguł, renderuje wiadomość i
wysyła ją przez transakcyjnego dostawcę poczty — z automatycznymi ponowieniami i wyłącznikiem
po stronie administratora. Komunikatory (Telegram, WhatsApp) pozostają możliwym kierunkiem
rozwoju. |
| Infrastruktura |
Wdrożona w kontenerach Docker na serwerze AWS, z automatycznymi codziennymi kopiami
zapasowymi bazy danych |
5. Niezawodność i bezpieczeństwo
- Każdy użytkownik otrzymuje token dostępu po zalogowaniu. Token jest ważny 2
godziny (automatyczne wylogowanie po 30 minutach bezczynności) i zawiera jego rolę. Bez ważnego
tokenu nie ma dostępu — bez wyjątków.
- Każda reguła jest egzekwowana na poziomie bazy danych — nie da się ich obejść przez
interfejs.
- Backend łączy się z bazą pod osobną, okrojoną rolą: ma fizycznie odebrane prawa do
bezpośredniego
INSERT/DELETE w tabelach lekcji, dzienników i sesji
edycji — każda zmiana harmonogramu jest możliwa tylko przez funkcje składowane z jawnie
podwyższonymi uprawnieniami (SECURITY DEFINER).
- Historii zmian nie można zmienić ani usunąć — przez żadnego użytkownika, w żadnej roli.
Gwarantuje to pełną przejrzystość każdego działania w systemie.
- System automatycznie blokuje konflikty w harmonogramie.
- Dostęp do internetu jest zaprojektowany na zasadzie Zero Trust — przez
Cloudflare Tunnel.
- 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ń.