Dokumentace
Executive Summary
Audit CompletedAplikace Profily Linky je moderní webová aplikace pro správu výrobních linek v oblasti gumárenství. Podporuje 4 nezávislé výrobní linky (workspaces) s jednotným uživatelským rozhraním.
Výrobní linky (Workspaces)
| Linka | Kód | Barva | Materiálů | Operátoři | Status |
|---|---|---|---|---|---|
| 🟢 UHF | uhf |
Zelená (#10b981) | 10 položek | Doubek, Matýsek | Aktivní |
| 🟡 LCM | lcm |
Oranžová (#f59e0b) | 10 položek | Dalibor, Radek | Aktivní |
| 🟣 PVC | pvc |
Fialová (#8b5cf6) | 10 položek | Zdenek, Pitbull | Aktivní |
| 🩷 PVC 2 | pvc2 |
Růžová (#ec4899) | 10 položek | Paleček, Michal | Aktivní |
Systémová architektura
Moderní architektura┌─────────────────────────────────────────────────────────────────────────┐ │ PROFILY LINKY APPLICATION │ │ (React 19 + TypeScript) │ ├─────────────────────────────────────────────────────────────────────────┤ │ │ │ ┌──────────────────── WORKSPACE LAYER ──────────────────────────┐ │ │ │ │ │ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ │ │ UHF │ │ LCM │ │ PVC │ │ PVC 2 │ │ │ │ │ │ 🟢 │ │ 🟡 │ │ 🟣 │ │ 🩷 │ │ │ │ │ └────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘ │ │ │ │ │ │ │ │ │ │ │ │ └──────────────┴──────────────┴──────────────┘ │ │ │ │ │ │ │ │ │ Zustand Stores (UI state only) │ │ │ │ TanStack Query (Firebase real-time) │ │ │ │ │ │ │ └──────────────────────────────────────────────────────────────────┘ │ │ │ │ ┌──────────────────── FEATURE LAYER ───────────────────────────┐ │ │ │ │ │ │ │ Dashboard │ Směsi │ Odpady │ Výroba │ Vývoj │ Inventura │ │ │ │ Plánování │ Statistiky │ Historie │ Nastavení │ │ │ │ Multi-Dashboard (Admin only) │ WorkspaceSelector │ │ │ │ │ │ │ └──────────────────────────────────────────────────────────────────┘ │ │ │ │ ┌──────────────────── SERVICE LAYER ───────────────────────────┐ │ │ │ │ │ │ │ AuthService │ SessionService │ PresenceService │ │ │ │ FirebaseService │ NotificationService │ AnalyticsService │ │ │ │ │ │ │ └──────────────────────────────────────────────────────────────────┘ │ │ │ │ ┌──────────────────── DATA LAYER ─────────────────────────────┐ │ │ │ │ │ │ │ Firebase Firestore │ │ │ │ /workspaces/{workspace}/inventory-2025/ │ │ │ │ /workspaces/{workspace}/waste-2025/ │ │ │ │ /sessions/{sessionId} │ │ │ │ │ │ │ └──────────────────────────────────────────────────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────────────┘
Technologický Stack
| Kategorie | Technologie | Verze | Účel |
|---|---|---|---|
| Frontend Framework | React | 19.1.0 | UI komponenty, hooks |
| Typový systém | TypeScript | 5.8.3 | Typová bezpečnost |
| State Management | Zustand | 5.0.7 | UI state, slices |
| Server State | TanStack Query | 5.90.8 | Firebase sync, caching |
| Backend | Firebase | 12.5.0 | Firestore, Auth, Storage |
| Styling | Tailwind CSS | 3.4.17 | Utility-first CSS |
| Animace | Framer Motion | 12.23.12 | UI animace |
| Build Tool | Vite | 7.0.4 | Bundling, HMR |
| PWA | Vite PWA Plugin | 1.0.2 | Offline podpora |
| E2E Testy | Playwright | 1.57.0 | End-to-end testování |
Přehled modulů
10 modulů + Admin📊 Dashboard (Přehled)
Popis: Hlavní přehledová stránka s KPI a grafy pro aktuální workspace.
KPI Karty:
- Efektivita skladování - % (Stock / Original Amount × 100)
- Procento odpadů - % (Total Waste / Total Production × 100)
- Průměrné dny do expirů - počet dní
- Kritické položky - počet položek ve stavu critical/expired
- Vykončující se halít - položky s expirací ≤14 dní
Grafy (UniversalCharts):
- PIE - Distribuce materiálů podle dodavatele
- BAR - Měsíční trend odpadů
- RADAR - Zdraví materiálů (good/warning/critical)
🧪 Směsi (Materiály)
Popis: Správa surovin a materiálů na skladě. Každý workspace má vlastní sadu materiálů.
Datová pole:
nazev | Název materiálu |
lot | Číslo šarže |
dodavatel | Dodavatel (Radka, Mesgo, SILSPEK, Biesterfeld) |
kodDodavatele | Kód dodavatele (např. "ID 019086") |
kodProfily | 13-místný interní kód |
druhSmesi | Typ: Extrůzní | Lisovací |
skladem | Aktuální stav skladu (kg) |
puvodniMnozstvi | Původní množství (kg) |
expirace | Datum expirace |
stav | Auto-kalkulovaný: good | warning | critical | expired |
Funkce:
- ✓ CRUD operace (přidat, upravit, smazat)
- ✓ Archivace (soft delete)
- ✓ Filtry a vyhledávání
- ✓ Export do Excelu
- ✓ Import z Excelu (drag-drop)
- ✓ OCR skenování čárových kódů
Status kalkulace:
if (skladem <= 0) → "critical" (prázdné) else if (expiryDate < now) → "expired" (prošlé) else if (daysUntil <= 7) → "critical" else if (daysUntil <= 14) → "warning" else → "good"
🗑️ Odpady (Evidence odpadů)
Popis: Evidence a sledování výrobních odpadů.
Datová pole:
poradoveCislo | Sekvenční číslo (W-2025-001) |
datum | Datum záznamu |
typ | nevulkanizovany | vulkanizovany |
vaha | Váha v kg |
operator | Kdo odpad vytvořil |
zapisal | Kdo záznam zapsal |
stav | čeká | vyvezeno | archivováno |
Funkce:
- ✓ Rychlý formulář pro přidání odpadu
- ✓ Filtry podle typu, operátora, stavu
- ✓ Export do Excelu s měsíčním breakdown
- ✓ Grafy (PIE, BAR, RADAR)
🏭 Výroba (Production Records)
Popis: Záznamy o výrobě - artikly, váhy, efektivita.
Datová pole:
articleNumber- Číslo artiklu (z katalogu)totalProductionWeight- Celková váha produkce (kg)wasteWeight- Váha odpadu (kg)productionTime- Čas výroby (minuty)efficiency- Efektivita (%)operator,supervisor,shift
Efektivita výpočet:
efficiency = (totalWeight - wasteWeight) / totalWeight × 100
🔬 Vývoj (Development/Testing)
Popis: R&D záznamy - testování, vývoj nových směsí.
Podobná struktura jako Výroba, ale pro vývojové účely.
result- passed | faileddescription- Testovací parametrytechnician- Zodpovědný technik
📋 Inventura (Fyzická inventura)
Popis: Periodické srovnání skutečného stavu se systémem.
Proces:
- Zobrazení všech nearchivovaných materiálů
- Pro každý materiál: očekávaný stav vs. skutečný počet
- Vizuální indikace rozdílů (zelená/žlutá/červená)
- Uložení výsledků inventury
📅 Plánování (Planning)
Popis: Prediktivní plánování nákupu a spotřeby.
- Analýza historické spotřeby
- Predikce dnů do kritického stavu
- Automatické objednávkové seznamy
- Export do Excelu/email
📈 Statistiky (Analytics) Admin only
Popis: Pokročilá analytika - pouze pro administrátory.
- Material Health skóre
- Efektivita výroby
- Analýza odpadů
- Metriky dodavatelů
- Trend grafy (3-měsíční srovnání)
📚 Historie (Historical Data) Admin only
Popis: Archiv historických dat.
- Výběr roku (2023, 2024, 2025)
- Kategorizované pohledy
- Stažení historických exportů
- Trend srovnání mezi roky
⚙️ Nastavení (Settings) Admin only
Popis: Konfigurace aplikace.
Sekce:
- Obecné - Profil, jazyk (CZ/EN), téma (light/dark)
- Notifikace - Zvuky, toast notifikace, email
- Bezpečnost - Hesla, session management
- Data - Export/import, zálohy
- Pokročilé - Performance, feature flags
👑 Multi-Dashboard (Přehled linek) Admin only
Popis: Agregovaný přehled všech 4 linek - pouze pro administrátory.
Zobrazuje:
- Agregované KPI ze všech workspace
- 4 panely s KPI jednotlivých linek
- Srovnávací grafy
- Online uživatelé (presence tracking)
admin.Uživatelské role a přístupová práva
Definované role
| Role | Kód | Popis | Workspace přístup |
|---|---|---|---|
| 👑 Admin | admin |
Plný přístup k celému systému | Všechny (UHF, LCM, PVC, PVC2) |
| 👷 Operátor | operator |
CRUD ve všech workspace | Všechny (cross-workspace) |
| 🔒 Operátor linky | line-operator |
CRUD pouze v přiřazené lince | Pouze přiřazený workspace |
| 👁️ Viewer | viewer |
Pouze čtení | Všechny (read-only) |
Matice oprávnění
| Modul / Akce | Admin | Operátor | Line-Operator | Viewer |
|---|---|---|---|---|
| Dashboard - Zobrazení | ✓ | ✓ | ✓ | ✓ |
| Směsi - Zobrazení | ✓ | ✓ | ✓ | ✓ |
| Směsi - Přidat/Upravit | ✓ | ✓ | ◐* | ✗ |
| Směsi - Archivovat | ✓ | ✓ | ◐* | ✗ |
| Odpady - CRUD | ✓ | ✓ | ◐* | ✗ |
| Výroba/Vývoj - CRUD | ✓ | ✓ | ◐* | ✗ |
| Inventura - Provést | ✓ | ✓ | ◐* | ✗ |
| Export do Excelu | ✓ | ✓ | ✓ | ✓ |
| Import z Excelu | ✓ | ✓ | ✗ | ✗ |
| Multi-Dashboard | ✓ | ✗ | ✗ | ✗ |
| Statistiky | ✓ | ✗ | ✗ | ✗ |
| Historie | ✓ | ✗ | ✗ | ✗ |
| Nastavení (plné) | ✓ | ✗ | ✗ | ✗ |
| Nastavení (základní) | ✓ | ✓ | ✓ | ✓ |
| Přepnutí workspace | ✓ | ✓ | ✗ | ✓ |
* ◐ = Pouze v přiřazeném workspace (lockedWorkspace)
Testovací uživatelé (Fallback mode)
| Username | Heslo | Role | Locked Workspace |
|---|---|---|---|
Admin |
pocitac115 |
admin | - |
UHF |
123456 |
line-operator | uhf |
LCM |
123456 |
line-operator | lcm |
PVC |
123456 |
line-operator | pvc |
PVC 2 |
123456 |
line-operator | pvc2 |
Bezpečnost aplikace
3 vrstvy ochranyDemo účty pro testování
AdminHeslo:
pocitac115
UHFHeslo:
123456
LCMHeslo:
123456
PVCHeslo:
123456
Ochrana dat
Firebase servery s automatickým zálohováním
HTTPS/SSL - nikdo nemůže data odposlouchávat
Smazané položky lze obnovit
Systém zaznamenává kdo co udělal
Deployment & Environment
Build proces
# Produkční build npm run build # Generates dist/ folder # Type checking npm run type-check # TypeScript verification # Linting npm run lint # ESLint check # Unit testy npm run test # Vitest # E2E testy npm run e2e # Playwright
Environment Variables
| Proměnná | Popis | Povinná |
|---|---|---|
VITE_FIREBASE_API_KEY |
Firebase API klíč | Ano* |
VITE_FIREBASE_AUTH_DOMAIN |
Firebase Auth domain | Ano* |
VITE_FIREBASE_PROJECT_ID |
Firebase Project ID | Ano* |
VITE_AUTH_ADMIN_PASSWORD |
Admin heslo (fallback mode) | Fallback |
VITE_AUTH_UHF_PASSWORD |
UHF operátor heslo | Fallback |
* Pokud Firebase není nakonfigurován, aplikace funguje v localStorage fallback mode.
Deployment targets
Aktuální deployment
Souhrn auditu
DEMO| Aspekt | Status | Poznámka |
|---|---|---|
| Aplikace | DEMO verze | 33 000+ řádků kódu, otestováno |
| Architektura | Profi úroveň | Moderní systém pro více linek |
| Výrobní linky | 4 linky | UHF, LCM, PVC, PVC2 |
| Uživatelé | 4 typy | Šéf, Operátor, Prohlížeč, Operátor linky |
| Moduly | 10+ | Přehled, Směsi, Odpady, Výroba, atd. |
| Databáze | Připraveno | Google Firebase (cloud) |
| Instalace | Hotovo | Lze nainstalovat jako aplikaci na PC |
| Zabezpečení | 3 vrstvy | SecretGate + Přihlášení + Role |
| Testování | Otestováno | Automatické testy proběhly |
| Mobil/Tablet | Funguje | Přizpůsobí se velikosti obrazovky |
| Jazyk | Čeština | Celá aplikace v češtině |
| Rychlost | Rychlé | Optimalizováno pro plynulý chod |