# Mercedes-Benz TBA Marienfelde - 3D-Drucker Management System ## Übersicht Ein umfassendes Management-System für 3D-Drucker in der Mercedes-Benz Technischen Berufsausbildung (TBA) Marienfelde. Das System ermöglicht die zentrale Verwaltung, Überwachung und Steuerung von 3D-Druckern und deren Stromversorgung. ## Hauptfunktionen ### 🖨️ Drucker-Management - Zentrale Verwaltung aller 3D-Drucker - Echtzeit-Statusüberwachung - Druckjob-Verwaltung und -Scheduling - Benutzer- und Rechteverwaltung ### ⚡ **NEU: Steckdosen-Test-System** Sichere Testfunktion für Ausbilder und Administratoren zur Steuerung der Druckerstromversorgung: - **Sicherheitsprüfungen**: Automatische Warnungen bei aktiven Druckjobs - **Risikobewertung**: Intelligente Analyse basierend auf Stromverbrauch und Gerätestatus - **Force-Modus**: Notfallsteuerung mit erweiterten Sicherheitsabfragen - **Audit-Trail**: Vollständige Protokollierung aller Testaktivitäten - **Echtzeit-Monitoring**: Live-Status aller konfigurierten Steckdosen **Zugriff:** `/socket-test` (nur für Administratoren) ### 📊 Monitoring & Analytics - Live-Dashboard mit Druckerstatus - Energieverbrauchsüberwachung - Statistiken und Berichte - Fehlerprotokollierung ### 👤 Benutzer-System - Rollenbasierte Zugriffskontrolle - Gastanfragen für externe Nutzer - Admin-Bereich für Systemverwaltung - Session-Management mit automatischem Logout ## Technische Spezifikationen ### Backend - **Framework:** Flask (Python) - **Datenbank:** SQLite mit WAL-Modus - **ORM:** SQLAlchemy - **Authentifizierung:** Flask-Login - **API:** RESTful JSON-API ### ⚡ **NEU: Sofort-Shutdown-System** Aggressiver Signal-Handler für sofortiges und sicheres Herunterfahren: - **Strg+C Unterstützung**: Sofortiges Shutdown bei SIGINT/SIGTERM - **Datenbank-Schutz**: Automatischer WAL-Checkpoint vor Beendigung - **Session-Cleanup**: Alle DB-Sessions werden ordnungsgemäß geschlossen - **Plattform-übergreifend**: Windows (SIGBREAK) und Unix/Linux (SIGHUP) Support - **Fehlerresistent**: Robuste Behandlung auch bei Cleanup-Fehlern - **Sofortiger Exit**: Verwendet `os._exit(0)` für garantierte Beendigung **Funktion:** Drücken Sie `Strg+C` um die Anwendung sofort und sicher zu beenden. **Dokumentation:** [`docs/STRG_C_SHUTDOWN.md`](docs/STRG_C_SHUTDOWN.md) ### Frontend - **Framework:** Vanilla JavaScript + Tailwind CSS - **Design:** Mercedes-Benz Corporate Design - **Responsive:** Mobile-first Design - **Interaktion:** AJAX-basierte Real-time Updates ### Hardware-Integration - **Steckdosen:** TP-Link Tapo P110 Smart Plugs - **Protokoll:** PyP100 für Tapo-Kommunikation - **Netzwerk:** Lokales Subnetz für Geräte-Kommunikation ## Installation ### Voraussetzungen - Python 3.8+ - Node.js 16+ (für Frontend-Build) - Netzwerkzugang zu den Steckdosen ### Setup ```bash # Repository klonen git clone cd backend # Python-Abhängigkeiten installieren pip install -r requirements.txt # Frontend-Abhängigkeiten installieren npm install # CSS kompilieren npm run build-css # Datenbank initialisieren python -c "from models import init_database; init_database()" # Anwendung starten python app.py ``` ### Erste Schritte 1. **Admin-Account erstellen**: Beim ersten Start wird automatisch ein Admin-Account erstellt 2. **Drucker hinzufügen**: Über das Admin-Panel Drucker und Steckdosen konfigurieren 3. **Benutzer verwalten**: Weitere Benutzer und Rollen zuweisen 4. **Steckdosen testen**: Über `/socket-test` die neue Testfunktionalität nutzen ## Konfiguration ### Umgebungsvariablen ```bash # Grundkonfiguration SECRET_KEY= DATABASE_PATH=database/app.db ENVIRONMENT=production # Steckdosen-Konfiguration TAPO_USERNAME= TAPO_PASSWORD= ``` ### Drucker-Steckdosen-Zuordnung Jeder Drucker kann mit einer Steckdose verknüpft werden: - **IP-Adresse** der Steckdose - **Benutzername/Passwort** für Authentifizierung - **MAC-Adresse** für eindeutige Identifikation ## Sicherheit ### Zugriffskontrolle - **CSRF-Schutz** für alle Formulare - **Session-basierte Authentifizierung** - **Rollenbasierte Berechtigungen** (Admin/User) - **Automatisches Session-Timeout** ### Steckdosen-Sicherheit - **Risikobewertung** vor jeder Aktion - **Automatische Warnungen** bei aktiven Jobs - **Force-Modus** nur mit expliziter Bestätigung - **Vollständige Audit-Logs** aller Aktionen ## API-Dokumentation ### Steckdosen-Test-Endpunkte ```http GET /api/printers/test/socket/{printer_id} ``` Detaillierter Status einer Steckdose mit Sicherheitsbewertung ```http POST /api/printers/test/socket/{printer_id}/control ``` Steckdose für Tests ein-/ausschalten mit Sicherheitsprüfungen ```http GET /api/printers/test/all-sockets ``` Übersicht aller Steckdosen mit Zusammenfassung Vollständige API-Dokumentation: [docs/STECKDOSEN_TEST_DOKUMENTATION.md](docs/STECKDOSEN_TEST_DOKUMENTATION.md) ## Projektstruktur ``` backend/ ├── app.py # Hauptanwendung ├── models.py # Datenmodelle ├── requirements.txt # Python-Abhängigkeiten ├── blueprints/ # Modulare Routen │ ├── printers.py # Drucker-Management (inkl. Steckdosen-Tests) │ ├── users.py # Benutzerverwaltung │ ├── guest.py # Gastanfragen │ └── calendar.py # Terminplanung ├── templates/ # HTML-Templates │ ├── base.html # Basis-Template │ ├── socket_test.html # Steckdosen-Test-Interface │ └── ... ├── static/ # Statische Dateien ├── utils/ # Hilfsfunktionen ├── config/ # Konfigurationsdateien ├── docs/ # Dokumentation │ └── STECKDOSEN_TEST_DOKUMENTATION.md └── database/ # Datenbankdateien ``` ## Wartung ### Regelmäßige Aufgaben - **Backup** der Datenbank erstellen - **Log-Rotation** für Speicherplatz-Management - **Steckdosen-Konnektivität** prüfen - **Updates** für Sicherheits-Patches ### Monitoring - **Anwendungs-Logs** in `logs/` Verzeichnis - **Datenbank-Größe** und Performance überwachen - **Netzwerk-Verbindungen** zu Steckdosen prüfen ## Support ### Fehlerbehebung 1. **Logs prüfen**: `logs/app/` für Anwendungsfehler 2. **Netzwerk testen**: Erreichbarkeit der Steckdosen prüfen 3. **Datenbank-Status**: SQLite-Datei auf Korruption prüfen ### Häufige Probleme - **Steckdose nicht erreichbar**: IP-Adresse und Netzwerk prüfen - **Admin-Zugriff verweigert**: Benutzerrolle in Datenbank kontrollieren - **Session-Timeout**: Einstellungen in `config/settings.py` anpassen ## Entwicklung ### Lokale Entwicklung ```bash # Development Server export FLASK_ENV=development python app.py # CSS Watch Mode npm run watch-css # Tests ausführen python -m pytest tests/ ``` ### Deployment Das System läuft produktiv in der Mercedes-Benz TBA Marienfelde und ist für Windows-Umgebungen optimiert. ## Changelog ### Version 1.2 (2025-01-06) - 🚨 **NEU**: Strg+C Sofort-Shutdown-System implementiert - 🔒 **Sicherheit**: Aggressiver Signal-Handler für SIGINT/SIGTERM/SIGBREAK - 💾 **Datenbank**: Automatischer WAL-Checkpoint vor Programmende - 🧹 **Cleanup**: Ordnungsgemäßer Session- und Engine-Cleanup - 🌍 **Plattform**: Unterstützung für Windows und Unix/Linux Signale - ⚡ **Performance**: Sofortiger Exit mit `os._exit(0)` ### Version 1.1 (2025-01-05) - ✨ **NEU**: Steckdosen-Test-System für Administratoren - 🔒 **Sicherheit**: Erweiterte Risikobewertung und Warnungen - 📊 **Monitoring**: Live-Status aller Steckdosen - 📝 **Audit**: Vollständige Protokollierung aller Testaktivitäten - 🎨 **UI**: Dedizierte Steckdosen-Test-Oberfläche ### Version 1.0 - Grundlegendes Drucker-Management-System - Benutzer- und Rechteverwaltung - Dashboard und Monitoring - Gastanfragen-System ## Lizenz Internes Projekt der Mercedes-Benz AG für die TBA Marienfelde. --- **Entwickelt für:** Mercedes-Benz Technische Berufsausbildung Marienfelde **Letzte Aktualisierung:** 2025-01-05 **Version:** 1.1 ## Kürzlich behobene Probleme ### Shutdown- und Cleanup-Verbesserungen ✅ **Problem**: Die Anwendung hatte Probleme beim ordnungsgemäßen Herunterfahren mit hängenden Prozessen und inkonsistenten Zuständen. **Lösung**: Implementierung eines zentralen Shutdown-Managers mit: - ✅ **Koordiniertes Shutdown**: Alle Komponenten werden in der richtigen Reihenfolge gestoppt - ✅ **Timeout-Management**: Verhindert hängende Cleanup-Operationen - ✅ **Prioritäts-basierte Ausführung**: Kritische Komponenten werden zuerst gestoppt - ✅ **Robuste Fehlerbehandlung**: Einzelfehler stoppen nicht das gesamte Shutdown - ✅ **Plattform-spezifisch**: Optimiert für Windows und Unix/Linux **Technische Details**: - Neuer `utils/shutdown_manager.py` koordiniert alle Cleanup-Operationen - Queue Manager, Scheduler und Datenbank-Cleanup werden zentral verwaltet - Reduzierte Shutdown-Zeit von >30s auf <10s in normalen Fällen - Detaillierte Logs für besseres Debugging **Dokumentation**: Siehe [`docs/SHUTDOWN_VERBESSERUNGEN.md`](docs/SHUTDOWN_VERBESSERUNGEN.md) für vollständige Details. ---