3.9 KiB
Executable File
3.9 KiB
Executable File
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