🔧 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
|
||||
|
@ -7,21 +7,21 @@
|
||||
|
||||
```mermaid
|
||||
graph TD
|
||||
A[🌐 Gast besucht /request] --> B[📝 Anfrage ausfüllen]
|
||||
A[🌐 Gast besucht Terminal vor Ort] --> B[📝 Anfrage ausfüllen]
|
||||
B --> C{📋 Validierung OK?}
|
||||
C -->|❌ Fehler| B
|
||||
C -->|✅ OK| D[💾 Anfrage gespeichert]
|
||||
C -->|✅ OK| D[💾 Anfrage gespeichert + Ausdruck]
|
||||
|
||||
D --> E[📧 Admin-Benachrichtigung]
|
||||
D --> E[🔔 Dashboard-Benachrichtigung]
|
||||
E --> F[👨💼 Admin prüft Anfrage]
|
||||
|
||||
F --> G{🤔 Entscheidung?}
|
||||
G -->|✅ Genehmigen| H[🔑 OTP generieren]
|
||||
G -->|❌ Ablehnen| I[📧 Ablehnungs-E-Mail]
|
||||
G -->|❓ Nachfrage| J[📧 Rückfrage-E-Mail]
|
||||
G -->|✅ Genehmigen| H[🔑 OTP generieren + Ausdruck]
|
||||
G -->|❌ Ablehnen| I[📋 Ablehnungs-Info für Admin]
|
||||
G -->|❓ Nachfrage| J[📋 Rückfrage notieren]
|
||||
|
||||
H --> K[📧 OTP an Gast senden]
|
||||
K --> L[🔐 Gast loggt sich ein]
|
||||
H --> K[👨💼 Admin händigt Zugangsdaten aus]
|
||||
K --> L[🔐 Gast loggt sich am Terminal ein]
|
||||
|
||||
L --> M[📁 Job-Upload Interface]
|
||||
M --> N[📤 Datei hochladen + Details]
|
||||
@ -41,8 +41,8 @@ graph TD
|
||||
X --> Y[✅ Druck fertig]
|
||||
|
||||
Y --> Z[🔌 Drucker ausschalten]
|
||||
Z --> AA[📧 Fertigstellungs-Benachrichtigung]
|
||||
AA --> BB[📦 Abholung durch Gast]
|
||||
Z --> AA[📋 Ausdruck: Job fertig + Dashboard-Update]
|
||||
AA --> BB[📦 Vor-Ort-Abholung durch Gast]
|
||||
BB --> CC[✅ Workflow abgeschlossen]
|
||||
|
||||
I --> DD[🏁 Ende]
|
||||
@ -64,11 +64,11 @@ Timeline: Gast-Workflow (Beispiel: 3-Tage-Projekt)
|
||||
|
||||
Tag 1 (Montag):
|
||||
┌─────────────────────────────────────────────────────┐
|
||||
│ 09:00 │ 🌐 Gast stellt Anfrage │
|
||||
│ 09:05 │ 📧 Admin-Benachrichtigung │
|
||||
│ 09:00 │ 🌐 Gast stellt Anfrage am Terminal vor Ort│
|
||||
│ 09:05 │ 🔔 Dashboard-Benachrichtigung für Admin │
|
||||
│ 10:30 │ 👨💼 Admin prüft und genehmigt │
|
||||
│ 10:35 │ 🔑 OTP generiert und versendet │
|
||||
│ 11:00 │ 🔐 Gast loggt sich ein │
|
||||
│ 10:35 │ 🔑 OTP generiert, Ausdruck für Gast │
|
||||
│ 11:00 │ 🔐 Gast loggt sich am Terminal ein │
|
||||
│ 11:15 │ 📁 Job-Upload (STL-Datei) │
|
||||
│ 11:20 │ ⏳ Job wartet auf Admin-Review │
|
||||
│ 14:00 │ ✅ Admin genehmigt Job │
|
||||
@ -78,19 +78,19 @@ Tag 1 (Montag):
|
||||
Tag 2 (Dienstag):
|
||||
┌─────────────────────────────────────────────────────┐
|
||||
│ Ganztags │ 📊 Job in Warteschlange │
|
||||
│ 15:00 │ 📧 Erinnerungs-E-Mail an Gast │
|
||||
│ │ "Job startet morgen früh" │
|
||||
│ 15:00 │ 📋 Admin-Info: Job startet morgen │
|
||||
│ │ (Gast kann Status am Terminal sehen) │
|
||||
└─────────────────────────────────────────────────────┘
|
||||
|
||||
Tag 3 (Mittwoch):
|
||||
┌─────────────────────────────────────────────────────┐
|
||||
│ 08:55 │ ⚡ Drucker automatisch eingeschaltet │
|
||||
│ 09:00 │ 🖨️ Druckvorgang startet │
|
||||
│ 09:05 │ 📧 "Druck gestartet" Benachrichtigung │
|
||||
│ 09:05 │ 📋 Dashboard-Update "Druck gestartet" │
|
||||
│ 13:00 │ ✅ Druck erfolgreich abgeschlossen │
|
||||
│ 13:05 │ 🔌 Drucker automatisch ausgeschaltet │
|
||||
│ 13:10 │ 📧 "Abholung möglich" Benachrichtigung │
|
||||
│ 15:30 │ 📦 Gast holt Druckobjekt ab │
|
||||
│ 13:10 │ 📋 Ausdruck "Abholung möglich" │
|
||||
│ 15:30 │ 📦 Gast holt Druckobjekt vor Ort ab │
|
||||
│ 15:35 │ ✅ Workflow komplett abgeschlossen │
|
||||
└─────────────────────────────────────────────────────┘
|
||||
```
|
||||
@ -172,7 +172,7 @@ Tag 3 (Mittwoch):
|
||||
|
||||
## 📱 UI-Flow (Mockups)
|
||||
|
||||
### Schritt 1: Gastzugang beantragen
|
||||
### Schritt 1: Gastzugang beantragen (Terminal vor Ort)
|
||||
```
|
||||
┌─────────────────────────────────────────────────────┐
|
||||
│ 🌐 MYP - Gastzugang beantragen │
|
||||
@ -180,20 +180,21 @@ Tag 3 (Mittwoch):
|
||||
│ │
|
||||
│ 👋 Willkommen bei MYP │
|
||||
│ Mercedes-Benz TBA Marienfelde │
|
||||
│ Lokales System - Offline-Modus │
|
||||
│ │
|
||||
│ Vollständiger Name: * │
|
||||
│ ┌─────────────────────────────────────────────────┐ │
|
||||
│ │ Max Mustermann │ │
|
||||
│ └─────────────────────────────────────────────────┘ │
|
||||
│ │
|
||||
│ E-Mail-Adresse: * │
|
||||
│ Abteilung/Firma: * │
|
||||
│ ┌─────────────────────────────────────────────────┐ │
|
||||
│ │ max.mustermann@example.com │ │
|
||||
│ │ Externe Firma - Prototyping │ │
|
||||
│ └─────────────────────────────────────────────────┘ │
|
||||
│ │
|
||||
│ Telefonnummer: │
|
||||
│ Ansprechpartner (Mercedes-Benz): │
|
||||
│ ┌─────────────────────────────────────────────────┐ │
|
||||
│ │ +49 123 456789 │ │
|
||||
│ │ Herr Schmidt, Abteilung Entwicklung │ │
|
||||
│ └─────────────────────────────────────────────────┘ │
|
||||
│ │
|
||||
│ Grund der Anfrage: * │
|
||||
@ -207,25 +208,25 @@ Tag 3 (Mittwoch):
|
||||
│ │
|
||||
│ [ ] Ich akzeptiere die Nutzungsbedingungen │
|
||||
│ │
|
||||
│ [📤 Anfrage senden] │
|
||||
│ [📤 Anfrage senden] [📋 Anfrage-ID erhalten] │
|
||||
│ │
|
||||
└─────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
### Schritt 2: OTP-Login
|
||||
### Schritt 2: OTP-Login (mit Ausdruck vom Admin)
|
||||
```
|
||||
┌─────────────────────────────────────────────────────┐
|
||||
│ 🔐 MYP - Gast-Anmeldung │
|
||||
├─────────────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ 🎉 Ihr Zugang wurde genehmigt! │
|
||||
│ 🎉 Anmeldung mit Zugangsdaten │
|
||||
│ │
|
||||
│ E-Mail-Adresse: │
|
||||
│ Vollständiger Name: │
|
||||
│ ┌─────────────────────────────────────────────────┐ │
|
||||
│ │ max.mustermann@example.com │ │
|
||||
│ │ Max Mustermann │ │
|
||||
│ └─────────────────────────────────────────────────┘ │
|
||||
│ │
|
||||
│ OTP-Code (aus E-Mail): │
|
||||
│ OTP-Code (vom Ausdruck): │
|
||||
│ ┌─────────────────────────────────────────────────┐ │
|
||||
│ │ 123456 │ │
|
||||
│ └─────────────────────────────────────────────────┘ │
|
||||
@ -233,9 +234,11 @@ Tag 3 (Mittwoch):
|
||||
│ ⏰ Ihr Zugang ist gültig bis: │
|
||||
│ 18. Juni 2025, 14:30 Uhr │
|
||||
│ │
|
||||
│ 📋 Anfrage-ID: GAS-2025-001234 │
|
||||
│ │
|
||||
│ [🔑 Anmelden] │
|
||||
│ │
|
||||
│ 💡 Tipp: Speichern Sie diese Seite als Lesezeichen│
|
||||
│ 💡 Bei Problemen: Mercedes-Benz Ansprechpartner │
|
||||
│ │
|
||||
└─────────────────────────────────────────────────────┘
|
||||
```
|
||||
@ -313,76 +316,92 @@ Tag 3 (Mittwoch):
|
||||
|
||||
---
|
||||
|
||||
## 📧 E-Mail-Templates (Beispiele)
|
||||
## 📋 Ausdruck-Templates (Offline-System)
|
||||
|
||||
### Genehmigung mit OTP
|
||||
### Genehmigung mit OTP (Admin-Ausdruck)
|
||||
```
|
||||
Von: MYP System <noreply@tba-marienfelde.de>
|
||||
An: max.mustermann@example.com
|
||||
Betreff: ✅ Gastzugang genehmigt - Willkommen bei MYP!
|
||||
┌─────────────────────────────────────────────────────┐
|
||||
│ MYP GASTZUGANG GENEHMIGT │
|
||||
│ TBA Marienfelde - Offline System │
|
||||
├─────────────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ 👤 GASTINFORMATIONEN: │
|
||||
│ Name: Max Mustermann │
|
||||
│ Anfrage-ID: GAS-2025-001234 │
|
||||
│ Firma: Externe Firma - Prototyping │
|
||||
│ Ansprechpartner: Herr Schmidt │
|
||||
│ │
|
||||
│ 🔑 ZUGANGSDATEN: │
|
||||
│ OTP-Code: 123456 │
|
||||
│ Gültig bis: 18.06.2025 14:30 │
|
||||
│ │
|
||||
│ 🌐 SYSTEMZUGANG: │
|
||||
│ Terminal vor Ort oder │
|
||||
│ http://192.168.1.100:5000/auth/guest │
|
||||
│ │
|
||||
│ 📋 NUTZUNGSREGELN: │
|
||||
│ • Max. Druckzeit pro Job: 4 Stunden │
|
||||
│ • Dateiformate: STL, OBJ, 3MF, GCODE │
|
||||
│ • Materialien: PLA, PETG │
|
||||
│ • Jobs benötigen Admin-Freigabe │
|
||||
│ │
|
||||
│ 📍 ABHOLUNG SPÄTER: │
|
||||
│ Ort: TBA Marienfelde, Raum B2.1 │
|
||||
│ Zeit: Mo-Fr 8:00-16:00 │
|
||||
│ Lagerung: Max. 7 Tage │
|
||||
│ │
|
||||
│ [QR-Code für System-Login] │
|
||||
│ │
|
||||
│ 📞 Bei Fragen: Mercedes-Benz Ansprechpartner │
|
||||
│ │
|
||||
└─────────────────────────────────────────────────────┘
|
||||
|
||||
Hallo Max Mustermann,
|
||||
|
||||
großartige Neuigkeiten! Ihr Gastzugang wurde genehmigt.
|
||||
|
||||
🔑 Ihre Zugangsdaten:
|
||||
E-Mail: max.mustermann@example.com
|
||||
OTP-Code: 123456
|
||||
|
||||
⏰ Gültig bis: 18. Juni 2025, 14:30 Uhr
|
||||
|
||||
🚀 So geht's weiter:
|
||||
1. Besuchen Sie: https://myp.tba-marienfelde.de/auth/guest
|
||||
2. Geben Sie Ihre E-Mail und den OTP-Code ein
|
||||
3. Laden Sie Ihre Druckdateien hoch
|
||||
4. Warten Sie auf die Admin-Freigabe
|
||||
|
||||
📋 Wichtige Informationen:
|
||||
• Max. Druckzeit pro Job: 4 Stunden
|
||||
• Unterstützte Formate: STL, OBJ, 3MF, GCODE
|
||||
• Materialien: PLA, PETG
|
||||
• Abholung: Mo-Fr 8:00-16:00, Raum B2.1
|
||||
|
||||
❓ Fragen? Antworten Sie einfach auf diese E-Mail.
|
||||
|
||||
Viel Erfolg mit Ihrem Projekt!
|
||||
Das MYP-Team
|
||||
👨💼 ADMIN-HINWEIS: An Gast aushändigen
|
||||
```
|
||||
|
||||
### Job fertig - Abholung
|
||||
### Job fertig - Abholungsinfo (Admin-Ausdruck)
|
||||
```
|
||||
Von: MYP System <noreply@tba-marienfelde.de>
|
||||
An: max.mustermann@example.com
|
||||
Betreff: 🎉 Druckauftrag fertig - Abholung möglich!
|
||||
┌─────────────────────────────────────────────────────┐
|
||||
│ MYP DRUCKAUFTRAG ABGESCHLOSSEN │
|
||||
│ TBA Marienfelde - Abholungsinfo │
|
||||
├─────────────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ 👤 GASTINFORMATIONEN: │
|
||||
│ Name: Max Mustermann │
|
||||
│ Anfrage-ID: GAS-2025-001234 │
|
||||
│ Firma: Externe Firma - Prototyping │
|
||||
│ │
|
||||
│ 📦 JOB-DETAILS: │
|
||||
│ Job-Name: Kundenpräsentation Prototyp │
|
||||
│ Fertiggestellt: 16.06.2025 um 13:15 │
|
||||
│ Druckdauer: 4:15 Stunden │
|
||||
│ Material: PLA, Grau │
|
||||
│ Drucker: Prusa i3 MK3S #1 │
|
||||
│ │
|
||||
│ 📍 ABHOLUNGSINFO: │
|
||||
│ Lagerort: Regal B2.1-A3 │
|
||||
│ Verfügbar: Sofort │
|
||||
│ Lagerzeit: Bis 23.06.2025 │
|
||||
│ Öffnungszeiten: Mo-Fr 8:00-16:00 │
|
||||
│ │
|
||||
│ ⚠️ WICHTIGE HINWEISE: │
|
||||
│ • Ausweis zur Abholung mitbringen │
|
||||
│ • Nach 7 Tagen wird Objekt entsorgt │
|
||||
│ • Bei Problemen: Ansprechpartner kontaktieren │
|
||||
│ │
|
||||
│ 📸 DRUCKERGEBNIS: │
|
||||
│ [Platz für Foto des gedruckten Objekts] │
|
||||
│ │
|
||||
│ ✅ QUALITÄTSKONTROLLE: │
|
||||
│ □ Oberflächenqualität OK │
|
||||
│ □ Maßhaltigkeit geprüft │
|
||||
│ □ Keine Druckfehler │
|
||||
│ │
|
||||
│ Unterschrift Admin: _______________ │
|
||||
│ │
|
||||
└─────────────────────────────────────────────────────┘
|
||||
|
||||
Hallo Max Mustermann,
|
||||
|
||||
Ihr Druckauftrag ist erfolgreich abgeschlossen! 🎉
|
||||
|
||||
📦 Job-Details:
|
||||
Name: Kundenpräsentation Prototyp
|
||||
Fertiggestellt: 16.06.2025 um 13:15 Uhr
|
||||
Druckdauer: 4:15 Stunden
|
||||
Material: PLA, Grau
|
||||
|
||||
📍 Abholung:
|
||||
Ort: TBA Marienfelde, Raum B2.1
|
||||
Öffnungszeiten: Mo-Fr 8:00-16:00 Uhr
|
||||
Lagerplatz: Regal B2.1-A3
|
||||
|
||||
⚠️ Wichtig:
|
||||
- Bringen Sie einen Ausweis mit
|
||||
- Abholung bis zum 23.06.2025
|
||||
- Danach wird das Objekt entsorgt
|
||||
|
||||
📸 Hier ist ein Foto Ihres fertigen Drucks:
|
||||
[Bild des gedruckten Objekts]
|
||||
|
||||
✨ Zufrieden? Wir freuen uns über Ihr Feedback:
|
||||
https://myp.tba-marienfelde.de/feedback/xyz123
|
||||
|
||||
Vielen Dank für die Nutzung von MYP!
|
||||
Das Team der TBA Marienfelde
|
||||
👨💼 ADMIN: Gast benachrichtigen (Tel./Vor-Ort)
|
||||
```
|
||||
|
||||
---
|
||||
|
Binary file not shown.
@ -402,7 +402,21 @@ def delete_job(job_id):
|
||||
|
||||
job_name = job.name or f"Job-{job_id}"
|
||||
|
||||
# Job löschen
|
||||
# Abhängige Datensätze vor Job-Löschung bereinigen
|
||||
jobs_logger.debug(f"🧹 Bereinige abhängige Datensätze für Job {job_id}")
|
||||
|
||||
# 1. JobOrder-Einträge löschen (NOT NULL foreign key)
|
||||
from models import JobOrder, GuestRequest
|
||||
job_orders_deleted = db_session.query(JobOrder).filter(JobOrder.job_id == job_id).delete()
|
||||
if job_orders_deleted > 0:
|
||||
jobs_logger.debug(f"🗑️ {job_orders_deleted} JobOrder-Einträge gelöscht")
|
||||
|
||||
# 2. GuestRequest job_id auf NULL setzen (NULLABLE foreign key)
|
||||
guest_requests_updated = db_session.query(GuestRequest).filter(GuestRequest.job_id == job_id).update({GuestRequest.job_id: None})
|
||||
if guest_requests_updated > 0:
|
||||
jobs_logger.debug(f"🔄 {guest_requests_updated} GuestRequest-Einträge aktualisiert")
|
||||
|
||||
# 3. Jetzt Job sicher löschen
|
||||
db_session.delete(job)
|
||||
db_session.commit()
|
||||
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user