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

483 lines
14 KiB
Markdown

# 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/<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:**
```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/<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:**
```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+