261 lines
7.9 KiB
Markdown
261 lines
7.9 KiB
Markdown
# 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
|
|
|
|
### 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 <repository-url>
|
|
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=<sicherheitsschlüssel>
|
|
DATABASE_PATH=database/app.db
|
|
ENVIRONMENT=production
|
|
|
|
# Steckdosen-Konfiguration
|
|
TAPO_USERNAME=<steckdosen-benutzername>
|
|
TAPO_PASSWORD=<steckdosen-passwort>
|
|
```
|
|
|
|
### 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.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.
|
|
|
|
--- |