3.9 KiB
3.9 KiB
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:
user: Speichert Benutzerinformationen, einschließlich Rollen und E-Mail-Adressen.printer: Beschreibt die Drucker, ihren Status und ihre Eigenschaften.printJob: Zeichnet Druckaufträge auf, einschließlich Startzeit, Dauer und Abbruchgrund.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