const HTML_PAGE = ` RCRiE CMMS | Enterprise V5
Synchronizacja z Core...

CMMS Core

[!] Prace Serwisowe — dostęp tylko dla ADMIN
Pierwsze uruchomienie
Baza nie ma jeszcze administratora.
Tryb Serwisowy Włączony
Aktywne AwarieWymagana weryfikacja.
OPERATIONS CENTER

Dobry wieczór, .

System pokazuje teraz rzeczy, które wymagają działania — awarie, przeglądy, części i telemetrię.

Otwarte zgłoszenia
Przeglądy do wykonania
próg 200 h
Niski stan magazynu
części poniżej minimum
Węzły offline
Meshtastic
Awarie / 30 dni
flota
Koszt miesiąca
serwis + części

Co wymaga działania

Priorytety liczone automatycznie.

Brak pilnych działań. Można pić kawę.

Najbliższe przeglądy

200 h
Brak danych.

Magazyn

Wszystkie stany powyżej minimum.
SERVICE OPERATIONS

Kolejka serwisowa

Od zgłoszenia do zamknięcia — z priorytetem, osobą odpowiedzialną, częściami i kosztami.

Zgłoszone
Przyjęte
W trakcie
Oczekuje
Zamknięte / mies.
Brak zgłoszeń spełniających filtr.
zaznaczonych
Brak sprzętu w bazie.
AUTORYZOWANYEXECUTIVE CONTROL

Panel Prezesa

Przekrojowy stan floty, awaryjność, wykorzystanie urządzeń i ostatnie zmiany operacyjne.

Ostatnia synchronizacja
Drukarki
Drony
Sprawne
Serwis
Awarie
Aw. 7 dni
Aw. 30 dni
Do 200 h

Drukarki 3D

Przebieg, pozostały limit 200 h i awaryjność.

AWARIA = status / historia
SprzętStan200 h7D30DMies.ALLOstatnia zmiana
Brak drukarek w bazie.

Drony UAV

SprzętStanKategoriaBateriaNalot7D30DALL
Brak dronów w bazie.

Ostatnie zmiany statusów

MAX 50
Brak zmian statusów.

Sieć Mesh

MQTT
Brak węzłów w bazie.
ESC
Brak wyników.
DANE LOGOWANIA

Wiadomość SMS dla użytkownika

PIN nie jest przechowywany jawnie. Dla istniejącego konta wpisz PIN ręcznie; przy nowym koncie system może uzupełnić go automatycznie.

Użytkownik
Rola
Moduły
APLIKACJA RCRiE CMMS

Dodaj system do ekranu głównego

Chrome udostępnia instalację automatyczną.
Kliknij przycisk poniżej, a następnie potwierdź instalację.
1
Otwórz stronę w Chrome
2
Kliknij trzy kropki ⋮ w prawym górnym rogu Chrome
Wybierz „Zainstaluj aplikację” albo „Dodaj do ekranu głównego”.
3
Potwierdź instalację
Po instalacji RCRiE CMMS będzie działać jak osobna aplikacja.

Pierwsza konfiguracja

UTWÓRZ PIERWSZEGO ADMINISTRATORA · V5

Kod inicjalizacji ustawiasz w Cloud Functions jako BOOTSTRAP_SECRET. Nie wpisuj go do kodu strony.

Security Audit

LOGOWANIA · BLOKADY · ZMIANY UPRAWNIEŃ
Brak zapisów.

Konfiguracja Core

Akcenty Wizualne

Meshtastic (MQTT)

Tryb Serwisowy

Blokada logowania
Po włączeniu zalogować może się wyłącznie ADMIN.

Eksport Danych (CSV)

Bezpieczeństwo V5

Firebase Custom Auth · RBAC · brute-force lockout · audit
SERVER RBAC

Dodaj Drukarkę

Dodaj Drona

Live MQTT Debugger

Dodaj Węzeł Mesh

Magazyn

Stany, minima, ceny i części użyte w serwisie.

Brak części.

Raport Serwisowy:

Łącznie:

Logi:

Brak Danych.

Filament / Materiał

Aktualnie:

Konta i Uprawnienia

Nowy Profil

Części użyte
Zdjęcie zgłoszenia
Zdjęcie zgłoszenia
PREVENTIVE MAINTENANCE

h · następny przegląd h
Wykonuje:

Edycja części

MAG-

Stan: szt.

Zatwierdzenie Sali

Weryfikacja Sprzętu

Zgłoszenie Usterki

Status:
Podgląd zdjęcia awarii

Przyjęto

`; export default { async fetch(request, env, ctx) { const url = new URL(request.url); // 1. OBSŁUGA ENDPOINTÓW API (/api/*) if (url.pathname.startsWith('/api/')) { const headers = { 'Content-Type': 'application/json', 'Access-Control-Allow-Origin': '*', 'Access-Control-Allow-Methods': 'GET, POST, OPTIONS', 'Access-Control-Allow-Headers': 'Content-Type, Authorization' }; if (request.method === 'OPTIONS') { return new Response(null, { headers }); } // Zwrot stanu systemu i listy użytkowników do formularza logowania if (url.pathname === '/api/system-state') { return new Response(JSON.stringify({ hasUsers: true, maintenanceMode: false, users: [ { id: 1, name: "Administrator", role: "ADMIN", active: true }, { id: 2, name: "Serwisant", role: "SERWISANT", active: true }, { id: 3, name: "Edukator", role: "EDUKATOR", active: true } ] }), { status: 200, headers }); } // Endpoint logowania if (url.pathname === '/api/login') { const body = await request.json().catch(() => ({})); return new Response(JSON.stringify({ ok: true, sessionToken: "worker-session-token", user: { id: body.userId || 1, name: body.userId == 1 ? "Administrator" : "Użytkownik", role: body.userId == 1 ? "ADMIN" : "SERWISANT" } }), { status: 200, headers }); } return new Response(JSON.stringify({ error: "Nieznany endpoint" }), { status: 404, headers }); } // 2. SERWOWANIE STRONY HTML DLA POZOSTAŁYCH ZAPYTAŃ return new Response(HTML_PAGE, { headers: { 'Content-Type': 'text/html; charset=utf-8' } }); } };