79 lines
3.9 KiB
Markdown
79 lines
3.9 KiB
Markdown
# **Technische Architektur und Codeaufbau**
|
|
|
|
In diesem Abschnitt erläutere ich die Architektur und Struktur des MYP-Projekts sowie die Funktionalitäten der zentralen Komponenten.
|
|
|
|
---
|
|
|
|
## **1. Technische Architektur**
|
|
|
|
### **1.1. Architekturübersicht**
|
|
MYP basiert auf einer modernen Webanwendungsarchitektur:
|
|
- **Frontend:** Entwickelt mit React und Next.js. Stellt die Benutzeroberfläche bereit.
|
|
- **Backend:** Nutzt Node.js und Drizzle ORM für die Datenbankinteraktion und Geschäftslogik.
|
|
- **Datenbank:** SQLite zur Speicherung von Nutzerdaten, Druckaufträgen und Druckerkonfigurationen.
|
|
- **Containerisierung:** Docker wird verwendet, um die Anwendung in isolierten Containern bereitzustellen.
|
|
- **Webserver:** Caddy dient als Reverse Proxy mit HTTPS-Unterstützung.
|
|
|
|
### **1.2. Modulübersicht**
|
|
- **Datenfluss:** Die Anwendung ist stark datengetrieben. API-Routen werden genutzt, um Daten zwischen Frontend und Backend auszutauschen.
|
|
- **Rollenbasierter Zugriff:** Über ein Berechtigungssystem können Administratoren und Benutzer unterschiedliche Funktionen nutzen.
|
|
|
|
---
|
|
|
|
## **2. Codeaufbau**
|
|
|
|
### **2.1. Ordnerstruktur**
|
|
Die Datei `repomix-output.txt` zeigt eine strukturierte Übersicht des Projekts. Nachfolgend einige wichtige Verzeichnisse:
|
|
|
|
| **Verzeichnis** | **Inhalt** |
|
|
|--------------------------|---------------------------------------------------------------------------|
|
|
| `src/app` | Next.js-Seiten und Komponenten für Benutzer und Admins. |
|
|
| `src/components` | Wiederverwendbare UI-Komponenten wie Karten, Diagramme, Buttons etc. |
|
|
| `src/server` | Backend-Logik, Authentifizierung und Datenbankinteraktionen. |
|
|
| `src/utils` | Hilfsfunktionen für Analysen, Validierungen und Datenbankzugriffe. |
|
|
| `drizzle` | Datenbank-Migrationsdateien und Metadaten. |
|
|
| `docker` | Docker-Konfigurations- und Bereitstellungsskripte. |
|
|
|
|
---
|
|
|
|
### **2.2. Hauptdateien**
|
|
#### **Frontend**
|
|
- **`src/app/page.tsx`:** Startseite der Anwendung.
|
|
- **`src/app/admin/`:** Admin-spezifische Seiten, z. B. Druckerverwaltung oder Fehlerstatistiken.
|
|
- **`src/components/ui/`:** UI-Komponenten wie Dialoge, Formulare und Tabellen.
|
|
|
|
#### **Backend**
|
|
- **`src/server/auth/`:** Authentifizierung und Benutzerrollenmanagement.
|
|
- **`src/server/actions/`:** Funktionen zur Interaktion mit Druckaufträgen und Druckern.
|
|
- **`src/utils/`:** Analyse und Verarbeitung von Druckdaten (z. B. Fehlerquoten und Auslastung).
|
|
|
|
#### **Datenbank**
|
|
- **`drizzle/0000_overjoyed_strong_guy.sql`:** SQLite-Datenbankschema mit Tabellen für Drucker, Benutzer und Druckaufträge.
|
|
- **`drizzle.meta/`:** Metadaten zur Datenbankmigration.
|
|
|
|
---
|
|
|
|
### **2.3. Datenbankschema**
|
|
Das Schema enthält vier Haupttabellen:
|
|
1. **`user`:** Speichert Benutzerinformationen, einschließlich Rollen und E-Mail-Adressen.
|
|
2. **`printer`:** Beschreibt die Drucker, ihren Status und ihre Eigenschaften.
|
|
3. **`printJob`:** Zeichnet Druckaufträge auf, einschließlich Startzeit, Dauer und Abbruchgrund.
|
|
4. **`session`:** Verwaltert Benutzer-Sitzungen und Ablaufzeiten.
|
|
|
|
---
|
|
|
|
## **3. Wichtige Funktionen**
|
|
|
|
### **3.1. Authentifizierung**
|
|
Das System nutzt OAuth zur Anmeldung. Benutzerrollen werden in der Tabelle `user` gespeichert und im Backend überprüft.
|
|
|
|
### **3.2. Statistiken**
|
|
- **Fehlerrate:** Berechnet die Häufigkeit von Abbrüchen für jeden Drucker.
|
|
- **Auslastung:** Prozentuale Nutzung der Drucker, basierend auf geplanten und abgeschlossenen Druckaufträgen.
|
|
- **Prognosen:** Verwenden historische Daten, um zukünftige Drucknutzungen vorherzusagen.
|
|
|
|
### **3.3. API-Endpunkte**
|
|
- **`src/app/api/printers/`:** Zugriff auf Druckerkonfigurationsdaten.
|
|
- **`src/app/api/job/[jobId]/`:** Verwaltung einzelner Druckaufträge.
|
|
|
|
Nächster Schritt: [=> Datenbank und Analytik-Funktionen](./Datenbank.md) |