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
- Mitarbeiter sucht den Kunden per Nummer oder Firmenname (Autocomplete)
- Betreff und Beschreibung erfassen
- 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