- Removed `COMMON_ERRORS.md` file to streamline documentation. - Added `Flask-Limiter` for rate limiting and `redis` for session management in `requirements.txt`. - Expanded `ROADMAP.md` to include completed security features and planned enhancements for version 2.2. - Enhanced `setup_myp.sh` for ultra-secure kiosk installation, including system hardening and security configurations. - Updated `app.py` to integrate CSRF protection and improved logging setup. - Refactored user model to include username and active status for better user management. - Improved job scheduler with uptime tracking and task management features. - Updated various templates for a more cohesive user interface and experience.
128 lines
4.0 KiB
Markdown
128 lines
4.0 KiB
Markdown
# MYP Platform - 3D-Drucker Reservierungssystem
|
|
|
|
Ein Reservierungssystem für 3D-Drucker, das automatisch TP-Link Tapo P110 Smart Plugs steuert, um die Stromversorgung von Druckern basierend auf den reservierten Zeitslots zu verwalten.
|
|
|
|
## Features
|
|
|
|
- Reservierung von 3D-Druckern für bestimmte Zeiträume
|
|
- Automatische Steuerung der TP-Link Tapo P110 Smart Plugs
|
|
- Echtzeit-Überwachung von laufenden Druckaufträgen
|
|
- Administrationsbereich für Druckerverwaltung
|
|
- Benutzerauthentifizierung und Autorisierung
|
|
- Statistiken zu Druckaufträgen und Materialverbrauch
|
|
- Dark Mode für eine angenehme Nutzung bei schlechten Lichtverhältnissen
|
|
- Responsive Design für verschiedene Gerätegrößen
|
|
|
|
## Technologie-Stack
|
|
|
|
- **Backend**: Python 3.11 mit Flask
|
|
- **Frontend**: HTML/CSS/JavaScript mit Tailwind CSS
|
|
- **Datenbank**: SQLite mit SQLAlchemy ORM
|
|
- **Authentifizierung**: Flask-Login
|
|
- **Hardware-Integration**: PyP110 für Tapo Smart Plug Steuerung
|
|
- **Automatisierung**: Integrierter Job-Scheduler für Drucker-Steuerung
|
|
|
|
## Systemanforderungen
|
|
|
|
- Python 3.11+
|
|
- Node.js und npm (für Tailwind CSS)
|
|
- Netzwerkzugang zu TP-Link Tapo P110 Smart Plugs
|
|
- Unterstützte Betriebssysteme: Linux, Windows, macOS
|
|
|
|
## Installation
|
|
|
|
1. **Repository klonen**:
|
|
```bash
|
|
git clone <repository-url>
|
|
cd myp-platform
|
|
```
|
|
|
|
2. **Python-Abhängigkeiten installieren**:
|
|
```bash
|
|
pip install -r requirements.txt
|
|
```
|
|
|
|
3. **Node-Abhängigkeiten installieren**:
|
|
```bash
|
|
npm install
|
|
```
|
|
|
|
4. **Datenbank initialisieren**:
|
|
```bash
|
|
python3.11 init_db.py
|
|
```
|
|
|
|
5. **CSS generieren**:
|
|
```bash
|
|
npm run build:css
|
|
```
|
|
|
|
6. **Server starten**:
|
|
```bash
|
|
python3.11 app.py
|
|
```
|
|
|
|
## API Endpunkte
|
|
|
|
| Methode | Endpunkt | Beschreibung |
|
|
|---------|------------------------|--------------------------------------------------------|
|
|
| GET | /api/jobs | Gibt alle Jobs (für Admins) oder eigene Jobs zurück |
|
|
| GET | /api/jobs/active | Gibt alle aktiven Druckaufträge zurück |
|
|
| GET | /api/jobs/{id} | Gibt Details zu einem bestimmten Job zurück |
|
|
| POST | /api/jobs | Erstellt eine neue Druckerreservierung |
|
|
| GET | /api/printers | Gibt alle verfügbaren Drucker zurück |
|
|
|
|
## Scheduler
|
|
|
|
Das System enthält einen eingebauten Scheduler, der automatisch:
|
|
- Drucker einschaltet, wenn ein Auftrag beginnt
|
|
- Drucker ausschaltet, wenn ein Auftrag endet
|
|
- Den Status von Druckern aktualisiert
|
|
- Die Auftragsstatistiken sammelt
|
|
|
|
## Konfiguration
|
|
|
|
Die Konfiguration erfolgt über die Datei `config/settings.py`. Wichtige Einstellungen umfassen:
|
|
- Datenbankpfad
|
|
- Tapo-Zugangsdaten
|
|
- Drucker-Konfigurationen
|
|
- Logging-Einstellungen
|
|
- Webserver-Einstellungen
|
|
|
|
## CSS-System
|
|
|
|
Die Anwendung nutzt Tailwind CSS für das Styling mit separaten Dateien für Light- und Dark-Mode.
|
|
|
|
### Tailwind Build
|
|
|
|
```bash
|
|
# Light Mode CSS bauen
|
|
npx tailwindcss -i ./static/css/input.css -o ./static/css/tailwind.min.css --minify
|
|
|
|
# Dark Mode CSS bauen
|
|
npx tailwindcss -i ./static/css/input.css -o ./static/css/tailwind-dark.min.css --minify --dark-mode 'class'
|
|
```
|
|
|
|
Weitere Informationen zur CSS-Konfiguration finden Sie in der `TAILWIND_SETUP.md`.
|
|
|
|
## Sicherheit
|
|
|
|
- Nur angemeldete Benutzer können Druckaufträge erstellen
|
|
- Nur Besitzer eines Druckauftrags können diesen verwalten
|
|
- Nur Administratoren haben Zugriff auf alle Jobs und Systemeinstellungen
|
|
- Passwörter werden mit bcrypt gesichert
|
|
|
|
## Fehlerbehandlung und Logging
|
|
|
|
Das System führt detaillierte Logs in folgenden Kategorien:
|
|
- App-Log (allgemeine Anwendungslogs)
|
|
- Auth-Log (Authentifizierungsereignisse)
|
|
- Jobs-Log (Druckauftragsoperationen)
|
|
- Printer-Log (Druckerstatusänderungen)
|
|
- Scheduler-Log (Automatisierungsaktionen)
|
|
- Error-Log (Fehlerprotokollierung)
|
|
|
|
## Entwicklung
|
|
|
|
Diese Anwendung ist für den Offline-Betrieb konzipiert und verwendet keine externen CDNs.
|
|
Weitere Informationen zur Entwicklungsumgebung finden Sie in der `TAILWIND_SETUP.md`. |