Projektarbeit-MYP/backend/docs/MYP_BENUTZERHANDBUCH.md
2025-06-05 01:34:10 +02:00

14 KiB

MYP Platform - Benutzerhandbuch

Inhaltsverzeichnis

  1. Übersicht
  2. Admin-Funktionen
  3. Gastauftrag-System mit OTP
  4. Warteschlangen-System
  5. Benutzerinterface
  6. Drucker-Management
  7. Job-Verwaltung
  8. 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:

// 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/<id>      # Drucker aktualisieren
DELETE /api/admin/printers/<id>      # 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:

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/<id>      # Detaillierte Anfrage-Informationen
PUT  /api/admin/requests/<id>      # Anfrage aktualisieren
POST /api/requests/<id>/approve    # Anfrage genehmigen
POST /api/requests/<id>/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:

POST /guest/api/guest/status

Request Body:

{
  "otp_code": "A1B2C3D4E5F67890",
  "email": "gast@example.com"  // Optional
}

Status-Informationen

Pending (In Bearbeitung):

{
  "status": "pending",
  "message": "Ihr Auftrag wird bearbeitet. Wartezeit: 3 Stunden.",
  "hours_waiting": 3
}

Approved (Genehmigt):

{
  "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):

{
  "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:

.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:

# 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:

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:

// 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:

@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+