Eine selbst gehostete, anbieterneutrale Full-Stack-Anwendung zum Verwalten von Fehlerfällen, Support-Tickets, Projektzuweisungen und Personallogistik.
Was ist XteVision Error Tracker und wer ist das Zielgruppe?
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.
data-lang-*-Attribute für EN/DE/ZH/…-Übersetzung auf ClientseiteDie 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.
Hoch Ebene Design und Kommunikationsfluss
┌─────────────────────────────────────────────────────────────────┐
│ 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 │
└──────────────────────────────────────────────────────────┘mysql2 — durchgehend parametrisierte AbfragenXteVision Error Tracker ist für selbst gehosteten, vollständig Offline-Betrieb konzipiert:
error_trackerFrontend, Backend und Infrastrukturelle Technologien
| Ebene | Technologie | Zweck |
|---|---|---|
| Laufzeit | Node.js | Server-Laufzeit |
| Framework | Express.js 4.x | Web-Server + API-Routes |
| Datenbank | MySQL 8.0 (via mysql2) | Primärer Datenbestand |
| Auth | JWT (jsonwebtoken) + bcryptjs | Passwort-Hashing + Sitzungen |
| Datei-Uploads | multer (Festplattenspeicher) | Fälle- & Ticket-Anhänge |
| Übersetzung | Ollama lokales LLM (aya-expanse:8b) | Clientseitige UI-Übersetzung |
| KI-Suche | Ollama (nomic-embed-text:latest) | Embeddings + Similar-Fall-Suche |
| Frontend | Vanilla HTML/CSS/JS + Font Awesome | Framework-lose Single-Page-App |
Bringen Sie XteVision Error Tracker auf Ihrem Server zum Laufen
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
http://your-server-ip:5003
Der LAN-Server läuft standardmäßig auf Port 5003. Verbinden Sie sich aus Ihrem internen Netzwerk.
error_tracker und wenden Sie das Schema aus backup.sql andb.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-Dateicomponents.json und new_parameters/*.txt an Ihre Ausrüstung und Fehler-Taxonomie angepasstindex.html an und beginnen Sie mit dem Hinzufügen von Projekten, Fällen und TicketsVerzeichnislayout und Modularisierung
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
| Datei | Zweck |
|---|---|
| server.js | Haupt-Express-Server — alle API-Routes, Auth-Middleware, Datei-Uploads, Übersetzung-KI, KI-Wissensassistent, Statisch-File-Serving |
| db.js | MySQL-Verbindungs-Singleton |
| routes/auth.js | Benutzerregistrierung und Login-Endpunkte |
| routes/users.js | Benutzerlisten-Endpunkt (für Dropdowns) |
| routes/tickets.js | Ticket-CRUD, Öffentlicher-Server-Sync, Push-to-Public-Logik |
| index.html | Haupt-SPA — Login-, Projekt-, Aufgaben-, Fall-, Ticket-Tabs |
| register.html | Öffentliche Benutzerregistrierungsseite |
| register.js | Clientseitige Registrierungslogik |
| styles.css | Vollständiges Stylesheet — Dark/Light-Theme, responsives Layout, Animationen |
| components.json | Hierarchische Komponenten-Taxonomie (RAM, IFS-System, Dosiersystem, Applikator, etc.) |
| new_parameters/*.txt | Dropdown-Optionenlisten (Integratoren, Fehlertypen, Sub-Typen, Personal, etc.) |
| backup.sql | Vollständiger MySQL-Dump der Datenbank |
| license.txt | Proprietäre Lizenzvereinbarung |
Kerntabellen und ihr Zweck
| Tabla | Zweck | Schlüsselfelder |
|---|---|---|
| users | Auth-Benutzer | id, username, email, password_hash, full_name, role |
| tasks | Projekte/Aufgaben | id, pm_number, pm_name, integrator, capture_date, start_at, finished_at |
| projects | Höhere Projektgruppierungen | id, project_number, project_name |
| error_cases | Detaillierte Fehlerberichte (~40 Felder) | case_id, system info, error description, root cause, severity, resolution, lessons learned |
| case_attachments | Dateianhänge, an Fehlerfälle geknüpft | case_id, file_path, original_filename, file_type |
| tickets | Support-Tickets | id, public_id, customer_name, subject, description, source, status, linked_case_id, sync_required |
| ticket_attachments | Dateianhänge, an Tickets geknüpft | |
| personell_arrangement | Personal-Einsatzdokumente | project_number, integrator, personnel, trip_start_date, trip_return_date, duration_days, work_description, show_flag |
Kernfähigkeiten der Plattform
Verfolgen von Hardware-/Softwarefehlern über industrielles Equipment hinweg mit ~40 Feldern, Ursachenanalyse, Schweregradeverfolgung, Lösungsdokumentation und Lessons Learned.
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.
Verwalten von Projektzuweisungen und Feld-Einsätzen — Reisedaten, -dauern, Arbeitsbeschreibungen — verknüpft mit Projekten und Fehlerfällen.
Periodischer Sync pusht lokale Statusänderungen und importiert neue öffentliche Tickets, mit heruntergeladenen und lokal gespeicherten Anhängen.
Erzeugt Embeddings für das Betreff/eine Beschreibung eines Tickets und findet Top-N ähnliche Fehlerfälle über Kosinus-Ähnlichkeit.
Clientseitige Übersetzungs-Links lösen ein lokales LLM aus; unterstützt mehrere Ziel über data-lang-*-Attribute.
Fälle- und Ticket-Anhänge mit zeitstempelten Dateinamen über multer gespeichert, bedient über zwei statische Mounts.
Ausrüstungsstruktur, Fehlertypen und Personallisten werden von einfachen Konfigurationsdateien angetrieben (components.json, new_parameters/*.txt).
Vollständige Dark/Light-Theme-Unterstützung mit responsivem Layout und Animationen, alles in einem einzelnen Stylesheet.
Vertiefende Funktionsdokumentation
JWT-basierte Authentifizierung mit den folgenden Mechanismen:
authenticateToken prüft den Authorization: Bearer <token>-Header.env-Datei verschoben werden, statt hardcoded in routes/auth.js und db.js zu bleiben.uploads/case_<id>/ mit zeitstempelten Dateinamenuploads/ (von öffentlichem Server synchronisiert) und web_tickets/uploads/ (öffentliche Formular-Uploads)express.static-Mounts für /uploads deckt beide Verzeichnisse abPOST /api/translate → Ollama aya-expanse:8b ausPOST /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-Ähnlichkeitroutes/tickets.js exportiert syncTicketsFromPublicServer(), das:
sync_required = 1) zum öffentlichen Server pushtcustomer_name + subject + created_at)Statusänderungen an Tickets setzen automatisch sync_required = 1 für Pushback.
https://error-tracker.example.com)Lokales LLM–befeuerter Wissensassistent
Alle KI-Funktionen laufen gegen eine lokale Ollama-Instanz und behalten Kundendaten vollständig on-premise:
aya-expanse:8b für clientseitige UI-Übersetzungnomic-embed-text:latest für Similar-Fall-Suche| Funktion | Beschreibung |
|---|---|
| Endpunkt | POST /api/ai/find-similar-cases |
| Embedding-Modell | nomic-embed-text:latest |
| Abgleich | Top-N ähnliche Fehlerfälle über Kosinus-Ähnlichkeit |
| Speicher | Embeddings werden für Wiederverwendung in der Datenbank gespeichert |
Run und verwalten die Plattform auf Ihrem Server
mysql2)# Abhängigkeiten installieren
npm install
# Server starten (Port 5003)
npm start
# oder: node server.js
| Einstellung | Ort | Beschreibung |
|---|---|---|
| Datenbankpasswort | db.js | MySQL-Verbindungs-Credentials |
| JWT-Schlüssel | routes/auth.js | Sitzungs-Signatur-Schlüssel — drehen Sie zu Ihrem eigenen Wert |
| Öffentliche Server-URL | routes/tickets.js | Ihre eigene Aufnahme-Domain (Platzhalter ersetzen) |
| Öffentlicher Push-API-Schlüssel | routes/tickets.js | Drehen Sie zu Ihrem eigenen Geheimnis, bevor Sie live gehen |
| Produktname / Logo | index.html | White-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.
# 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.
Versionshistorie und Release-Notizen
data-lang-*-AttributeHäufige Probleme und Lösungen
db.js-Credentials. Stellen Sie sicher, dass die Datenbank error_tracker existiert. Wenden Sie das Schema aus backup.sql erneut an.db.js.aya-expanse:8b / nomic-embed-text:latest) gezogen ist. KI-Funktionen sind optional — die Kernverfolgung funktioniert ohne sie.routes/tickets.js. Prüfen Sie die Netzwerkverbindung und dass sync_required = 1 bei Statusänderungen gesetzt ist.uploads/ existiert und Schreibberechtigungen hat. Prüfen Sie den Upload-API-Route und dass die multer-Middleware konfiguriert ist.