B2B-Intent Rollout — Change Log & Rollback¶
Datum: 2026-05-06
Ziel: B2B-klassifizierte Tickets bekommen automatisch Tag auto_b2b in Zendesk → Susi baut darauf eine View + Inbox-Skip. Kein Auto-Reply.
1. Was schon erledigt ist¶
1.1 Neuer Subworkflow [SUB] B2B Tag (NEU erstellt)¶
- ID:
JjHXvM7fIHPN4YFs - URL: https://ai-mokebo.app.n8n.cloud/workflow/JjHXvM7fIHPN4YFs
- Projekt: Susi Projects (
uK9eJgH0LF2SK87i) - Status: Erstellt, getestet mit Pin Data (Success-Path), noch nicht published.
- Was er tut:
- Trigger empfängt
ticket_id Add B2B TagmachtPUT https://mokebo.zendesk.com/api/v2/tickets/{id}.jsonmit Body{ ticket: { additional_tags: ['auto_b2b'] } }(additive — Zendesk dedupliziert)- Bei Success:
Set Result Tagged→sub_action: 'b2b_tagged',sub_status: 'success' - Bei API-Fehler (Error-Output via
onError: continueErrorOutput):Set Result Failed→sub_action: 'b2b_tag_failed',sub_status: 'failed' - Beide Pfade convergieren in
Merge Output - Output-Convention:
{ ticketId, sub_action, sub_status, sub_reason, sub_macro_id, sub_message }— exakt wie die anderen Subs liefern sollten.
1.2 ⚠️ Manuell in der UI zu erledigen (vor erstem produktiven Run!)¶
- Credential setzen: Im Node
Add B2B Tagist das Zendesk-Credential leer. In der UI öffnen → CredentialZendesk Basic Auth(oder wie bei dir benannt — der httpBasicAuth den auch SUB Portalverweis nutzt) zuweisen. - Workflow aktivieren: Toggle oben rechts auf "Active".
2. Was du im Dispatcher noch ändern musst¶
⚠️ WICHTIG — laut CLAUDE.md zerstört update_workflow Credential-Bindungen. Deshalb mache ich die Patches NICHT per MCP — du musst die 4 Änderungen unten selbst in der UI vornehmen. Wenn du Hilfe willst, screensharen wir das.
Workflow: MOKI Dispatcher v2 (zikmLDiFPNI4bLmr)
Patch A — Google Sheet MOKI Config aktualisieren¶
Sheet: das Sheet, das vom Node Read MOKI Config gelesen wird.
Neue Zeile hinzufügen (oder bestehende b2b_anfrage-Zeile auf live: TRUE setzen):
| intent | live | auto_send | complexity |
|---|---|---|---|
b2b_anfrage |
TRUE |
TRUE |
low |
(auto_send muss TRUE sein damit Routing greift — der SUB schickt aber keinen Public Reply, er taggt nur.)
Patch B — Node Routing Decision (Code-Node) erweitern¶
Vorher (relevante Stellen):
const CONFIDENCE_THRESHOLD = 0.7;
const INTENT_TO_SUB = {
rechnung: 'sub_rechnung',
sendungsstatus: 'sub_sendungsstatus',
reklamation: 'sub_portalverweis',
};
const URGENT_HOLD_INTENTS = ['adressaenderung'];
Nachher — drei Änderungen:
-
Neue Konstante direkt nach
CONFIDENCE_THRESHOLD: -
INTENT_TO_SUBerweitern: -
In der Entscheidungs-Kette einen Extra-Check für B2B-Threshold vor dem
INTENT_TO_SUB[intent]-Branch einfügen. Konkret nach demURGENT_HOLD_INTENTS-Block, vorelse if (INTENT_TO_SUB[intent]):
// NEU: B2B braucht höheren Confidence-Threshold (0.8 statt 0.7)
// Grund: falscher B2B-Tag = Ticket aus Inbox raus, Kunde wartet ewig
else if (intent === 'b2b_anfrage' && conf < B2B_CONFIDENCE_THRESHOLD) {
routeTarget = 'no_op';
routeReason = 'b2b_confidence_below_threshold';
}
else if (INTENT_TO_SUB[intent]) {
routeTarget = INTENT_TO_SUB[intent];
routeReason = 'routed_to_sub';
}
Patch C — Node Route Switch neuer Output¶
In den Switch Rules am Ende ein 5. Rule hinzufügen:
- outputKey: sub_b2b
- leftValue: ={{ $json.route_target }}
- rightValue: sub_b2b
- operator: equals (string)
Patch D — Neuer Node Call SUB B2B Tag + Verkabelung¶
Neuer Node: Execute Workflow
- Name: Call SUB B2B Tag
- Workflow: [SUB] B2B Tag (JjHXvM7fIHPN4YFs)
- Mode: Run once for each item
- Inputs: ticket_id ← ={{ $json.ticket_id }}
- Setting: Always Output Data: true (analog zu den anderen Call-SUB-Nodes — Defense-in-Depth gegen Drops)
Verkabelung:
- Route Switch Output sub_b2b → Call SUB B2B Tag
- Call SUB B2B Tag → Merge Branches (gleicher Merge-Input wie die anderen Subs nutzen)
3. Test-Plan nach Rollout¶
- Live-Smoke-Test: Eines der bekannten echten B2B-Tickets manuell durch den Workflow lassen (Manual Trigger statt Cron). Erwartet: Tag
auto_b2bin Zendesk gesetzt, im SheetRoute: routed_to_sub+Sub Action: b2b_tagged. - Borderline-Test: Ticket mit Confidence 0.7–0.8 (z.B. uneindeutige Kontaktformular-Nachricht mit B2B-Andeutung). Erwartet:
Route: no_op,Reason: b2b_confidence_below_threshold— Tag wird nicht gesetzt. - Vollständiger Cron-Run beobachten: 1 Tag laufen lassen, im Sheet B2B-Klassifikationen reviewen.
4. Rollback (falls B2B-Tagging Probleme macht)¶
Zwei Stufen — sanft und hart.
Sanfter Rollback (Routing aus, Sub bleibt)¶
Effekt: B2B-Tickets gehen wieder den alten Weg (sub_not_yet_built → no_op). Kein Tag mehr gesetzt. Sub bleibt unbenutzt aber existiert.
- Im Sheet
MOKI Config: Zeileb2b_anfrage→live: FALSE. Fertig. - Routing Decision setzt dann
routeTarget = 'no_op'mitrouteReason = 'intent_not_live'. - Switch und Sub-Aufruf bleiben unverändert, werden aber nicht mehr getriggert.
Wann nutzen: Wenn Tags falsch gesetzt werden, aber sonst läuft der Dispatcher fehlerfrei.
Harter Rollback (alle Patches rückgängig)¶
- Patch D rückgängig: Node
Call SUB B2B Tagund seine Verbindung zuRoute SwitchundMerge Brancheslöschen. - Patch C rückgängig: In
Route Switchdie 5. Rule (sub_b2b) löschen. - Patch B rückgängig: Im
Routing Decision-Code die drei Änderungen rückgängig machen: B2B_CONFIDENCE_THRESHOLD-Konstante löschenb2b_anfrage: 'sub_b2b'ausINTENT_TO_SUBrauselse if (intent === 'b2b_anfrage' && conf < B2B_CONFIDENCE_THRESHOLD)-Block raus- Patch A rückgängig: Sheet-Zeile
b2b_anfragewieder auflive: FALSE(oder Zeile löschen falls vorher nicht da). - Sub archivieren oder löschen: [SUB] B2B Tag → Settings → Archive (nicht löschen — Audit-Trail).
- Bereits gesetzte Tags in Zendesk bleiben bestehen. Falls die weg sollen: Zendesk Bulk-Update über die View, die du sowieso baust.
5. Open Questions / Future Work¶
- Confidence-Threshold-Tuning: 0.8 ist meine Empfehlung. Wenn du im Sheet siehst dass valide B2B-Tickets bei 0.75–0.79 hängen bleiben (
b2b_confidence_below_threshold), kannst du runter auf 0.75. Wenn False-Positives auftauchen (Tag wo kein B2B), hoch auf 0.85. - Plenty-Pre-Check: Falls du eine Plenty-Kundenklasse
B2Bpflegst, könntest du im SUB nachTriggereinen optionalen Plenty-Lookup einbauen, der Hard-B2B-Kunden direkt taggt ohne auf den Confidence-Score zu warten. Out of scope für jetzt. - Loop-Schutz: Aktuell wird
auto_b2bjedes Mal additive gesetzt — Zendesk dedupliziert, also harmlos. Falls du im Audit Log die wiederholten "Tag added"-Einträge stören, können wir analog zuSUB Portalverweiseinen GET vor dem PUT einbauen.
6. Verlinkte Workflows¶
- [SUB] B2B Tag — neu, zu aktivieren
- MOKI Dispatcher v2 — Patches A–D nötig