# MYP Platform - Benutzerhandbuch ## Inhaltsverzeichnis 1. [Übersicht](#übersicht) 2. [Admin-Funktionen](#admin-funktionen) 3. [Gastauftrag-System mit OTP](#gastauftrag-system-mit-otp) 4. [Warteschlangen-System](#warteschlangen-system) 5. [Benutzerinterface](#benutzerinterface) 6. [Drucker-Management](#drucker-management) 7. [Job-Verwaltung](#job-verwaltung) 8. [Sicherheit und Berechtigungen](#sicherheit-und-berechtigungen) ## Übersicht Die MYP Platform ist ein umfassendes 3D-Drucker-Verwaltungssystem, das speziell für Mercedes-Benz entwickelt wurde. Es ermöglicht die effiziente Verwaltung von 3D-Druckaufträgen, Benutzern und Druckern in einer sicheren, webbasierten Umgebung. ### Hauptfunktionen - **Benutzer- und Rollenverwaltung** mit granularen Berechtigungen - **3D-Drucker-Management** mit Smart-Plug-Integration - **Job-Planung und -Überwachung** mit Konfliktmanagement - **Gastauftrag-System** mit sicherem OTP-Code-System - **Warteschlangen-Management** für Offline-Drucker - **Admin-Dashboard** mit umfassenden Verwaltungsfunktionen ## Admin-Funktionen ### Zugriff auf das Admin-Dashboard Das Admin-Dashboard ist unter `/admin` verfügbar und erfordert Admin-Berechtigung. #### Benutzer-Verwaltung **CRUD-Operationen für Benutzer:** - **Erstellen**: Neue Benutzer mit E-Mail, Name und Rolle - **Bearbeiten**: Benutzerdaten und Berechtigungen ändern - **Löschen**: Benutzer aus dem System entfernen - **Rollen zuweisen**: Admin, Benutzer, Gast-Rollen verwalten **Suchfunktionen:** ```javascript // Benutzer nach Name, E-Mail oder Rolle filtern filterUsers(searchTerm) editUser(userId) // Benutzer bearbeiten deleteUser(userId) // Benutzer löschen createUser() // Neuen Benutzer erstellen ``` #### Drucker-Management **Drucker-Konfiguration:** - Drucker hinzufügen/bearbeiten - Status-Überwachung (Online/Offline) - Smart-Plug-Integration mit TP-Link Tapo - Wartungsplanung und -historie **API-Endpunkte:** ``` GET /api/admin/printers # Alle Drucker auflisten POST /api/admin/printers # Drucker hinzufügen PUT /api/admin/printers/ # Drucker aktualisieren DELETE /api/admin/printers/ # Drucker löschen POST /api/admin/printers/update-all # Status aktualisieren ``` #### Job-Verwaltung **Job-Operationen:** - Alle aktiven und abgeschlossenen Jobs anzeigen - Jobs abbrechen, löschen oder abschließen - Warteschlangen-Management mit Prioritäten - Performance-Analytics und Trends #### System-Administration **Verfügbare Funktionen:** ```javascript showSystemSettings() // System-Einstellungen Modal saveSystemSettings() // Einstellungen speichern updateAllPrinters() // Drucker-Status aktualisieren restartSystem() // System-Neustart (Development) clearCache() // System-Cache leeren ``` **API-Endpunkte:** ``` POST /api/admin/cache/clear # System-Cache leeren GET /api/admin/system/status # System-Status abrufen POST /api/admin/backup/create # System-Backup erstellen GET /api/admin/logs/export # System-Logs exportieren ``` ### Gastanfragen-Verwaltung #### Genehmigungsworkflow **Schritt-für-Schritt-Prozess:** 1. **Drucker-Zuweisung**: Automatische oder manuelle Drucker-Auswahl 2. **Genehmigungsnotizen**: Zusätzliche Anweisungen für den Gast 3. **Job-Erstellung**: Automatische Erstellung mit OTP-Generierung 4. **Admin-Tracking**: Vollständige Nachverfolgung der Genehmigung **API für Gastanfragen:** ``` GET /api/admin/requests # Alle Gastanfragen mit Filterung GET /api/admin/requests/ # Detaillierte Anfrage-Informationen PUT /api/admin/requests/ # Anfrage aktualisieren POST /api/requests//approve # Anfrage genehmigen POST /api/requests//deny # Anfrage ablehnen ``` #### Ablehnungsworkflow **Verpflichtende Begründung:** - Detaillierter Ablehnungsgrund erforderlich - Transparenz: Begründung wird dem Gast mitgeteilt - Admin-Tracking: Nachverfolgung der Ablehnung - Audit-Log: Vollständige Dokumentation #### Benutzeroberfläche **Filter und Suche:** - Status-Filter: Alle, Wartend, Genehmigt, Abgelehnt - Such-Funktion: Nach Name, E-Mail, Begründung - Dringlichkeitskennzeichnung: Anfragen älter als 24h - Pagination: Effiziente Darstellung großer Datenmengen **Interaktive Features:** - Ein-Klick-Aktionen für schnelle Genehmigung/Ablehnung - Detail-Modals mit vollständigen Anfrage-Informationen - Echtzeit-Updates nach Aktionen - Responsive Design für Desktop und Mobile ## Gastauftrag-System mit OTP ### Übersicht Das OTP (One-Time Password) System ermöglicht es Gästen, den Status ihrer Druckaufträge sicher und ohne Anmeldung zu prüfen. Jeder Gast erhält bei der Antragsstellung einen eindeutigen 16-stelligen hexadezimalen Code. ### OTP-Generierung und Sicherheit **Automatische Code-Erstellung:** - **Bei Antragstellung**: Jeder neue Gastauftrag erhält sofort einen OTP-Code - **Sichere Speicherung**: Code wird mit bcrypt gehasht gespeichert - **Gültigkeitsdauer**: 72 Stunden ab Erstellung - **Format**: 16-stelliger hexadezimaler Code (z.B. "A1B2C3D4E5F67890") **Sicherheitsfeatures:** - **Bcrypt-Hashing**: Sichere Speicherung der OTP-Codes - **Salt**: Jeder Hash verwendet einen eindeutigen Salt - **One-Time-Use**: Code wird nach erfolgreicher Verifikation als verwendet markiert - **E-Mail-Verifikation**: Optional für erhöhte Sicherheit - **Zeitliche Begrenzung**: Codes laufen nach 72 Stunden ab ### Status-Abfrage **Webinterface:** - **URL**: `/guest/status-check` - **Zugang**: Öffentlich zugänglich - OTP-Code-Eingabe mit Formatierung - Optionale E-Mail-Verifikation - Detaillierte Status-Anzeige **API-Endpunkt:** ```http POST /guest/api/guest/status ``` **Request Body:** ```json { "otp_code": "A1B2C3D4E5F67890", "email": "gast@example.com" // Optional } ``` ### Status-Informationen **Pending (In Bearbeitung):** ```json { "status": "pending", "message": "Ihr Auftrag wird bearbeitet. Wartezeit: 3 Stunden.", "hours_waiting": 3 } ``` **Approved (Genehmigt):** ```json { "status": "approved", "message": "Ihr Auftrag wurde genehmigt! Sie können mit dem Drucken beginnen.", "can_start_job": true, "approved_at": "2025-01-07T12:15:00Z", "approval_notes": "Auftrag genehmigt - Drucker B verfügbar" } ``` **Rejected (Abgelehnt):** ```json { "status": "rejected", "message": "Ihr Auftrag wurde leider abgelehnt.", "rejected_at": "2025-01-07T12:15:00Z", "rejection_reason": "Datei nicht kompatibel mit verfügbaren Druckern" } ``` ### Benutzer-Workflow für Gäste **1. Antrag stellen:** ``` Gast füllt Antragsformular aus ↓ System generiert automatisch OTP-Code ↓ Gast erhält Code angezeigt/per E-Mail ``` **2. Status prüfen:** ``` Gast besucht /guest/status-check ↓ Gibt 16-stelligen OTP-Code ein ↓ Optional: E-Mail zur Verifikation ↓ System zeigt aktuellen Status an ``` **3. Job starten (bei Genehmigung):** ``` Status zeigt "Genehmigt" an ↓ Link zu "Jetzt drucken" erscheint ↓ Gast kann Job mit anderem Code starten ``` ## Warteschlangen-System ### Übersicht Das Warteschlangen-System ermöglicht es Benutzern, Druckjobs auch für offline Drucker zu erstellen. Diese Jobs werden automatisch aktiviert, sobald die entsprechenden Drucker wieder online sind. ### Universelle Drucker-Anzeige **Alle Drucker sichtbar:** - **Online-Drucker**: ✅ Grüner Hintergrund, "ONLINE - Sofortiger Start" - **Offline-Drucker**: 🔄 Oranger Hintergrund, "OFFLINE - Warteschlange" - **Status-Informationen**: Letzte Überprüfungszeit wird angezeigt ### Intelligente Job-Erstellung **Automatische Status-Erkennung:** - System erkennt automatisch Drucker-Status bei Job-Erstellung - **Adaptive Job-Status**: - `scheduled` - für online Drucker (sofortiger Start) - `waiting_for_printer` - für offline Drucker (Warteschlange) ### Background-Überwachung (Queue-Manager) **Automatische Funktionen:** - **Überwachung** alle 2 Minuten - **Status-Checks** für alle Drucker mit wartenden Jobs - **Automatische Aktivierung** von Jobs bei Online-Statuswechsel - **Thread-sichere Implementierung** mit Daemon-Thread **Queue-Manager-API:** ``` /api/queue/status # GET - Queue-Status abrufen /api/queue/check-now # POST - Manuelle Queue-Überprüfung /api/jobs/check-waiting # POST - Wartende Jobs prüfen ``` ### Benutzer-Workflow für Warteschlangen **1. Job für Online-Drucker erstellen:** 1. Benutzer wählt **Online-Drucker** (✅ grün markiert) 2. Job wird mit Status `scheduled` erstellt 3. Job startet **sofort** zur geplanten Zeit **2. Job für Offline-Drucker erstellen:** 1. Benutzer wählt **Offline-Drucker** (🔄 orange markiert) 2. **Ausführliche Warnung** wird angezeigt 3. Benutzer bestätigt **bewusst** die Warteschlangen-Erstellung 4. Job wird mit Status `waiting_for_printer` erstellt 5. **Automatische Überwachung** startet **3. Automatische Job-Aktivierung:** 1. **Queue-Manager** überwacht Drucker-Status alle 2 Minuten 2. Sobald Drucker **online** geht: - Job-Status wechselt zu `scheduled` - **Benachrichtigung** wird an Benutzer gesendet - Job startet zur **geplanten Zeit** ### Benachrichtigungssystem **Sofortige Benachrichtigungen:** - Nachrichten wenn Drucker online gehen - **Anti-Spam-Schutz** mit 5-Minuten-Cooldown - **Strukturierte Nachrichten** mit Job- und Drucker-Details ## Benutzerinterface ### Frontend-Architektur **TailwindCSS-basiertes Design:** - Utility-first CSS mit angepassten Optimierungen für Raspberry Pi - Responsive Design für Desktop und Mobile - Dark/Light Mode mit Premium-Animationen - Mercedes-Benz Corporate Design **JavaScript-Framework:** - Vanilla JavaScript ohne schwere Frameworks - Progressive Enhancement: Funktioniert ohne JavaScript, verbessert mit JavaScript - Service Workers für Offline-Fähigkeit und Performance ### Glassmorphism UI-Features **Premium Flash Messages:** ```css .flash-message { backdrop-filter: blur(40px) saturate(200%) brightness(130%) contrast(110%); background: linear-gradient(135deg, rgba(colors) 0%, 50%, 100%); box-shadow: 0 32px 64px rgba(0, 0, 0, 0.25), 0 12px 24px rgba(0, 0, 0, 0.15), inset 0 1px 0 rgba(255, 255, 255, 0.4); } ``` **Do Not Disturb System:** - Zeitgesteuerte Modi (30min bis dauerhaft) - Intelligente Nachrichtenfilterung - Navbar-Integration mit Visual Feedback - Persistente Einstellungen über Browser-Neustarts - Vollständige Keyboard-Accessibility ### Performance-Optimierungen **Raspberry Pi-spezifische Optimierungen:** - Reduzierte Animationen und Glassmorphism-Effekte - Minifizierte Assets mit gzip-Kompression - Optimierte SQLite-Einstellungen für SD-Karten - Memory-effiziente Session-Behandlung **Caching-Strategie:** - Statische Datei-Caching (1 Jahr) - Database Query Caching - Session-basiertes Caching für teure Operationen ## Drucker-Management ### Smart-Plug-Integration **TP-Link Tapo-Unterstützung:** - PyP100-Bibliothek für Gerätesteuerung - Status-Überwachung und Terminplanung - Automatisches Energiemanagement **Drucker-Status-Überwachung:** ```python # Drucker-Status-Check def check_printer_status(printer_ip): try: response = requests.get(f"http://{printer_ip}/status", timeout=5) return response.status_code == 200 except: return False ``` ### Konflikt-Management **Intelligente Drucker-Zuweisung:** - Verfügbarkeitsfenster berücksichtigen - Prioritätsstufen (dringend, hoch, normal, niedrig) - Job-Dauer-Kompatibilität - Echtzeit-Konflikterkennung ## Job-Verwaltung ### Job-Status-System **Status-Definitionen:** - `pending` - Warten auf Genehmigung - `approved` - Genehmigt, bereit zum Start - `scheduled` - Geplant und aktiv - `waiting_for_printer` - Warten auf Drucker (Warteschlange) - `in_progress` - Aktuell in Bearbeitung - `completed` - Erfolgreich abgeschlossen - `cancelled` - Abgebrochen - `failed` - Fehlgeschlagen ### Unterstützte Dateiformate **3D-Dateien:** - STL (Standard Tessellation Language) - OBJ (Wavefront OBJ) - 3MF (3D Manufacturing Format) - AMF (Additive Manufacturing File) - GCODE (G-Code für direkten Druck) **Datei-Upload-System:** - Sichere Dateibehandlung mit Validierung - Organisierte Speicherung im uploads/-Verzeichnis - Automatische Dateigrößen-Limits - Virus-Scanning (falls konfiguriert) ## Sicherheit und Berechtigungen ### Berechtigungssystem **Rollen-Hierarchie:** - **Super Admin**: Vollzugriff auf alle Funktionen - **Admin**: Standard-Admin-Funktionen - **Moderator**: Eingeschränkte Admin-Rechte - **Approver**: Nur Gastanfragen-Genehmigung - **User**: Standard-Benutzer-Funktionen - **Guest**: Eingeschränkter Zugang **Spezielle Berechtigungen:** ```python class UserPermission: can_manage_users = True # Benutzer verwalten can_manage_printers = True # Drucker verwalten can_approve_jobs = True # Jobs genehmigen can_view_analytics = True # Analytics einsehen can_manage_system = True # System-Administration can_access_admin = True # Admin-Bereich zugreifen ``` ### Sicherheitsmaßnahmen **Implementierte Features:** - **SSL/TLS**: Selbstsignierte Zertifikate mit automatischer Generierung - **CSRF-Schutz**: Global aktiviert mit Flask-WTF - **Session-Sicherheit**: Sichere Cookies, HTTPOnly, SameSite=Lax - **Rate Limiting**: Eingebaut für API-Endpunkte - **Input-Validierung**: WTForms für alle Benutzereingaben **CSRF-Schutz in JavaScript:** ```javascript // Automatische CSRF-Token-Integration function getCSRFToken() { return document.querySelector('meta[name="csrf-token"]').getAttribute('content'); } async function secureApiCall(url, method, data) { const response = await fetch(url, { method: method, headers: { 'Content-Type': 'application/json', 'X-CSRFToken': getCSRFToken() }, body: JSON.stringify(data) }); return response.json(); } ``` ### Audit-Logging **Admin-Aktivitäten-Log:** ```python @admin_required def log_admin_action(action, details): admin_logger.info(f"Admin {current_user.id} ({current_user.name}) - {action}: {details}") # Beispiele log_admin_action("USER_CREATED", f"Created user {new_user.email}") log_admin_action("REQUEST_APPROVED", f"Approved guest request {request_id}") log_admin_action("SYSTEM_RESTART", "System restart initiated") ``` --- **Status**: ✅ Vollständig funktional **Letzte Aktualisierung**: Januar 2025 **Version**: 3.1.3 **Kompatibilität**: Python 3.9+, Flask 3.1+, SQLAlchemy 2.0+