5.4 KiB
Executable File
5.4 KiB
Executable File
Datenbank und Analytik-Funktionen
Dieser Abschnitt konzentriert sich auf die Struktur der Datenbank sowie die Analyse- und Prognosefunktionen, die im Projekt verwendet werden.
1. Datenbankstruktur
Das Datenbankschema wurde mit Drizzle ORM definiert und basiert auf SQLite. Die wichtigsten Tabellen und ihre Zwecke sind:
1.1. Tabellenübersicht
user
- Speichert Benutzerinformationen.
- Enthält Rollen wie „admin“ oder „guest“ zur Verwaltung von Berechtigungen.
Feld | Typ | Beschreibung |
---|---|---|
id |
text |
Eindeutige ID des Benutzers. |
github_id |
integer |
ID des Benutzers aus dem OAuth-Dienst. |
name |
text |
Benutzername. |
displayName |
text |
Angezeigter Name. |
email |
text |
E-Mail-Adresse. |
role |
text |
Benutzerrolle, Standardwert: „guest“. |
printer
- Beschreibt verfügbare Drucker und deren Status.
Feld | Typ | Beschreibung |
---|---|---|
id |
text |
Eindeutige Drucker-ID. |
name |
text |
Name des Druckers. |
description |
text |
Beschreibung oder Spezifikationen. |
status |
integer |
Betriebsstatus (0 = inaktiv, 1 = aktiv). |
printJob
- Speichert Informationen zu Druckaufträgen.
Feld | Typ | Beschreibung |
---|---|---|
id |
text |
Eindeutige Auftrags-ID. |
printerId |
text |
Verweis auf die ID des Druckers. |
userId |
text |
Verweis auf die ID des Benutzers. |
startAt |
integer |
Startzeit des Druckauftrags (Unix-Timestamp). |
durationInMinutes |
integer |
Dauer des Druckauftrags in Minuten. |
comments |
text |
Zusätzliche Kommentare. |
aborted |
integer |
1 = Abgebrochen, 0 = Erfolgreich abgeschlossen. |
abortReason |
text |
Grund für den Abbruch (falls zutreffend). |
session
- Verwaltert Benutzer-Sitzungen und Ablaufzeiten.
Feld | Typ | Beschreibung |
---|---|---|
id |
text |
Eindeutige Sitzungs-ID. |
user_id |
text |
Verweis auf die ID des Benutzers. |
expires_at |
integer |
Zeitpunkt, wann die Sitzung abläuft. |
1.2. Relationen
printer
→printJob
: Druckaufträge sind an spezifische Drucker gebunden.user
→printJob
: Druckaufträge werden Benutzern zugewiesen.user
→session
: Sitzungen verknüpfen Benutzer mit Login-Details.
2. Analytik-Funktionen
Das Projekt bietet verschiedene Analytik- und Prognosetools, um die Druckernutzung und Fehler zu überwachen.
2.1. Fehlerratenanalyse
- Funktion:
calculatePrinterErrorRate
(insrc/utils/analytics/error-rate.ts
). - Berechnet die prozentuale Fehlerrate für jeden Drucker basierend auf abgebrochenen Aufträgen.
Beispielausgabe:
[
{ "name": "Drucker 1", "errorRate": 5.2 },
{ "name": "Drucker 2", "errorRate": 3.7 }
]
2.2. Abbruchgründe
- Funktion:
calculateAbortReasonsCount
(insrc/utils/analytics/errors.ts
). - Zählt die Häufigkeit der Abbruchgründe aus der Tabelle
printJob
.
Beispielausgabe:
[
{ "abortReason": "Materialmangel", "count": 10 },
{ "abortReason": "Düsenverstopfung", "count": 7 }
]
2.3. Nutzung und Prognosen
Nutzung:
- Funktion:
calculatePrinterUtilization
(insrc/utils/analytics/utilization.ts
). - Berechnet die Nutzung der Drucker in Prozent.
Beispielausgabe:
{ "printerId": "1", "utilizationPercentage": 85 }
Prognosen:
- Funktion:
forecastPrinterUsage
(insrc/utils/analytics/forecast.ts
). - Nutzt historische Daten, um die erwartete Druckernutzung für kommende Tage/Wochen zu schätzen.
Beispielausgabe:
[
{ "day": 1, "usageMinutes": 300 },
{ "day": 2, "usageMinutes": 200 }
]
2.4. Druckvolumen
- Funktion:
calculatePrintVolumes
(insrc/utils/analytics/volume.ts
). - Vergleicht die Anzahl der abgeschlossenen Druckaufträge für heute, diese Woche und diesen Monat.
Beispielausgabe:
{
"today": 15,
"thisWeek": 90,
"thisMonth": 300
}
3. Datenbankinitialisierung
Die Datenbank wird über Skripte in der package.json
initialisiert:
pnpm run db:clean # Datenbank und Migrationsordner löschen
pnpm run db:generate # Neues Schema generieren
pnpm run db:migrate # Migrationsskripte ausführen
Nächster Schritt: => Bereitstellungsdetails und Best Practices