Files

3.0 KiB
Raw Permalink Blame History

Redmine Ticket-Portal (Prototyp)

Vorgeschaltete Webseite für die Ticket-Anlage mit verpflichtendem Kundenbezug
(Lösung #1 aus redmine.unicon-gmbh.de).
Die Kundenauswahl läuft über ein Autocomplete gegen die Kundenstammdaten aus
dem WAWIS-SQL-Server (nur lesender Zugriff). Die Kunden müssen also nicht als
Auswahlliste in Redmine gepflegt werden. Die Kundennummer wird in ein
Text-Custom-Field des Tickets geschrieben.

Ablauf

  1. Mitarbeiter sucht den Kunden per Nummer oder Firmenname (Autocomplete)
  2. Betreff und Beschreibung erfassen
  3. Der Server validiert die Kundennummer gegen die Stammdaten und legt das Ticket per POST /issues.json in Redmine an (API-Key nur serverseitig).

Setup

npm install
cp .env.example .env    # Werte anpassen (API-Key, Projekt, Feld-ID)
npm start

Ohne gesetzten REDMINE_API_KEY läuft der Server im Trockenlauf: die Oberfläche funktioniert komplett, Tickets werden aber nur simuliert. Zum schnellen Ausprobieren reicht daher:

npm install && npm run start:dry

Danach http://localhost:3000 öffnen.

Konfiguration (.env)

Variable Bedeutung
REDMINE_URL Basis-URL der Redmine-Installation
REDMINE_API_KEY API-Key eines technischen Users (Recht: Tickets anlegen)
REDMINE_PROJECT_ID Ziel-Projekt für neue Tickets
REDMINE_TRACKER_ID Tracker (z. B. Support)
CUSTOMER_FIELD_ID ID des Custom Fields für die Kundennummer
CUSTOMERS_REFRESH_MS Aktualisierungsintervall der Kundenliste in ms (Standard 300000 = 5 min)
DB_SERVER Host des WAWIS-SQL-Servers
DB_PORT Port des SQL-Servers (Standard 1433)
DB_DATABASE Datenbankname (wawis)
DB_USER SQL-User (report)
DB_PASSWORD Passwort des SQL-Users

Die Feld-ID lässt sich per GET /custom_fields.json ermitteln.

SQL-Server-Anbindung (WAWIS)

Die Kundenstammdaten (Nummer + Name) werden beim Start und danach alle CUSTOMERS_REFRESH_MS im Hintergrund aus dem WAWIS-SQL-Server geladen (db.js, Standard-Abfrage auf kunde/kunzu). Es wird ausschließlich gelesen (SELECT) es gibt keinen Schreibzugriff auf die Datenbank. Gesperrte oder inaktive Kunden (bsper/baktiv) werden für die Auswahl ausgeblendet. Schlägt eine Aktualisierung fehl, bleibt die zuletzt geladene Liste aktiv.

Zugangsdaten stehen in .env (DB_SERVER, DB_PORT, DB_DATABASE, DB_USER, DB_PASSWORD).

Nächste Schritte Richtung Produktion

  • Authentifizierung für die Mitarbeiter (z. B. LDAP/SSO im Reverse Proxy)
  • WS-Nummer als zweites Custom Field automatisch mitschreiben
  • HTTPS und Betrieb hinter dem vorhandenen Reverse Proxy