Technisches Handbuch v1.2.6

Support Ticket System
Fehler-Tracking
Use Cases

Eine selbst gehostete, anbieterneutrale Full-Stack-Anwendung zum Verwalten von Fehlerfällen, Support-Tickets, Projektzuweisungen und Personallogistik.

Dokumentation lesen
Testsession anfragen

1. Übersicht

Was ist XteVision Error Tracker und wer ist das Zielgruppe?

1.1 Was ist XteVision Error Tracker?

XteVision Error Tracker (xtevision-error-tracker v1.2.6) ist eine anbieterneutrale, vollständig offline betriebene, selbst gehostete Full-Stack-Webanwendung zum Verwalten von Fehlerfällen, Support-Tickets, Projektzuweisungen und Personallogistik. Sie ist dafür konzipiert, von jedem Unternehmen umgebrandet und betrieben zu werden —herstellende, Automatisierungs- oder Dienstleistungsunternehmen — auf eigener Hardware ohne externe Cloud-Abhängigkeit.

1.2 Kernfähigkeiten

  • Fehlerfallverwaltung: Verfolgen von Hardware-/Softwarefehlern über industrielles Equipment hinweg (Dosiersysteme, Applikatoren, Ventile, Pumpen, etc.) mit vollständiger Ursachenanalyse, Schweregradeverfolgung und Lösungsdocumentation
  • Öffentliche Ticket-Aufnahme: Annehmen von Support-Tickets von externen Kunden über eine öffentlich zugängliche Formulare, dann interne Verwaltung und Auflösung
  • Projekt- & Personallogistik: Verwalten von Projektzuweisungen, Verfolgen von Feldpersonal-Einsätzen (Reisedaten, -dauern, Arbeitsbeschreibungen) und Verknüpfung mit Projekten und Fehlerfällen
  • Dual-Server-Sync: Ein LAN-basierter interner Server synchronisiert Tickets mit einem öffentlich zugänglichen Aufnahme-Server, inklusive Pushback von Statusänderungen
  • KI-Wissensassistent: Schwebender Chatbot mit embedding-basierter Similar-Fall-Suche und clientseitiger Übersetzung
  • Multilinguales UI: data-lang-*-Attribute für EN/DE/ZH/…-Übersetzung auf Clientseite
  • Anpassbare Taxonomie: Komponentenstruktur, Fehlertypen und Personallisten, angetrieben von einfachen Konfigurationsdateien

1.3 Zielgruppe

  • Primär:: Jedes Unternehmen, das industrielles Equipment installiert und unterstützt und ein zentralisiertes System für Fehlerfälle, Tickets und Feldlogistik benötigt
  • Sekundär:: Dienstleistungs- und Wartungsteams, das Personal auf Kundensiten entsendet und Feldarbeiten mit Fehlerfällen und Projekten verknüpfen muss

1.4 White-Labeling

Die Anwendung wird ohne dritte Marken geliefert. Benennen Sie das Produkt um, tauschen Sie das Logo aus und setzen Sie Ihren eigenen Firmennamen, Ihre öffentliche Server-URL und Ihren API-Schlüssel in der Konfiguration. Alle Brand-Strings befinden sich in einem kleinen Satz von Stellen (siehe Bereitstellung), sodass ein einzelnes Unternehmen die Plattform in Minuten umbranden kann.

Umbranding-Tipp: Ersetzen Sie das Produktname im HTML-Titel und Logo, setzen Sie Ihre eigene öffentliche Server-URL und drehen Sie den JWT-Schlüssel und den öffentlichen API-Schlüssel auf Ihre eigenen Werte, bevor Sie live gehen.

2. Systemarchitektur

Hoch Ebene Design und Kommunikationsfluss

2.1 Hoch-Ebene-Architektur

┌─────────────────────────────────────────────────────────────────┐
│                         Browser (Klient)                         │
│  ┌───────────────────────────────────────────────────────────┐  │
│  │              Vanilla HTML/CSS/JS (SPA)                     │  │
│  │  ┌────────┐ ┌──────────┐ ┌────────┐ ┌────────┐ ┌──────┐  │  │
│  │  │ Login  │ │ Projekte │ │ Fälle  │ │Tickets │ │Personal│  │  │
│  │  └────────┘ └──────────┘ └────────┘ └────────┘ └──────┘  │  │
│  └───────────────────────────────────────────────────────────┘  │
└──────────────────────────────┬──────────────────────────────────┘
                               │ HTTP/REST API
┌──────────────────────────────┴──────────────────────────────────┐
│                    LAN-Server — Express.js (Port 5003)            │
│  ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐ ┌──────────────┐  │
│  │ Auth   │ │Tickets │ │ Fälle  │ │Personal │ │ KI (translate │  │
│  │        │ │ sync   │ │ CRUD   │ │ CRUD   │ │ + similar)    │  │
│  └────────┘ └────────┘ └────────┘ └────────┘ └──────────────┘  │
└──────────────────────────────┬──────────────────────────────────┘
                               │
                    ┌──────────┴──────────┐
                    │  MySQL 8.0 (mysql2)  │
                    │  error_tracker       │
                    │  8 Kerntabellen      │
                    └─────────────────────┘

        ┌──────────────────────────────────────────────────────────┐
        │  Öffentlicher Server (Ticket-Aufnahme)                    │
        │  HTTPS-Formular → speichert Tickets → von LAN-Server sync  │
        └──────────────────────────────────────────────────────────┘

2.2 Kommunikationsfluss

  1. Frontend → LAN-Server: RESTful HTTP-Anfragen an Express.js-Routes für alle CRUD-Operationen und KI-Helfer
  2. LAN-Server → Datenbank: Raw-SQL-Abfragen über mysql2 — durchgehend parametrisierte Abfragen
  3. LAN-Server → Öffentlicher Server: Periodischer Sync pusht lokale Statusänderungen undholt neue öffentliche Tickets ab
  4. Frontend → KI-Backend: Übersetzung und Similar-Fall-Suche verwenden eine lokale Ollama-Instanz

2.3 Bereitstellungsmodell

XteVision Error Tracker ist für selbst gehosteten, vollständig Offline-Betrieb konzipiert:

  • Läuft als eigenständiger Node.js-Server auf eigener Hardware
  • MySQL auf localhost, Port 3306, Datenbank: error_tracker
  • Alle Daten bleiben auf dem lokalen Server — keine Cloud-Abhängigkeit
  • Der öffentliche Aufnahme-Server ist optional und auf Ihre eigene Domain konfigurierbar

3. Technologie-Stack

Frontend, Backend und Infrastrukturelle Technologien

EbeneTechnologieZweck
LaufzeitNode.jsServer-Laufzeit
FrameworkExpress.js 4.xWeb-Server + API-Routes
DatenbankMySQL 8.0 (via mysql2)Primärer Datenbestand
AuthJWT (jsonwebtoken) + bcryptjsPasswort-Hashing + Sitzungen
Datei-Uploadsmulter (Festplattenspeicher)Fälle- & Ticket-Anhänge
ÜbersetzungOllama lokales LLM (aya-expanse:8b)Clientseitige UI-Übersetzung
KI-SucheOllama (nomic-embed-text:latest)Embeddings + Similar-Fall-Suche
FrontendVanilla HTML/CSS/JS + Font AwesomeFramework-lose Single-Page-App
Hinweis: Das KI-Backend ist optional. Übersetzung und Similar-Fall-Suche benötigen eine lokale Ollama-Instanz; die Kernfehlerverfolgung und Ticket-Funktionen funktionieren ohne sie.

4. Installation & Einrichtung

Bringen Sie XteVision Error Tracker auf Ihrem Server zum Laufen

4.1 Voraussetzungen

  • MySQL 8.0 auf dem Ziel-Server
  • Node.js (zum Ausführen des Express-Servers)
  • Moderner Browser (Chrome/Edge/Firefox)
  • Lokales LLM-Server (optional, für KI-Assistent-Funktionen)

4.2 Installation (3 Schritte)

Abhängigkeiten installieren und den Server starten. Der Server serviert statische Dateien vom Projekt-Wurzelverzeichnis und exponiert APIs auf /api/*.

# 1. Abhängigkeiten installieren
npm install

# 2. Server starten (Port 5003)
npm start
# oder: node server.js

4.3 Die Anwendung öffnen

http://your-server-ip:5003

Der LAN-Server läuft standardmäßig auf Port 5003. Verbinden Sie sich aus Ihrem internen Netzwerk.

4.4 Ersteinrichtung

  1. Datenbank konfigurieren: Erstellen Sie die Datenbank error_tracker und wenden Sie das Schema aus backup.sql an
  2. Credentials setzen: Bearbeiten Sie db.js und routes/auth.js mit Ihrem eigenen Datenbankpasswort, JWT-Schlüssel und (falls verwendet) öffentlichem API-Schlüssel — verschieben Sie diese in eine .env-Datei
  3. Taxonomie konfigurieren: Bearbeiten Sie components.json und new_parameters/*.txt an Ihre Ausrüstung und Fehler-Taxonomie angepasst
  4. Die Anwendung öffnen: Melden Sie sich über index.html an und beginnen Sie mit dem Hinzufügen von Projekten, Fällen und Tickets

5. Anwendungsstruktur

Verzeichnislayout und Modularisierung

5.1 Verzeichnislayout

xtevision-error-tracker/
├── server.js                 # Haupt-Express-Server: Routes, Auth, Uploads, KI, Statisch
├── db.js                     # MySQL-Verbindungs-Singleton
├── routes/
│   ├── auth.js               # Benutzerregistrierung und Login-Endpunkte
│   ├── users.js              # Benutzerlisten-Endpunkt (für Dropdowns)
│   └── tickets.js            # Ticket-CRUD, Öffentlicher-Server-Sync, Push-to-Public
├── index.html                # Haupt-SPA — Login, Projekte, Aufgaben, Fälle, Tickets
├── register.html             # Öffentliche Benutzerregistrierungsseite
├── register.js               # Clientseitige Registrierungslogik
├── styles.css                # Vollständiges Stylesheet — Dark/Light-Theme, responsiv, Animationen
├── components.json           # Hierarchische Komponenten-Taxonomie
├── new_parameters/           # Dropdown-Optionenlisten (Integratoren, Fehlertypen, …)
├── backup.sql                # Vollständiger MySQL-Dump der Datenbank
└── license.txt               # Proprietäre Lizenzvereinbarung

5.2 Wichtige Dateien

DateiZweck
server.jsHaupt-Express-Server — alle API-Routes, Auth-Middleware, Datei-Uploads, Übersetzung-KI, KI-Wissensassistent, Statisch-File-Serving
db.jsMySQL-Verbindungs-Singleton
routes/auth.jsBenutzerregistrierung und Login-Endpunkte
routes/users.jsBenutzerlisten-Endpunkt (für Dropdowns)
routes/tickets.jsTicket-CRUD, Öffentlicher-Server-Sync, Push-to-Public-Logik
index.htmlHaupt-SPA — Login-, Projekt-, Aufgaben-, Fall-, Ticket-Tabs
register.htmlÖffentliche Benutzerregistrierungsseite
register.jsClientseitige Registrierungslogik
styles.cssVollständiges Stylesheet — Dark/Light-Theme, responsives Layout, Animationen
components.jsonHierarchische Komponenten-Taxonomie (RAM, IFS-System, Dosiersystem, Applikator, etc.)
new_parameters/*.txtDropdown-Optionenlisten (Integratoren, Fehlertypen, Sub-Typen, Personal, etc.)
backup.sqlVollständiger MySQL-Dump der Datenbank
license.txtProprietäre Lizenzvereinbarung

6. Datenbank-Schema

Kerntabellen und ihr Zweck

6.1 Kerntabellen

TablaZweckSchlüsselfelder
usersAuth-Benutzerid, username, email, password_hash, full_name, role
tasksProjekte/Aufgabenid, pm_number, pm_name, integrator, capture_date, start_at, finished_at
projectsHöhere Projektgruppierungenid, project_number, project_name
error_casesDetaillierte Fehlerberichte (~40 Felder)case_id, system info, error description, root cause, severity, resolution, lessons learned
case_attachmentsDateianhänge, an Fehlerfälle geknüpftcase_id, file_path, original_filename, file_type
ticketsSupport-Ticketsid, public_id, customer_name, subject, description, source, status, linked_case_id, sync_required
ticket_attachmentsDateianhänge, an Tickets geknüpft
personell_arrangementPersonal-Einsatzdokumenteproject_number, integrator, personnel, trip_start_date, trip_return_date, duration_days, work_description, show_flag
error_cases ist die zentrale Tabelle mit ~40 Feldern, die Systeminformationen, Fehlerbeschreibung, Ursache, Schweregrad, Lösung und Lessons Learned abdecken — das Rückgrat Ihres Wissensbestands.

7. Kernfunktionen

Kernfähigkeiten der Plattform

Fehlerfallverwaltung

Verfolgen von Hardware-/Softwarefehlern über industrielles Equipment hinweg mit ~40 Feldern, Ursachenanalyse, Schweregradeverfolgung, Lösungsdokumentation und Lessons Learned.

Öffentliche Ticket-Aufnahme

Annehmen von Support-Tickets von externen Kunden über ein öffentliches Formular, dann interne Verwaltung, Verknüpfung und Auflösung mit Sync zu Ihrem öffentlichen Server.

Personallogistik

Verwalten von Projektzuweisungen und Feld-Einsätzen — Reisedaten, -dauern, Arbeitsbeschreibungen — verknüpft mit Projekten und Fehlerfällen.

Dual-Server-Sync

Periodischer Sync pusht lokale Statusänderungen und importiert neue öffentliche Tickets, mit heruntergeladenen und lokal gespeicherten Anhängen.

KI-Similar-Fall-Suche

Erzeugt Embeddings für das Betreff/eine Beschreibung eines Tickets und findet Top-N ähnliche Fehlerfälle über Kosinus-Ähnlichkeit.

Client-Übersetzung

Clientseitige Übersetzungs-Links lösen ein lokales LLM aus; unterstützt mehrere Ziel über data-lang-*-Attribute.

Datei-Anhänge

Fälle- und Ticket-Anhänge mit zeitstempelten Dateinamen über multer gespeichert, bedient über zwei statische Mounts.

Anpassbare Taxonomie

Ausrüstungsstruktur, Fehlertypen und Personallisten werden von einfachen Konfigurationsdateien angetrieben (components.json, new_parameters/*.txt).

Thematisierbares UI

Vollständige Dark/Light-Theme-Unterstützung mit responsivem Layout und Animationen, alles in einem einzelnen Stylesheet.

8. Modaldetails

Vertiefende Funktionsdokumentation

8.1 Authentifizierung & Sicherheit

JWT-basierte Authentifizierung mit den folgenden Mechanismen:

  • Token-Ablauf: 8-stündige JWT-Lebensdauer
  • Passwort-Hashing: bcrypt mit Kostenfaktor 10
  • Auth-Middleware: authenticateToken prüft den Authorization: Bearer <token>-Header
  • SQL-Injection-Prävention: Parametrisierte Abfragen durchgehend; Sortierfelder verwenden einen Whitelist-Ansatz
Sicherkeits-Härtung: Der JWT-Schlüssel, das Datenbankpasswort und der öffentliche API-Schlüssel sollten nach draußen in eine .env-Datei verschoben werden, statt hardcoded in routes/auth.js und db.js zu bleiben.

8.2 Datei-Uploads

  • Fälle-Anhänge in uploads/case_<id>/ mit zeitstempelten Dateinamen
  • Ticket-Anhänge in uploads/ (von öffentlichem Server synchronisiert) und web_tickets/uploads/ (öffentliche Formular-Uploads)
  • Zwei express.static-Mounts für /uploads deckt beide Verzeichnisse ab

8.3 Übersetzungsfunktion

  • Clientseitige Übersetzungs-Links lösen POST /api/translate → Ollama aya-expanse:8b aus
  • Unterstützte ZielSprachen: de, en, ru, es, jp, fr, th, vt

8.4 KI-Wissensassistent

  • POST /api/ai/find-similar-cases — erzeugt Embeddings für Betreff/eine Beschreibung eines Tickets über nomic-embed-text, findet dann Top-N ähnliche Fehlerfälle über Kosinus-Ähnlichkeit
  • Embeddings werden für Wiederverwendung in der Datenbank gespeichert

8.5 Öffentlicher-Server-Sync

routes/tickets.js exportiert syncTicketsFromPublicServer(), das:

  1. Lokale Ticket-Updates (Statusänderungen mit sync_required = 1) zum öffentlichen Server pusht
  2. Alle öffentlichen Tickets abholt und importiert neue lokal (durch Abgleich customer_name + subject + created_at)
  3. Herunterläd und speichert Anhänge vom öffentlichen Server

Statusänderungen an Tickets setzen automatisch sync_required = 1 für Pushback.

8.6 Dual-Server-Kommunikation

  • Öffentliche Server-URL ist auf Ihre eigene Domain konfigurierbar (Standard-Platzhalter: https://error-tracker.example.com)
  • Push-API-Schlüssel ist konfigurierbar — drehen Sie zu Ihrem eigenen Geheimnis, bevor Sie live gehen

9. KI-Integration

Lokales LLM–befeuerter Wissensassistent

9.1 Lokales LLM-Backend

Alle KI-Funktionen laufen gegen eine lokale Ollama-Instanz und behalten Kundendaten vollständig on-premise:

  • Übersetzung: aya-expanse:8b für clientseitige UI-Übersetzung
  • Embeddings: nomic-embed-text:latest für Similar-Fall-Suche
  • Optional: Kernverfolgungs-/Ticket-Funktionen funktionieren ohne das KI-Backend

9.2 Similar-Fall-Suche

FunktionBeschreibung
EndpunktPOST /api/ai/find-similar-cases
Embedding-Modellnomic-embed-text:latest
AbgleichTop-N ähnliche Fehlerfälle über Kosinus-Ähnlichkeit
SpeicherEmbeddings werden für Wiederverwendung in der Datenbank gespeichert
Beispiel: Fügen Sie einen neuen Ticket-Betreff/eine Beschreibung ein und der Assistent gibt die am nächsten passenden Fehlerfälle aus Ihrem Wissensbestand zurück.

10. Bereitstellung

Run und verwalten die Plattform auf Ihrem Server

10.1 Voraussetzungen

  • Node.js (zum Ausführen des Express-Servers)
  • MySQL 8.0 (via mysql2)
  • Lokales LLM-Server (optional, für KI-Assistent-Funktionen)

10.2 Die App starten

# Abhängigkeiten installieren
npm install

# Server starten (Port 5003)
npm start
# oder: node server.js

10.3 Konfiguration

EinstellungOrtBeschreibung
Datenbankpasswortdb.jsMySQL-Verbindungs-Credentials
JWT-Schlüsselroutes/auth.jsSitzungs-Signatur-Schlüssel — drehen Sie zu Ihrem eigenen Wert
Öffentliche Server-URLroutes/tickets.jsIhre eigene Aufnahme-Domain (Platzhalter ersetzen)
Öffentlicher Push-API-Schlüsselroutes/tickets.jsDrehen Sie zu Ihrem eigenen Geheimnis, bevor Sie live gehen
Produktname / Logoindex.htmlWhite-Label-Branding — setzen Sie Ihre eigene Firmenname

Umbranding-Checkliste: Setzen Sie Ihren eigenen Produktname und Logo in index.html, ersetzen Sie die öffentliche Server-URL durch Ihre eigene Domain und drehen Sie den JWT-Schlüssel und den öffentlichen API-Schlüssel. Dann verschieben Sie alle Geheimnisse in eine .env-Datei.

10.4 Auf eine neue Version upgraden

# 1. Server stoppen
npm stop

# 2. Daten und Konfiguration sichern
cp backup.sql /tmp/et-backup.sql
cp db.js /tmp/et-db.bak

# 3. Neue Version installieren, dann Konfiguration wiederherstellen
npm install

# 4. Neustarten
npm start

Standen Sie immer backup.sql (Ihre Daten) und db.js / routes/auth.js (Ihre Credentials) vor dem Upgrade.

11. Änderungshistorie

Versionshistorie und Release-Notizen

v1.2.6 — Aktuell

  • Fehlerfallverwaltung: ~40-Felder-Fehlerberichte mit Ursachenanalyse, Schweregradeverfolgung, Lösung und Lessons Learned
  • Öffentliche Ticket-Aufnahme: Öffentliches Formular mit Dual-Server-Sync und Pushback von Statusänderungen
  • Personallogistik: Einsatzverfolgung verknüpft mit Projekten und Fehlerfällen
  • KI-Wissensassistent: Embedding-basierte Similar-Fall-Suche und clientseitige Übersetzung
  • Datei-Anhänge: Fälle- und Ticket-Anhänge mit zeitstempelten Dateinamen
  • Multilinguales UI: EN/DE/ZH/…-Übersetzung über data-lang-*-Attribute
  • Anpassbare Taxonomie: Ausrüstungsstruktur und Fehlertypen von Konfigurationsdateien angetrieben
  • White-Label-Fertig: Keine dritte Branding; umbenennen und umbranden in Minuten

12. Fehlerbehebung

Häufige Probleme und Lösungen

12.1 Server läuft nicht

  • Problem: Port bereits in Verwendung
  • Lösung: Ändern Sie den Port oder töten Sie den bestehenden Prozess, dann neu starten.

12.2 Datenbankverbindung fehlgeschlagen

  • Problem: "Connection refused" zu MySQL
  • Lösung: Prüfen Sie, dass MySQL läuft. Prüfen Sie die db.js-Credentials. Stellen Sie sicher, dass die Datenbank error_tracker existiert. Wenden Sie das Schema aus backup.sql erneut an.

12.3 Daten nach Login nicht sichtbar

  • Problem: Seiten zeigen nach Login leer
  • Lösung: Prüfen Sie, dass der Benutzer die richtige Rolle hat und dass das Schema angewendet wurde. Prüfen Sie die Datenbankverbindung in db.js.

12.4 KI-Chat antwortet nicht

  • Problem: "Connection refused" oder keine Antwort von KI
  • Lösung: Stellen Sie sicher, dass das lokale Ollama-Server läuft und das Modell (aya-expanse:8b / nomic-embed-text:latest) gezogen ist. KI-Funktionen sind optional — die Kernverfolgung funktioniert ohne sie.

12.5 Sync funktioniert nicht

  • Problem: Öffentliche Tickets nicht importiert oder Status nicht gepusht
  • Lösung: Prüfen Sie die öffentliche Server-URL und den API-Schlüssel in routes/tickets.js. Prüfen Sie die Netzwerkverbindung und dass sync_required = 1 bei Statusänderungen gesetzt ist.

12.6 Anhänge werden nicht angezeigt

  • Problem: Dateien fehlen nach Upload
  • Lösung: Prüfen Sie, dass das Verzeichnis uploads/ existiert und Schreibberechtigungen hat. Prüfen Sie den Upload-API-Route und dass die multer-Middleware konfiguriert ist.