14 KiB
MYP Platform - Benutzerhandbuch
Inhaltsverzeichnis
- Übersicht
- Admin-Funktionen
- Gastauftrag-System mit OTP
- Warteschlangen-System
- Benutzerinterface
- Drucker-Management
- Job-Verwaltung
- 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:
- Drucker-Zuweisung: Automatische oder manuelle Drucker-Auswahl
- Genehmigungsnotizen: Zusätzliche Anweisungen für den Gast
- Job-Erstellung: Automatische Erstellung mit OTP-Generierung
- 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:
- Benutzer wählt Online-Drucker (✅ grün markiert)
- Job wird mit Status
scheduled
erstellt - Job startet sofort zur geplanten Zeit
2. Job für Offline-Drucker erstellen:
- Benutzer wählt Offline-Drucker (🔄 orange markiert)
- Ausführliche Warnung wird angezeigt
- Benutzer bestätigt bewusst die Warteschlangen-Erstellung
- Job wird mit Status
waiting_for_printer
erstellt - Automatische Überwachung startet
3. Automatische Job-Aktivierung:
- Queue-Manager überwacht Drucker-Status alle 2 Minuten
- Sobald Drucker online geht:
- Job-Status wechselt zu
scheduled
- Benachrichtigung wird an Benutzer gesendet
- Job startet zur geplanten Zeit
- Job-Status wechselt zu
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 Genehmigungapproved
- Genehmigt, bereit zum Startscheduled
- Geplant und aktivwaiting_for_printer
- Warten auf Drucker (Warteschlange)in_progress
- Aktuell in Bearbeitungcompleted
- Erfolgreich abgeschlossencancelled
- Abgebrochenfailed
- 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+