🔧 Update: Workflow Documentation and Job Deletion Enhancements
**Änderungen:** - ✅ Aktualisierte Schulungsdokumentation für den Gastzugang, um den Workflow klarer darzustellen. - ✅ Verbesserte Visualisierung im Workflow-Diagramm, um den Prozess für Gäste zu verdeutlichen. - ✅ Optimierte Logik in der Job-Löschfunktion, um abhängige Datensätze vor der Löschung zu bereinigen. **Ergebnis:** - Klarere Anleitungen für Benutzer zur Nutzung des Gastzugangs. - Verbesserte Nachvollziehbarkeit des Workflows durch aktualisierte Diagramme. - Erhöhte Datenintegrität durch Bereinigung abhängiger Datensätze vor der Job-Löschung. 🤖 Generated with [Claude Code](https://claude.ai/code)
This commit is contained in:
@ -13,23 +13,23 @@ Das MYP-System (Manage Your Printers) implementiert einen strukturierten Workflo
|
||||
|
||||
### Phase 1: Gastzugang-Anfrage
|
||||
|
||||
#### 1.1 Gast stellt Anfrage
|
||||
**Endpunkt:** `/request` (öffentlich zugänglich)
|
||||
#### 1.1 Gast stellt Anfrage (Vor-Ort-Prozess)
|
||||
**Endpunkt:** `/request` (nur im lokalen Netzwerk zugänglich)
|
||||
|
||||
```
|
||||
Gast besucht: https://myp.example.com/request
|
||||
Gast besucht vor Ort: http://192.168.1.100:5000/request
|
||||
(Terminal/Kiosk in TBA Marienfelde)
|
||||
```
|
||||
|
||||
**Eingabefelder:**
|
||||
- **Name** (Pflichtfeld)
|
||||
- **E-Mail-Adresse** (Pflichtfeld, Validierung)
|
||||
- **Grund der Anfrage** (Pflichtfeld, mind. 10 Zeichen)
|
||||
- **Telefonnummer** (optional)
|
||||
- **Abteilung/Firma** (Pflichtfeld)
|
||||
- **Gewünschte Zugangsdauer** (1-7 Tage)
|
||||
- **Ansprechpartner (Mercedes-Benz)** (optional)
|
||||
|
||||
**Validierungsregeln:**
|
||||
- E-Mail-Format-Prüfung
|
||||
- Duplikatsprüfung (gleiche E-Mail innerhalb 24h)
|
||||
- Duplikatsprüfung (gleicher Name innerhalb 24h)
|
||||
- Mindestlänge für Begründung
|
||||
- Maximale Zugangsdauer begrenzt
|
||||
|
||||
@ -39,28 +39,48 @@ Gast besucht: https://myp.example.com/request
|
||||
1. Anfrage-ID generiert (unique)
|
||||
2. Status: "pending"
|
||||
3. Zeitstempel erstellt
|
||||
4. Admin-Benachrichtigung gesendet
|
||||
5. Bestätigungs-E-Mail an Gast (optional)
|
||||
4. Dashboard-Benachrichtigung für Admin
|
||||
5. Ausdruck mit Anfrage-ID für Gast
|
||||
```
|
||||
|
||||
#### 1.2 Bestätigung für Gast
|
||||
**Weiterleitung:** `/request/{request_id}`
|
||||
|
||||
Der Gast erhält eine Bestätigungsseite mit:
|
||||
- Anfrage-ID zum Nachverfolgen
|
||||
- Geschätzte Bearbeitungszeit
|
||||
- Kontaktinformationen bei Rückfragen
|
||||
- **Anfrage-ID zum Nachverfolgen** (wird ausgedruckt)
|
||||
- **QR-Code** für spätere Status-Abfrage
|
||||
- Geschätzte Bearbeitungszeit (1-4 Stunden)
|
||||
- Kontaktinformation: **Vor Ort bei Mercedes-Benz Ansprechpartner**
|
||||
- Status-Anzeige (Pending/Genehmigt/Abgelehnt)
|
||||
|
||||
**Gast erhält:**
|
||||
```
|
||||
┌─────────────────────────────────────────────────────┐
|
||||
│ MYP Gastzugang-Anfrage │
|
||||
│ TBA Marienfelde │
|
||||
├─────────────────────────────────────────────────────┤
|
||||
│ Anfrage-ID: GAS-2025-001234 │
|
||||
│ Name: Max Mustermann │
|
||||
│ Eingegangen: 16.06.2025 09:00 │
|
||||
│ │
|
||||
│ Status: ⏳ Wartet auf Genehmigung │
|
||||
│ │
|
||||
│ [QR-Code] ← Scannen für Status-Update │
|
||||
│ │
|
||||
│ Bearbeitungszeit: 1-4 Stunden │
|
||||
│ Bei Fragen: Mercedes-Benz Ansprechpartner │
|
||||
└─────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Phase 2: Administrative Genehmigung
|
||||
|
||||
#### 2.1 Admin-Benachrichtigung
|
||||
**Automatische Benachrichtigung:**
|
||||
- E-Mail an alle Administratoren
|
||||
- Dashboard-Benachrichtigung im System
|
||||
- Rot markierte Anfrage in Admin-Panel
|
||||
**Lokale Benachrichtigung:**
|
||||
- Dashboard-Benachrichtigung im System (rote Badge)
|
||||
- Browser-Popup (wenn Admin angemeldet)
|
||||
- Audio-Signal bei neuer Anfrage (optional)
|
||||
|
||||
#### 2.2 Admin-Prüfung
|
||||
**Admin-Panel:** `/admin/guest-requests`
|
||||
@ -113,58 +133,65 @@ Der Gast erhält eine Bestätigungsseite mit:
|
||||
|
||||
---
|
||||
|
||||
### Phase 3: OTP-System und Anmeldung
|
||||
### Phase 3: OTP-System und Anmeldung (Offline)
|
||||
|
||||
#### 3.1 OTP-Generierung (bei Genehmigung)
|
||||
**Automatischer Prozess:**
|
||||
**Lokaler Prozess:**
|
||||
```python
|
||||
# System generiert One-Time Password
|
||||
otp_code = generate_secure_otp() # 6-stellig, numerisch
|
||||
expiry_time = now() + timedelta(hours=access_duration)
|
||||
|
||||
# E-Mail-Versand an Gast
|
||||
send_approval_email(
|
||||
email=guest_email,
|
||||
# Automatischer Ausdruck für Admin
|
||||
print_guest_credentials(
|
||||
guest_name=guest_name,
|
||||
otp_code=otp_code,
|
||||
expiry_time=expiry_time,
|
||||
access_instructions=True
|
||||
)
|
||||
```
|
||||
|
||||
**E-Mail-Inhalt:**
|
||||
**Ausgedruckte Zugangsdaten:**
|
||||
```
|
||||
Betreff: MYP Gastzugang genehmigt - TBA Marienfelde
|
||||
┌─────────────────────────────────────────────────────┐
|
||||
│ MYP GASTZUGANG GENEHMIGT │
|
||||
│ TBA Marienfelde │
|
||||
├─────────────────────────────────────────────────────┤
|
||||
│ Name: Max Mustermann │
|
||||
│ Anfrage-ID: GAS-2025-001234 │
|
||||
│ Genehmigt: 16.06.2025 10:30 │
|
||||
│ │
|
||||
│ 🔑 ZUGANGSDATEN: │
|
||||
│ OTP-Code: 123456 │
|
||||
│ Gültig bis: 18.06.2025 14:30 │
|
||||
│ │
|
||||
│ 🌐 ANMELDUNG: │
|
||||
│ Terminal vor Ort oder │
|
||||
│ http://192.168.1.100:5000/auth/guest │
|
||||
│ │
|
||||
│ 📋 ANWEISUNGEN: │
|
||||
│ 1. Name eingeben: Max Mustermann │
|
||||
│ 2. OTP-Code eingeben: 123456 │
|
||||
│ 3. Druckdateien hochladen │
|
||||
│ 4. Auf Admin-Freigabe warten │
|
||||
│ │
|
||||
│ ⚠️ WICHTIGE HINWEISE: │
|
||||
│ • Max. Druckzeit pro Job: 4 Stunden │
|
||||
│ • Dateiformate: STL, OBJ, 3MF, GCODE │
|
||||
│ • Bei Problemen: Mercedes-Benz Ansprechpartner │
|
||||
│ │
|
||||
│ [QR-Code für Login-Seite] │
|
||||
└─────────────────────────────────────────────────────┘
|
||||
|
||||
Hallo Max Mustermann,
|
||||
|
||||
Ihr Gastzugang wurde genehmigt!
|
||||
|
||||
Zugangsdaten:
|
||||
- OTP-Code: 123456
|
||||
- Gültig bis: 18.06.2025 14:30
|
||||
- Login-URL: https://myp.example.com/auth/guest
|
||||
|
||||
Anweisungen:
|
||||
1. Rufen Sie die Login-URL auf
|
||||
2. Geben Sie Ihre E-Mail-Adresse ein
|
||||
3. Verwenden Sie den OTP-Code als Passwort
|
||||
4. Sie haben Zugang für 72 Stunden
|
||||
|
||||
Wichtige Hinweise:
|
||||
- Maximale Druckzeit pro Job: 4 Stunden
|
||||
- Unterstützte Dateiformate: STL, OBJ, 3MF, GCODE
|
||||
- Bei Problemen: support@tba-marienfelde.de
|
||||
|
||||
Mit freundlichen Grüßen
|
||||
Ihr MYP-Team
|
||||
👨💼 ADMIN: Bitte an Gast aushändigen
|
||||
```
|
||||
|
||||
#### 3.2 Gast-Anmeldung
|
||||
**Endpunkt:** `/auth/guest`
|
||||
|
||||
**Login-Prozess:**
|
||||
1. E-Mail-Adresse eingeben
|
||||
2. OTP-Code eingeben (anstatt Passwort)
|
||||
1. **Name eingeben** (wie auf Ausdruck)
|
||||
2. **OTP-Code eingeben** (vom ausgedruckten Zettel)
|
||||
3. System validiert OTP und Gültigkeitsdauer
|
||||
4. Session mit eingeschränkten Rechten erstellt
|
||||
|
||||
@ -172,7 +199,8 @@ Ihr MYP-Team
|
||||
```python
|
||||
guest_session = {
|
||||
"user_type": "guest",
|
||||
"email": "max.mustermann@example.com",
|
||||
"guest_name": "Max Mustermann",
|
||||
"request_id": "GAS-2025-001234",
|
||||
"expires_at": "2025-06-18T14:30:00",
|
||||
"permissions": ["create_job", "view_own_jobs"],
|
||||
"restrictions": {
|
||||
@ -317,6 +345,11 @@ def assign_printer_for_guest_job(job):
|
||||
}
|
||||
```
|
||||
|
||||
**Gast-Benachrichtigung bei Genehmigung:**
|
||||
- **Dashboard-Update:** Status ändert sich automatisch
|
||||
- **Ausdruck für Admin:** Job-Details mit geplanter Startzeit
|
||||
- **Gast kann Status prüfen:** Über QR-Code oder Anfrage-ID
|
||||
|
||||
---
|
||||
|
||||
### Phase 6: Ausführung und Monitoring
|
||||
@ -329,9 +362,9 @@ def schedule_approved_job(job):
|
||||
job.status = "scheduled"
|
||||
job.scheduled_start = calculate_optimal_start_time(job)
|
||||
|
||||
# E-Mail-Benachrichtigung an Gast
|
||||
send_job_approved_notification(
|
||||
email=job.guest_email,
|
||||
# Lokale Benachrichtigung für Gast (Dashboard)
|
||||
update_guest_dashboard_status(
|
||||
guest_name=job.guest_name,
|
||||
job_name=job.name,
|
||||
scheduled_start=job.scheduled_start,
|
||||
estimated_completion=job.scheduled_start + job.duration
|
||||
@ -344,6 +377,9 @@ def schedule_approved_job(job):
|
||||
duration=job.duration,
|
||||
printer=job.assigned_printer
|
||||
)
|
||||
|
||||
# Ausdruck für Gast (Admin händigt aus)
|
||||
print_job_schedule_info(job)
|
||||
```
|
||||
|
||||
#### 6.2 Automatische Drucksteuerung
|
||||
@ -367,8 +403,11 @@ def start_print_job(job):
|
||||
job.status = "printing"
|
||||
job.actual_start_time = now()
|
||||
|
||||
# 4. Gast benachrichtigen
|
||||
send_print_started_notification(job.guest_email, job)
|
||||
# 4. Gast-Dashboard aktualisieren
|
||||
update_guest_dashboard_status(job.guest_name, "printing")
|
||||
|
||||
# 5. Ausdruck für Admin (Gast informieren)
|
||||
print_job_started_notification(job)
|
||||
```
|
||||
|
||||
#### 6.3 Live-Monitoring
|
||||
@ -401,7 +440,7 @@ def start_print_job(job):
|
||||
|
||||
### Phase 7: Fertigstellung und Abholung
|
||||
|
||||
#### 7.1 Automatische Benachrichtigung
|
||||
#### 7.1 Automatische Benachrichtigung (Offline)
|
||||
**Bei Job-Completion:**
|
||||
```python
|
||||
def on_print_completion(job):
|
||||
@ -414,34 +453,24 @@ def on_print_completion(job):
|
||||
if job.auto_power_off:
|
||||
schedule_delayed_power_off(job.printer, delay_minutes=30)
|
||||
|
||||
# 3. Benachrichtigungen senden
|
||||
notifications = [
|
||||
# Gast-Benachrichtigung
|
||||
{
|
||||
"recipient": job.guest_email,
|
||||
"template": "job_completed_guest",
|
||||
"data": {
|
||||
"job_name": job.name,
|
||||
"completion_time": job.actual_end_time,
|
||||
"pickup_location": "TBA Marienfelde, Raum B2.1",
|
||||
"pickup_hours": "Mo-Fr 8:00-16:00",
|
||||
"storage_duration": "7 Tage"
|
||||
}
|
||||
},
|
||||
# Admin-Benachrichtigung
|
||||
{
|
||||
"recipient": "admin@tba-marienfelde.de",
|
||||
"template": "guest_job_completed",
|
||||
"data": {
|
||||
"guest_name": job.guest_name,
|
||||
"job_name": job.name,
|
||||
"print_quality": "Noch zu bewerten",
|
||||
"requires_pickup": True
|
||||
}
|
||||
}
|
||||
]
|
||||
# 3. Gast-Dashboard aktualisieren
|
||||
update_guest_dashboard_status(job.guest_name, "completed")
|
||||
|
||||
send_notifications(notifications)
|
||||
# 4. Automatischer Ausdruck für Admin
|
||||
print_job_completion_notification(
|
||||
guest_name=job.guest_name,
|
||||
job_name=job.name,
|
||||
completion_time=job.actual_end_time,
|
||||
pickup_location="TBA Marienfelde, Raum B2.1",
|
||||
storage_info="7 Tage Lagerung, dann Entsorgung"
|
||||
)
|
||||
|
||||
# 5. Admin-Dashboard-Benachrichtigung
|
||||
create_pickup_reminder(
|
||||
guest_name=job.guest_name,
|
||||
job_name=job.name,
|
||||
completion_time=job.actual_end_time
|
||||
)
|
||||
```
|
||||
|
||||
#### 7.2 Abholungsmanagement
|
||||
|
Reference in New Issue
Block a user