📚 Improved documentation and log files for better system understanding & maintenance. 🖥️🔍
This commit is contained in:
@@ -1,282 +1,459 @@
|
||||
# Mercedes-Benz TBA Marienfelde - 3D-Drucker Management System
|
||||
# MYP Druckerverwaltung
|
||||
|
||||
## Übersicht
|
||||
Ein umfassendes Druckerverwaltungssystem für Mercedes-Benz, optimiert für Debian/Linux-Systeme mit HTTPS-Kiosk-Modus.
|
||||
|
||||
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.
|
||||
## 🚀 Schnellstart
|
||||
|
||||
## Hauptfunktionen
|
||||
### Debian/Linux Kiosk-Installation (Empfohlen)
|
||||
|
||||
### 🖨️ 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 <repository-url>
|
||||
cd backend
|
||||
|
||||
# Python-Abhängigkeiten installieren
|
||||
pip install -r requirements.txt
|
||||
# Konsolidiertes Setup-Skript ausführen
|
||||
sudo ./setup.sh
|
||||
```
|
||||
|
||||
# Frontend-Abhängigkeiten installieren
|
||||
**Installationsoptionen**:
|
||||
1. **Nur Abhängigkeiten installieren** - System vorbereiten ohne Kiosk-Modus
|
||||
2. **Finale Kiosk-Installation** - Vollständige Kiosk-Konfiguration
|
||||
3. **Nur Services installieren** - Systemd-Services aktualisieren
|
||||
4. **System-Test** - Funktionalität überprüfen
|
||||
|
||||
**Nach der Installation**: System mit `sudo reboot` neustarten für automatischen Kiosk-Modus.
|
||||
|
||||
### Entwicklungsumgebung (Windows)
|
||||
|
||||
```bash
|
||||
# Abhängigkeiten installieren
|
||||
pip install -r requirements.txt
|
||||
npm install
|
||||
|
||||
# CSS kompilieren
|
||||
npm run build-css
|
||||
|
||||
# Datenbank initialisieren
|
||||
python -c "from models import init_database; init_database()"
|
||||
|
||||
# Anwendung starten
|
||||
python app.py
|
||||
# Entwicklungsserver starten
|
||||
python app.py --debug
|
||||
```
|
||||
|
||||
### 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
|
||||
## 📋 Systemanforderungen
|
||||
|
||||
## Konfiguration
|
||||
### Produktionsumgebung (Kiosk)
|
||||
- **Debian/Raspbian** (Raspberry Pi OS empfohlen)
|
||||
- Raspberry Pi 4 mit 2GB+ RAM
|
||||
- 16GB+ SD-Karte
|
||||
- HDMI-Monitor
|
||||
- Netzwerkverbindung
|
||||
|
||||
### Umgebungsvariablen
|
||||
```bash
|
||||
# Grundkonfiguration
|
||||
SECRET_KEY=<sicherheitsschlüssel>
|
||||
DATABASE_PATH=database/app.db
|
||||
ENVIRONMENT=production
|
||||
### Entwicklungsumgebung
|
||||
- **Windows 10/11** (nur für Entwicklung)
|
||||
- Python 3.8+
|
||||
- Node.js 18+
|
||||
- Git
|
||||
|
||||
# Steckdosen-Konfiguration
|
||||
TAPO_USERNAME=<steckdosen-benutzername>
|
||||
TAPO_PASSWORD=<steckdosen-passwort>
|
||||
```
|
||||
## 🔧 Features
|
||||
|
||||
### 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
|
||||
### Kern-Funktionalitäten
|
||||
- **Druckerverwaltung** mit Smart-Plug-Integration (TP-Link Tapo)
|
||||
- **Job-Management** mit Warteschlangen-System
|
||||
- **Benutzerverwaltung** mit Rollen und Berechtigungen
|
||||
- **Gast-Anfragen** für temporären Zugriff
|
||||
- **Echtzeit-Dashboard** mit Live-Statistiken
|
||||
- **Automatische Backups** und Wartung
|
||||
|
||||
## Sicherheit
|
||||
### Kiosk-Modus Features
|
||||
- **HTTPS auf Port 443** mit automatischen SSL-Zertifikaten
|
||||
- **Chromium-Vollbildmodus** ohne Desktop-Environment
|
||||
- **Automatischer Login** und Browser-Start
|
||||
- **Watchdog-Überwachung** für Systemstabilität
|
||||
- **Responsive Design** für Desktop-Nutzung
|
||||
|
||||
### Zugriffskontrolle
|
||||
- **CSRF-Schutz** für alle Formulare
|
||||
- **Session-basierte Authentifizierung**
|
||||
- **Rollenbasierte Berechtigungen** (Admin/User)
|
||||
- **Automatisches Session-Timeout**
|
||||
### Sicherheit
|
||||
- **SSL/TLS-Verschlüsselung** (selbstsignierte Zertifikate)
|
||||
- **CSRF-Schutz** und Session-Management
|
||||
- **Rate-Limiting** und Eingabevalidierung
|
||||
- **Systemd-Service-Isolation**
|
||||
|
||||
### Steckdosen-Sicherheit
|
||||
- **Risikobewertung** vor jeder Aktion
|
||||
- **Automatische Warnungen** bei aktiven Jobs
|
||||
- **Force-Modus** nur mit expliziter Bestätigung
|
||||
- **Vollständige Audit-Logs** aller Aktionen
|
||||
## 🏗️ Architektur
|
||||
|
||||
## API-Dokumentation
|
||||
### Backend
|
||||
- **Flask 3.1.1** - Web-Framework
|
||||
- **SQLAlchemy 2.0.36** - ORM und Datenbankzugriff
|
||||
- **SQLite** - Eingebettete Datenbank
|
||||
- **Gunicorn** - WSGI-Server für Produktion
|
||||
|
||||
### Steckdosen-Test-Endpunkte
|
||||
### Frontend
|
||||
- **TailwindCSS** - Utility-First CSS Framework
|
||||
- **Chart.js** - Datenvisualisierung
|
||||
- **FontAwesome** - Icons
|
||||
- **Vanilla JavaScript** - Interaktivität
|
||||
|
||||
```http
|
||||
GET /api/printers/test/socket/{printer_id}
|
||||
```
|
||||
Detaillierter Status einer Steckdose mit Sicherheitsbewertung
|
||||
### System-Integration
|
||||
- **systemd** - Service-Management
|
||||
- **OpenSSL** - SSL-Zertifikat-Generierung
|
||||
- **Chromium** - Kiosk-Browser
|
||||
- **X11** - Minimale Grafikumgebung
|
||||
|
||||
```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
|
||||
## 📁 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
|
||||
├── app.py # Hauptanwendung mit HTTPS-Support
|
||||
├── models.py # Datenbankmodelle
|
||||
├── setup.sh # Konsolidiertes Setup-Skript
|
||||
├── requirements.txt # Python-Abhängigkeiten
|
||||
├── package.json # Node.js-Abhängigkeiten
|
||||
├──
|
||||
├── systemd/ # Systemd-Service-Dateien
|
||||
│ ├── myp-https.service # HTTPS-Backend-Service
|
||||
│ ├── myp-kiosk.service # Kiosk-Browser-Service
|
||||
│ ├── kiosk-watchdog.service # Überwachungsservice
|
||||
│ └── kiosk-watchdog-python.service # Python-Watchdog
|
||||
├──
|
||||
├── blueprints/ # Flask-Blueprints
|
||||
│ ├── auth.py # Authentifizierung
|
||||
│ ├── users.py # Benutzerverwaltung
|
||||
│ ├── printers.py # Druckerverwaltung
|
||||
│ ├── jobs.py # Job-Management
|
||||
│ └── guest.py # Gast-Anfragen
|
||||
├──
|
||||
├── config/ # Konfigurationsdateien
|
||||
│ └── settings.py # Hauptkonfiguration
|
||||
├──
|
||||
├── utils/ # Hilfsfunktionen
|
||||
│ ├── ssl_config.py # SSL-Zertifikat-Management
|
||||
│ ├── logging_config.py # Logging-Konfiguration
|
||||
│ ├── queue_manager.py # Job-Warteschlange
|
||||
│ └── printer_monitor.py # Drucker-Überwachung
|
||||
├──
|
||||
├── static/ # Statische Dateien
|
||||
│ ├── css/ # Stylesheets
|
||||
│ ├── js/ # JavaScript
|
||||
│ └── icons/ # Icons und Bilder
|
||||
├──
|
||||
├── templates/ # Jinja2-Templates
|
||||
├── docs/ # Dokumentation
|
||||
├── logs/ # Log-Dateien
|
||||
└── uploads/ # Hochgeladene Dateien
|
||||
```
|
||||
|
||||
## Wartung
|
||||
## 🔧 Installation
|
||||
|
||||
### Regelmäßige Aufgaben
|
||||
- **Backup** der Datenbank erstellen
|
||||
- **Log-Rotation** für Speicherplatz-Management
|
||||
- **Steckdosen-Konnektivität** prüfen
|
||||
- **Updates** für Sicherheits-Patches
|
||||
### Option 1: Automatische Installation mit setup.sh (Empfohlen)
|
||||
|
||||
### Monitoring
|
||||
- **Anwendungs-Logs** in `logs/` Verzeichnis
|
||||
- **Datenbank-Größe** und Performance überwachen
|
||||
- **Netzwerk-Verbindungen** zu Steckdosen prüfen
|
||||
```bash
|
||||
# Als Root ausführen
|
||||
sudo ./setup.sh
|
||||
|
||||
## Support
|
||||
# Menüoptionen:
|
||||
# 1. Nur Abhängigkeiten installieren und System vorbereiten
|
||||
# 2. Finale Installation mit kompletter Kiosk-Modus-Konfiguration
|
||||
# 3. Nur Services installieren/aktualisieren
|
||||
# 4. System-Test durchführen
|
||||
# 5. Beenden
|
||||
```
|
||||
|
||||
### 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
|
||||
**Installationsmodi**:
|
||||
- **Option 1**: Ideal für Entwicklung und erste Tests
|
||||
- **Option 2**: Vollständige Produktionsinstallation
|
||||
- **Option 3**: Service-Updates ohne Systemänderungen
|
||||
- **Option 4**: Diagnose und Wartung
|
||||
|
||||
### Option 2: Manuelle Installation
|
||||
|
||||
#### Schritt 1: System vorbereiten
|
||||
```bash
|
||||
sudo apt-get update && sudo apt-get upgrade -y
|
||||
sudo apt-get install -y python3 python3-pip nodejs npm git
|
||||
```
|
||||
|
||||
#### Schritt 2: Abhängigkeiten installieren
|
||||
```bash
|
||||
# Python-Pakete (ohne virtuelles Environment)
|
||||
pip3 install -r requirements.txt --break-system-packages
|
||||
|
||||
# Node.js-Pakete
|
||||
npm install
|
||||
|
||||
# TailwindCSS kompilieren
|
||||
npm run build:css
|
||||
```
|
||||
|
||||
#### Schritt 3: SSL-Zertifikate generieren
|
||||
```bash
|
||||
python3 -c "
|
||||
import sys; sys.path.insert(0, '.')
|
||||
from utils.ssl_config import ensure_ssl_certificates
|
||||
ensure_ssl_certificates('.', True)
|
||||
"
|
||||
```
|
||||
|
||||
#### Schritt 4: Services einrichten
|
||||
```bash
|
||||
# Services aus systemd/ Verzeichnis kopieren
|
||||
sudo cp systemd/*.service /etc/systemd/system/
|
||||
sudo systemctl daemon-reload
|
||||
|
||||
# HTTPS-Service aktivieren
|
||||
sudo systemctl enable myp-https.service
|
||||
sudo systemctl start myp-https.service
|
||||
|
||||
# Kiosk-Service aktivieren (optional)
|
||||
sudo systemctl enable myp-kiosk.service
|
||||
```
|
||||
|
||||
## 🌐 Zugriff
|
||||
|
||||
### Lokaler Zugriff
|
||||
- **HTTPS**: `https://localhost:443`
|
||||
- **HTTP (Entwicklung)**: `http://localhost:5000`
|
||||
|
||||
### Netzwerk-Zugriff
|
||||
- **HTTPS**: `https://<raspberry-pi-ip>:443`
|
||||
|
||||
### Standard-Anmeldedaten
|
||||
- **Benutzername**: `admin`
|
||||
- **Passwort**: `admin123`
|
||||
|
||||
⚠️ **Wichtig**: Ändern Sie das Standard-Passwort nach der ersten Anmeldung!
|
||||
|
||||
## 🔧 Konfiguration
|
||||
|
||||
### Umgebungsvariablen
|
||||
```bash
|
||||
# Produktionsumgebung
|
||||
export FLASK_ENV=production
|
||||
export FLASK_HOST=0.0.0.0
|
||||
export FLASK_PORT=443
|
||||
|
||||
# Entwicklungsumgebung
|
||||
export FLASK_ENV=development
|
||||
export FLASK_HOST=127.0.0.1
|
||||
export FLASK_PORT=5000
|
||||
```
|
||||
|
||||
### SSL-Konfiguration
|
||||
```bash
|
||||
# Automatische Zertifikat-Generierung
|
||||
python3 utils/ssl_config.py /opt/myp
|
||||
|
||||
# Manuelle Zertifikat-Erneuerung
|
||||
python3 utils/ssl_config.py /opt/myp --force
|
||||
```
|
||||
|
||||
### Drucker-Konfiguration
|
||||
1. **Admin-Panel** → **Drucker** → **Neuer Drucker**
|
||||
2. IP-Adresse und TP-Link Tapo-Zugangsdaten eingeben
|
||||
3. Drucker-Test durchführen
|
||||
4. Smart-Plug-Integration aktivieren
|
||||
|
||||
## 📊 Überwachung
|
||||
|
||||
### Service-Status
|
||||
```bash
|
||||
# HTTPS-Service
|
||||
sudo systemctl status myp-https.service
|
||||
sudo journalctl -u myp-https -f
|
||||
|
||||
# Kiosk-Service
|
||||
sudo systemctl status myp-kiosk.service
|
||||
sudo journalctl -u myp-kiosk -f
|
||||
|
||||
# Watchdog-Service
|
||||
sudo systemctl status kiosk-watchdog.service
|
||||
sudo tail -f /var/log/kiosk-watchdog.log
|
||||
```
|
||||
|
||||
### System-Tests
|
||||
```bash
|
||||
# HTTPS-Erreichbarkeit
|
||||
curl -k https://localhost:443
|
||||
|
||||
# SSL-Zertifikat prüfen
|
||||
openssl s_client -connect localhost:443 -servername localhost
|
||||
|
||||
# Automatische Tests mit setup.sh
|
||||
sudo ./setup.sh # Option 4: System-Test
|
||||
```
|
||||
|
||||
### Log-Dateien
|
||||
```bash
|
||||
# Anwendungslogs
|
||||
tail -f logs/app/app.log
|
||||
tail -f logs/auth/auth.log
|
||||
tail -f logs/printers/printers.log
|
||||
|
||||
# Systemlogs
|
||||
sudo journalctl -u myp-https -f
|
||||
sudo tail -f /var/log/kiosk-watchdog.log
|
||||
|
||||
# Installationslog
|
||||
sudo tail -f /var/log/myp-install.log
|
||||
```
|
||||
|
||||
## 🛠️ Entwicklung
|
||||
|
||||
### Entwicklungsserver starten
|
||||
```bash
|
||||
# HTTP-Entwicklungsserver (Port 5000)
|
||||
python app.py --debug
|
||||
|
||||
# HTTPS-Produktionsserver (Port 443)
|
||||
python app.py
|
||||
```
|
||||
|
||||
### Frontend-Entwicklung
|
||||
```bash
|
||||
# TailwindCSS im Watch-Modus
|
||||
npm run watch:css
|
||||
|
||||
# CSS kompilieren
|
||||
npm run build:css
|
||||
|
||||
# Alle Assets bauen
|
||||
npm run build
|
||||
```
|
||||
|
||||
### Datenbank-Management
|
||||
```bash
|
||||
# Datenbank initialisieren
|
||||
python -c "from models import init_database; init_database()"
|
||||
|
||||
# Backup erstellen
|
||||
python -c "from utils.backup_manager import BackupManager; BackupManager().create_backup()"
|
||||
```
|
||||
|
||||
## 🔒 Sicherheit
|
||||
|
||||
### SSL/TLS
|
||||
- **TLS 1.2+** erforderlich
|
||||
- **Starke Cipher-Suites** konfiguriert
|
||||
- **Selbstsignierte Zertifikate** für localhost
|
||||
- **Automatische Erneuerung** bei Ablauf
|
||||
|
||||
### Anwendungssicherheit
|
||||
- **CSRF-Schutz** aktiviert
|
||||
- **Session-Management** mit Timeout
|
||||
- **Rate-Limiting** für API-Endpunkte
|
||||
- **Eingabevalidierung** und Sanitization
|
||||
|
||||
### System-Sicherheit
|
||||
- **Minimale X11-Umgebung** ohne Desktop
|
||||
- **Kiosk-User** ohne Sudo-Rechte
|
||||
- **Systemd-Service-Isolation**
|
||||
- **Read-only Systempartitionen** (optional)
|
||||
|
||||
## 📚 Dokumentation
|
||||
|
||||
### Detaillierte Anleitungen
|
||||
- [`docs/SETUP_ANLEITUNG.md`](docs/SETUP_ANLEITUNG.md) - Konsolidiertes Setup-System
|
||||
- [`docs/INSTALLATION_DEBIAN_KIOSK.md`](docs/INSTALLATION_DEBIAN_KIOSK.md) - Vollständige Kiosk-Installation
|
||||
- [`docs/API_DOCUMENTATION.md`](docs/API_DOCUMENTATION.md) - API-Referenz
|
||||
- [`docs/CONFIGURATION.md`](docs/CONFIGURATION.md) - Konfigurationsoptionen
|
||||
- [`docs/TROUBLESHOOTING.md`](docs/TROUBLESHOOTING.md) - Fehlerbehebung
|
||||
|
||||
### API-Endpunkte
|
||||
- **Authentifizierung**: `/auth/login`, `/auth/logout`
|
||||
- **Drucker**: `/api/printers`, `/api/printers/{id}`
|
||||
- **Jobs**: `/api/jobs`, `/api/jobs/{id}`
|
||||
- **Benutzer**: `/api/users`, `/api/users/{id}`
|
||||
- **Dashboard**: `/api/dashboard/refresh`, `/api/stats`
|
||||
|
||||
## 🐛 Fehlerbehebung
|
||||
|
||||
### 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
|
||||
#### HTTPS nicht erreichbar
|
||||
```bash
|
||||
# Development Server
|
||||
export FLASK_ENV=development
|
||||
python app.py
|
||||
# Service-Status prüfen
|
||||
sudo systemctl status myp-https.service
|
||||
|
||||
# CSS Watch Mode
|
||||
npm run watch-css
|
||||
# SSL-Zertifikate neu generieren
|
||||
sudo python3 utils/ssl_config.py /opt/myp --force
|
||||
sudo systemctl restart myp-https.service
|
||||
|
||||
# Tests ausführen
|
||||
python -m pytest tests/
|
||||
# Oder mit setup.sh
|
||||
sudo ./setup.sh # Option 1 für Zertifikat-Neugenerierung
|
||||
```
|
||||
|
||||
### Deployment
|
||||
Das System läuft produktiv in der Mercedes-Benz TBA Marienfelde und ist für Windows-Umgebungen optimiert.
|
||||
#### Kiosk-Browser startet nicht
|
||||
```bash
|
||||
# X-Server prüfen
|
||||
ps aux | grep X
|
||||
|
||||
## Changelog
|
||||
# Browser manuell starten
|
||||
sudo su - kiosk
|
||||
DISPLAY=:0 chromium --kiosk https://localhost:443
|
||||
|
||||
### 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)`
|
||||
# Service-Status prüfen
|
||||
sudo systemctl status myp-kiosk.service
|
||||
```
|
||||
|
||||
### 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
|
||||
#### Hohe Speichernutzung
|
||||
```bash
|
||||
# Browser-Cache leeren
|
||||
sudo rm -rf /home/kiosk/.chromium-kiosk/Default/Cache/*
|
||||
|
||||
### Version 1.0
|
||||
- Grundlegendes Drucker-Management-System
|
||||
- Benutzer- und Rechteverwaltung
|
||||
- Dashboard und Monitoring
|
||||
- Gastanfragen-System
|
||||
# System-Cache leeren
|
||||
sudo sync && sudo echo 3 > /proc/sys/vm/drop_caches
|
||||
|
||||
## Lizenz
|
||||
# Watchdog überwacht automatisch Speichernutzung
|
||||
sudo journalctl -u kiosk-watchdog -f
|
||||
```
|
||||
|
||||
Internes Projekt der Mercedes-Benz AG für die TBA Marienfelde.
|
||||
### Support
|
||||
Bei Problemen:
|
||||
1. **System-Test durchführen**: `sudo ./setup.sh` → Option 4
|
||||
2. **Log-Bundle erstellen**:
|
||||
```bash
|
||||
sudo tar -czf myp-logs-$(date +%Y%m%d).tar.gz \
|
||||
logs/ \
|
||||
/var/log/kiosk-watchdog.log \
|
||||
/var/log/myp-install.log
|
||||
```
|
||||
|
||||
## 🔄 Updates
|
||||
|
||||
### Anwendungs-Updates
|
||||
```bash
|
||||
cd /opt/myp
|
||||
git pull origin main
|
||||
sudo pip3 install -r requirements.txt --break-system-packages --upgrade
|
||||
sudo npm install
|
||||
|
||||
# Services mit setup.sh aktualisieren
|
||||
sudo ./setup.sh # Option 3: Nur Services installieren
|
||||
|
||||
sudo systemctl restart myp-https.service
|
||||
```
|
||||
|
||||
### System-Updates
|
||||
```bash
|
||||
sudo apt-get update && sudo apt-get upgrade -y
|
||||
sudo reboot
|
||||
```
|
||||
|
||||
## 📄 Lizenz
|
||||
|
||||
Dieses Projekt ist für den internen Gebrauch bei Mercedes-Benz entwickelt.
|
||||
|
||||
## 🤝 Beitragen
|
||||
|
||||
1. Fork des Repositories erstellen
|
||||
2. Feature-Branch erstellen (`git checkout -b feature/AmazingFeature`)
|
||||
3. Änderungen committen (`git commit -m 'Add some AmazingFeature'`)
|
||||
4. Branch pushen (`git push origin feature/AmazingFeature`)
|
||||
5. Pull Request erstellen
|
||||
|
||||
## 📞 Support
|
||||
|
||||
- **Dokumentation**: [`docs/`](docs/) Verzeichnis
|
||||
- **Setup-Anleitung**: [`docs/SETUP_ANLEITUNG.md`](docs/SETUP_ANLEITUNG.md)
|
||||
- **Issues**: GitHub Issues für Bug-Reports
|
||||
- **Logs**: Automatische Log-Sammlung mit `setup.sh`
|
||||
|
||||
---
|
||||
|
||||
**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.
|
||||
|
||||
---
|
||||
**Version**: 4.0.0
|
||||
**Plattform**: Debian/Linux (Raspberry Pi OS)
|
||||
**Modus**: HTTPS Kiosk (Port 443)
|
||||
**Setup**: Konsolidiertes `setup.sh` System
|
||||
**Entwickelt für**: Mercedes-Benz MYP
|
Reference in New Issue
Block a user