diff --git a/SUMMARY.md b/SUMMARY.md new file mode 100644 index 00000000..93085aed --- /dev/null +++ b/SUMMARY.md @@ -0,0 +1,177 @@ +# MYP-Plattform Projektübersicht + +## 1. Projektüberblick + +Die MYP-Plattform (My Young Printer) ist ein Verwaltungssystem für 3D-Drucker mit folgenden Kernfunktionen: + +- Zentrale Verwaltung mehrerer 3D-Drucker über ein Netzwerk +- Steuerung der Stromversorgung über SmartPlugs (Tapo P110) +- Benutzer- und Auftragsmanagement mit Reservierungsfunktionalität +- Offline-Fähigkeit durch Service Worker Integration +- REST-API für Frontend und externe Dienste +- Automatisierte Auftrags-Planung und -Ausführung via Scheduler + +Das Backend basiert auf Flask (Python) und nutzt eine SQLite-Datenbank für die Datenspeicherung. + +## 2. Netzwerk-Architektur & Digitale Vernetzung + +Die MYP-Plattform setzt auf eine verteilte Netzwerk-Architektur: + +### Hauptkomponenten + +- **Flask-Backend-Server**: Stellt die zentrale API bereit (Port 5000) +- **Smart-Plugs (Tapo P110)**: Steuerung der Drucker-Stromversorgung via IP-Netzwerk +- **3D-Drucker**: Werden als Netzwerkgeräte mit festen IP-Adressen konfiguriert +- **Frontend**: Als Web-App mit Offline-Funktionalität konzipiert +- **PWA-Funktionalität**: Service Worker für Offline-Betrieb und Cache-Management + +### Netzwerk-Topologie + +``` +[Frontend/PWA] <-- HTTP/REST --> [Flask-Backend] <-- PyP110-Lib --> [Smart-Plugs] + ^ ^ | + | | v + +------ PWA Offline Cache -------+ [3D-Drucker] +``` + +### Kommunikationsprotokolle + +- **HTTP/REST**: Zwischen Frontend und Backend +- **JSON**: Standardformat für Datenaustausch +- **Tapo-Protokoll**: Für Smart-Plug-Steuerung via PyP110-Bibliothek +- **SQLite**: Lokale Datenbankanbindung + +### Vernetzungs-Features + +- IP-basierte Identifikation der Drucker im lokalen Netzwerk +- SmartPlug-Integration für Fernsteuerung der Stromversorgung +- Offline-Betriebsmodus mit synchronisierenden Service Workern +- Automatische Erkennung der Drucker-Status via Netzwerk-Polling + +## 3. Hauptkomponenten des Backends + +### Core-Komponenten + +- **app.py**: Hauptanwendung mit API-Endpunkten und Route-Definitionen +- **models.py**: Datenbankmodelle für User, Printer, Job und Stats +- **job_scheduler.py**: Background-Task-Scheduler für automatisierte Prozesse +- **Blueprints**: Modulare Komponenten für Auth, User, etc. + +### API-Layer + +Das Backend stellt eine umfassende REST-API bereit: +- **User Management**: Authentifizierung, Profilmanagement +- **Printer Management**: Druckerstatus, Steuerung +- **Job Management**: Auftragsplanung, -verwaltung und -überwachung +- **Stats API**: Statistiken und Auswertungen + +### SmartPlug-Integration + +- Nutzung der PyP110-Bibliothek für die Kommunikation mit Tapo-SmartPlugs +- Automatisierte Steuerung der Stromversorgung basierend auf Jobplanung +- Status-Monitoring und Fehlerbehandlung + +## 4. Datenbankmodell & Scheduler-Logik + +### Datenbankmodelle + +- **User**: Benutzer-Accounts mit Rollenmanagement +- **Printer**: 3D-Drucker mit Netzwerkkonfiguration und Status +- **Job**: Druckaufträge mit Zeitplanung und Statusinformationen +- **Stats**: Globale Statistikdaten + +### Scheduler-Architektur + +Der BackgroundTaskScheduler bietet: +- Registrierung von Task-Funktionen mit individuellen Intervallen +- Zeitgesteuerte Ausführung im Hintergrund +- Kommunikation mit Smart-Plugs zur zeitgesteuerten Stromversorgung +- Automatisches Job-Management + +### Datenbanksicherung + +- SQLite-Datenbank mit Backup-Funktionalität +- Einfache Administrierbarkeit durch übersichtliche Tabellenstruktur + +## 5. API-Endpunkte + +| Endpunkt | Methode | Funktion | Authentifizierung | +|----------|---------|----------|-------------------| +| /api/jobs | GET | Auftragsliste abrufen | Ja | +| /api/jobs | POST | Neuen Auftrag erstellen | Ja | +| /api/jobs/{id} | GET | Auftragsdetails abrufen | Ja, Besitzer | +| /api/jobs/{id}/extend | POST | Auftrag verlängern | Ja, Besitzer | +| /api/jobs/{id}/finish | POST | Auftrag abschließen | Ja | +| /api/printers | GET | Druckerliste abrufen | Ja | +| /api/printers | POST | Neuen Drucker anlegen | Ja, Admin | +| /api/printers/status | GET | Status aller Drucker | Ja | +| /api/stats | GET | Statistiken abrufen | Ja | +| /api/users | GET | Benutzerliste | Ja, Admin | +| /api/users | POST | Neuen Benutzer anlegen | Ja, Admin | +| /api/scheduler/status | GET | Scheduler-Status | Ja | +| /api/scheduler/start | POST | Scheduler starten | Ja, Admin | +| /api/scheduler/stop | POST | Scheduler stoppen | Ja, Admin | +| /auth/login | POST | Anmelden | Nein | +| /auth/logout | GET/POST | Abmelden | Ja | + +## 6. Sicherheits- & Zugriffskonzept + +### Authentifizierung + +- Flask-Login für Session-Management +- BCrypt für sichere Passwort-Hashes +- Role-Based Access Control (RBAC) mit Admin- und Benutzerrollen +- Eigene Decorator für erweiterte Zugriffskontrollen (z.B. job_owner_required) + +### Netzwerksicherheit + +- CORS-Konfiguration für sichere Cross-Origin-Requests +- Sicherheitsheader im Response (X-Content-Type-Options, X-Frame-Options) +- Keine sensiblen Daten in URLs oder Query-Parametern + +### Offline-Sicherheit + +- Selektive Cache-Strategie für sensible Daten +- Ausschluss von API-Endpunkten mit vertraulichen Informationen vom Caching +- Eingeschränkte Funktionalität im Offline-Modus + +## 7. Build- & Deployment-Ablauf + +### Backend-Deployment + +- Python 3.11 venv-Umgebung +- Konfigurierbare Entwicklungs- und Produktionsumgebungen +- Log-Rotation und strukturierte Logging-Hierarchie + +### Frontend-Integration + +- Tailwind CSS für responsive UI +- CLI-Befehle für Tailwind-Kompilierung +- Service Worker für PWA-Funktionalität + +### Systemd-Integration + +- Automatischer Start des Backend-Servers +- Überwachung und Neustart bei Fehlern +- Logging-Integration in systemd-journal + +## 8. Offene Punkte / Verbesserungspotenzial + +### Digitale Vernetzung + +- OPC UA oder MQTT-Integration für direktere Druckerkommunikation +- Echtzeit-Statusüberwachung statt Polling +- Push-Benachrichtigungen für Fertigstellungs- und Fehlerereignisse +- VPN-Unterstützung für Remote-Zugriff außerhalb des lokalen Netzwerks + +### Sicherheit + +- OAuth2-Integration für externe Authentifizierungsquellen +- Zwei-Faktor-Authentifizierung +- Zertifikatsbasierte Geräteauthentifizierung für SmartPlugs + +### Skalierbarkeit + +- Migration von SQLite zu einer skalierbaren Datenbank +- Containerisierung mit Docker für einfacheres Deployment +- Horizontale Skalierung der Backend-Komponenten \ No newline at end of file