6.1 KiB
n8n-Schnittstelle
Alle Fachdaten von EK-DOS-WEB liegen in n8n. Das Backend hält davon nichts vor ausser einem kurzlebigen Cache.
Adressen
Der n8n-Hauptdienst auf Port 5678 ist ausschliesslich über
https://n8n.elektro-krueger.eu erreichbar. Jeder weitere n8n-Dienst auf einem
anderen Port ist nicht veröffentlicht und wird über 10.0.11.131 angesprochen.
In backend/src/N8n/Endpoints.php:
$url->webhook('/offene-tickets'); // https://n8n.elektro-krueger.eu/webhook/ek-dos-web/offene-tickets
$url->internal(5679, '/webhook/irgendwas'); // http://10.0.11.131:5679/webhook/irgendwas
Neue Adressen gehören in diese Klasse, nicht verstreut in die Controller.
Endpunkte
Alle unter /webhook/ek-dos-web. Die Spalte Cache nennt Gruppe sowie frische
und Rückfall-Haltbarkeit in Sekunden.
| Pfad | Verwendung | Cache |
|---|---|---|
/offene-tickets |
Ticketliste | tickets 15 / 600 |
/offene-tickets/kundenruecksprache |
Ergebnis speichern | schreibend |
/tickets/digitale-akte |
– | |
/tickets/servicebericht |
– | |
/angebote |
Angebotsliste | offers 30 / 600 |
/angebote/versendet /beauftragt /zuruecksetzen /loeschen |
Aktionen | schreibend |
/kundenstamm |
Kundenliste, Anlage, Änderung | customers 120 / 1800 |
/kundenstamm/digitale-akte |
– | |
/rechnungen |
Rechnungen eines Kunden | invoices 30 / 600 |
/rechnungen/alle |
Gesamtübersicht (geschützt) | invoices 30 / 600 |
/rechnungen/zuordnen /sync |
Zuordnung, Abgleich (geschützt) | schreibend |
/rechnungen/pdf |
– | |
/rechnungen-anfertigen |
Aufgabenliste | invoices-create 30/600 |
/rechnungen-anfertigen/erledigt |
Aufgabe abschließen | schreibend |
/rechnungen-pruefen |
Prüfliste | invoices-review 30/600 |
/rechnungen-versenden |
Versandliste und -bestätigung | invoices-send 30/600 |
/digitale-akte |
PDF als base64 im JSON | – |
/interne-aufgaben (+ /erledigt /bearbeiten /loeschen) |
Aufgaben | tasks 20 / 600 |
/online-kaeufe (+ /erledigt /loeschen) |
Online-Käufe | purchases 30 / 600 |
/stundennachweise |
Monatsreport | hours 300 / 3600 |
Geteilte Geheimnisse
| Kopfzeile | aus | wofür |
|---|---|---|
x-ekdos-invoice-sync |
N8N_INVOICE_SYNC_SECRET |
Rechnungsübersicht, Zuordnung, Abgleich, Kundenanlage, Angebot zurücksetzen |
X-EK-DOS-Customer-Key |
N8N_CUSTOMER_KEY |
Lesen und Ändern im Kundenstamm |
x-ekdos-webhook-secret |
N8N_REFRESH_SECRET |
n8n meldet EK-DOS eine Ticketänderung |
Fehlt eines davon, antworten die betroffenen Routen mit 503 und einer Meldung, die genau das sagt -- sie schlagen nicht stumm fehl.
Der Kundenschlüssel stand in der Next.js-Fassung als Literal im Quelltext (
app/api/customers/route.ts). Er liegt jetzt in.env. Er sollte in n8n gewechselt werden, weil der alte Wert in der Versionsgeschichte steht.
n8n meldet eine Ticketänderung
Der Workflow Datenübergabe an EK-DOS-WEB darf weiter auf seinen Endpunkt zeigen, nur ohne Port:
POST https://schulung.elektro-krueger.local/api/tickets/refresh
x-ekdos-webhook-secret: <N8N_REFRESH_SECRET>
Anders als früher ist das kein Platzhalter mehr. In der Next.js-Fassung
antwortete die Route nur {ok:true} und tat sonst nichts; die Oberfläche sah
neue Tickets rein zufällig beim nächsten 20-Sekunden-Takt. Jetzt verwirft der
Aufruf den Ticket-Cache, sodass die nächste Abfrage die neuen Daten garantiert
sieht.
Ohne gesetztes N8N_REFRESH_SECRET verlangt die Route eine angemeldete Sitzung
und weist den Aufruf aus n8n mit 401 ab.
Feldabbildung Tickets
Die einzige Stelle, an der das Backend n8n-Felder umbenennt
(backend/src/Relay/TicketsController.php):
| n8n | Oberfläche |
|---|---|
ticketnummer / id |
id |
kunde / customer |
customer |
liegenschaft / property |
property |
letzter_servicebericht_status |
reportStatus |
fortsetzung |
continuation |
entscheidung_code |
decisionCode |
kundenruecksprache_ergebnis |
consultationResult |
kundenruecksprache_am / _von |
consultationUpdatedAt / By |
requiresCustomerConsultation wird abgeleitet: entweder
entscheidung_code === "TEILERLEDIGUNG_RUECKSPRACHE_KUNDE", oder der
Fortsetzungstext enthält „nimmt mit Kunden für das weitere Vorgehen Kontakt auf".
Zeilen ohne Ticketnummer werden verworfen.
Bekannte Kopplung
Interne Aufgaben kennen in n8n genau zwei Empfänger: sascha und svenja. Ein
drittes EK-DOS-Konto kann sich anmelden und alle Ansichten nutzen, aber noch
keine Aufgaben zugewiesen bekommen. Dafür müsste der n8n-Workflow Interne
Aufgaben einen freien Empfängerschlüssel annehmen.