2025-03-12 12:33:05 +01:00

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:

  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