đŸŽ« Lizzy — OTRS Dashboard

Konzept, Herleitung und Designentscheidungen · Stand Juni 2026

Dieses Dokument ist die fortgeschriebene Version des v1-Konzepts (April 2026). Es beschreibt den aktuellen Stand und die Entscheidungen die zur heutigen Architektur gefĂŒhrt haben.

Warum dieses Tool?

Es geht nicht darum, die letzte Minute aus jedem Mitarbeiter herauszuholen. Es geht darum, Frust zu vermeiden — auf beiden Seiten.

Mitarbeiter die nicht wissen welches Ticket als nĂ€chstes dran ist, die mitten in einer Aufgabe unterbrochen werden weil unklar ist wer wofĂŒr zustĂ€ndig ist, die Hilfe brauchen aber nicht wissen wie sie sie koordinieren sollen — das kostet Energie, die dann fĂŒr die eigentliche Arbeit fehlt.

Kunden die lange warten, keine RĂŒckmeldung bekommen oder das GefĂŒhl haben ihr Anliegen geht unter — das kostet Vertrauen.

Wenn beides besser lĂ€uft — das Team arbeitet strukturierter, Kunden bekommen schnellere und verlĂ€sslichere Antworten — dann ist das der eigentliche Gewinn. Dass dabei auch die Effizienz steigt und am Ende mehr Spielraum bleibt, ist eine Konsequenz davon, nicht das Ziel.

Das Dashboard ist ein Werkzeug fĂŒr das Team, nicht zur Kontrolle des Teams.

Ausgangslage

OTRS 5 ist das eingesetzte Ticketsystem. Es bietet keine Ansicht, die zeigt, wer gerade woran arbeitet, wie hoch die Auslastung des Teams ist, oder in welcher Reihenfolge Tickets abgearbeitet werden sollen. Das System verwaltet Tickets — aber kein Dispatching.

Das Dashboard entstand aus dem Wunsch, genau diese LĂŒcke zu schließen: Wer macht was, in welcher Reihenfolge, und wieviel KapazitĂ€t ist noch frei?

v1 (April 2026) war ein Browser-Prototyp in einer einzigen HTML-Datei mit localStorage. Er hat bewiesen, welche Features sinnvoll sind und wie der Workflow funktioniert. v2 (Lizzy, ab Mai 2026) ist die produktive Server-Version — alle Mitarbeiter sehen denselben Zustand, OTRS wird auch beschrieben, und KI unterstĂŒtzt aktiv beim Dispatching.

Technische Grundentscheidungen

PHP + MySQL statt Flask/Python

Der Stack ist bewusst gewĂ€hlt. PHP lĂ€uft direkt unter Apache ohne separate Prozesse, MySQL ist fĂŒr das Team vertraut. Kein Build-Schritt, kein Node.js, keine Containerisierung. Das Ziel war eine Architektur die jemand mit Standard-Hosting-Erfahrung warten kann.

Zentrale Datenbank statt localStorage

Das grĂ¶ĂŸte Limit von v1 war der browserspezifische Zustand — zwei Personen sahen zwei unabhĂ€ngige Welten. Lizzy hat eine zentrale MariaDB auf einem separaten Server (ĂŒberlebt Server-Neuaufbau). Alle Dispatch-ZustĂ€nde, Zeitfenster, SchĂ€tzungen und KI-Caches liegen dort. Alle Mitarbeiter sehen denselben Stand.

OTRS wird auch beschrieben

v1 hat OTRS nur gelesen. Lizzy schreibt aktiv zurĂŒck: Tickets zuweisen (Owner Ă€ndern), Tickets schließen, interne Notizen posten, Zeiteinheiten buchen. Das erforderte einen eigenen OTRS-API-User mit entsprechenden Rechten. Alle Aktionen laufen ĂŒber den GenericTicketConnector.

Sync-Daemon statt Live-Abfragen

Ein Python-Daemon (otrs_sync.py) synchronisiert OTRS jede Minute in einen lokalen Cache. Der Browser fragt nie direkt OTRS — er liest aus dem lokalen Cache. Das hĂ€lt OTRS-Last niedrig und Antwortzeiten schnell. Der Kompromiss: Änderungen aus OTRS sind erst nach bis zu 60 Sekunden sichtbar. Aktionen aus dem Dashboard (Zuweisen, Schließen) aktualisieren den Cache sofort lokal.

Lokale KI — kein Cloud-LLM

Alle KI-Funktionen laufen ĂŒber Ollama lokal auf einem eigenen GPU-Server (AMD/ROCm). Kein OpenAI, kein Anthropic, keine externen Dienste. Modell fĂŒr Text: qwen3-14b-40k — ein qwen3:14b mit auf 40.960 Token erweitertem Kontextfenster, damit auch lange Ticket-VerlĂ€ufe vollstĂ€ndig analysiert werden können. Modell fĂŒr Embeddings: nomic-embed-text. Das war eine bewusste Entscheidung: Ticket-Inhalte verlassen das Netzwerk nicht. Konsequenz: Die QualitĂ€t ist etwas schlechter als GPT-4, dafĂŒr kein Datenschutzproblem und keine laufenden API-Kosten.

Deployment via Gitea CI/CD

Jeder Push auf einen Branch mit offenem Pull Request löst automatisch ein Deployment aus. Gitea Actions baut ein Artifact, lĂ€dt es in die Package Registry und ruft per Webhook einen CI/CD-Controller auf, der das Artifact auf dem Dev-Server auspackt und setup.sh ausfĂŒhrt. Kein manuelles Eingreifen nötig.

Das Dispatching-Konzept

Der zentrale Gedanke aus v1 ist unverÀndert: Ein Mitarbeiter kann immer nur eine Sache gleichzeitig tun. Das Dashboard macht das sichtbar und planbar.

Dispatch-Tab (Dispatcher-Ansicht)

Jeder aktive Mitarbeiter hat eine Karte mit seinem aktuellen Ticket ("Aktuell in Bearbeitung") und seiner Queue (priorisierte Liste, Drag & Drop). Der Dispatcher weist Tickets per Drag zu. Tickets können auch zwischen Mitarbeitern gezogen werden. Sortierung: Anwesend → Helpdesk → Pause → Vor Ort → Abwesend → Urlaub.

Zeitfenster-Tab (Tages- und Wochenplanung)

Neben der tagesaktuellen Queue gibt es Zeitfenster: geplante Arbeitsblöcke pro Mitarbeiter und Tag. Der Dispatcher plant dort Tickets mit ZeitschĂ€tzung ein. Vor dem Einplanen muss eine SchĂ€tzung gesetzt sein — sonst Fehlermeldung ("Bitte erst SchĂ€tzung setzen"). KapazitĂ€tsprĂŒfung: Wenn die Summe der SchĂ€tzungen die Fensterdauer ĂŒberschreitet, wird gewarnt. Die 300-Minuten-Annahme aus v1 ist damit teilweise abgelöst — durch echte Zeitfenster statt eines pauschalen Limits.

Ticket Pool

Neben der Dispatcher-gesteuerten Zuweisung gibt es den Ticket-Pool-Ansatz: Mitarbeiter wĂ€hlen selbst aus einem Pool offener Tickets. Das passt zu Teams die eigenverantwortlich arbeiten und keinen dedizierten Dispatcher haben. Im Lizzy-Modell ist das eine ergĂ€nzende Option — die KI-VorschlĂ€ge dienen als Orientierung, der Mitarbeiter trifft die endgĂŒltige Wahl. Ticket Pool und Dispatcher-Zuweisung schließen sich nicht aus; manche Tickets werden aktiv zugewiesen, andere landen im Pool fĂŒr Selbstselektion.

Abrechnung beim Schließen

Wenn ein Ticket geschlossen wird, können Zeiteinheiten (Minuten) und ein Abrechnungstext erfasst werden. Der Abrechnungstext (Lazy Text) wird als !B{Inhalt} in die OTRS-Notiz geschrieben — ein Format das das interne Abrechnungssystem von inmedias.it erkennt und extrahiert. ZusĂ€tzlich gibt es ein Lazy Notiz-Feld (!N{Inhalt}) fĂŒr interne Anmerkungen. Bei Icinga-Update-Tickets wird "Updates installiert" + 5 Minuten automatisch vorausgefĂŒllt.

Der Abrechnungstext kann per Knopf (✩ aus Kommentar) vom LLM aus einer formlosen internen Notiz erzeugt werden: ein sachlich-neutraler Satz, einheitliche Begriffe (Glossar), Wertungen entfernt. Ist die Notiz zu knapp (z.B. nur "Kommunikation"), zieht das LLM den Ticket-Verlauf als Kontext heran und prĂ€zisiert — aber strikt nur, was belegt ist (kein Erfinden auf einer Rechnung). Der Mitarbeiter sieht den Vorschlag und kann ihn vor dem Speichern anpassen. Das Format !B{
} wird dabei gegen Sonderzeichen abgesichert, damit der Export-Parser nicht bricht.

Zwei Betriebsmodi: Live und Zeitfenster

Lizzy unterstĂŒtzt zwei grundlegend verschiedene Arbeitsweisen. Ein Mitarbeiter kann einen oder beide Modi verwenden.

⚡ Live-Modus

Zeigt was gerade jetzt passiert. Der Dispatcher sieht in Echtzeit: wer arbeitet an welchem Ticket, wer ist anwesend, wie viele Tickets warten in jeder Queue.

  • Aktuell in Bearbeitung pro Mitarbeiter
  • Priorisierte Queue (Drag & Drop)
  • Anwesenheits- und Statusanzeige
  • Sofortzuweisung per Drag oder Klick
📅 Zeitfenster-Modus

Explizite Tages- und Wochenplanung. Tickets werden festen Zeitblöcken zugeordnet — der Mitarbeiter sieht in seiner Ansicht genau sein Zeitfenster fĂŒr den Tag.

  • Zeitblöcke mit Dauer (z.B. 3h Technik)
  • Tickets mit SchĂ€tzung einplanen
  • KapazitĂ€tsprĂŒfung verhindert Überbuchung
  • Supporter sieht nur das eigene Fenster

Die Modi schließen sich nicht aus. Der Dispatcher nutzt typischerweise den Live-Modus fĂŒr die tagesaktuelle Steuerung; die Zeitfenster-Planung dient dem Vorausplanen von Kundenterminen und grĂ¶ĂŸeren Aufgaben.

SLA & Dringlichkeit

Nicht alle Tickets sind gleich dringend. Lizzy kennt mehrere Dringlichkeitssignale und kombiniert sie fĂŒr den Dispatcher sichtbar.

OTRS-PrioritÀt und Icinga-Schweregrad

Tickets mit hoher OTRS-PrioritÀt oder Icinga-Severity CRITICAL werden farbig hervorgehoben (rot). Monitor-Tickets werden im Dashboard mit einem eigenen Status-Panel dargestellt.

Fester Termin → Kalender-VerknĂŒpfung

Manche Tickets haben einen fixen Außendiensttermin oder Kundentermin. Diese sollen — wenn die Kalender-Integration umgesetzt ist — automatisch als Zeitblock im Zeitfenster erscheinen, sodass der Mitarbeiter und der Dispatcher sehen: "Dieses Ticket ist am Dienstag 14 Uhr, nicht verschiebbar." Aktuell ist das ein manueller Schritt (Zeitfenster hĂ€ndisch anlegen). Die VerknĂŒpfung Ticket ↔ Kalender-Eintrag ist eine der offenen Fragen.

Queue-Lastgewichtung

Der KI-Score berĂŒcksichtigt bereits die Summe der Minuten-SchĂ€tzungen in einer Queue. Das ist kein formales SLA — aber ein FrĂŒhwarnsignal: Wenn ein Mitarbeiter 400 Minuten SchĂ€tzungen hat und nur ein 3h-Fenster, sieht der Dispatcher das sofort als KapazitĂ€tsproblem.

KI-UnterstĂŒtzung

Die KI in Lizzy ist kein Ersatz fĂŒr menschliches Urteilsvermögen — sie ist ein Vorschlag der ĂŒberstimmt werden kann und soll. Jede Zuweisung die der Dispatcher anders trifft als vorgeschlagen, wird gespeichert und fließt in kĂŒnftige VorschlĂ€ge ein.

Zuweisung-Vorschlag (Scoring)

FĂŒr jedes nicht zugeordnete Ticket berechnet Lizzy einen Score pro Mitarbeiter:

  • Firmenerfahrung: Wie viele Tickets dieser Firma hat der Mitarbeiter schon abgeschlossen? (gewichtet nach AktualitĂ€t — Erfahrung von vor 2+ Jahren zĂ€hlt weniger)
  • Kontakt-Bonus: Hat der Mitarbeiter speziell diesen Ansprechpartner schon betreut? (+5 pro Ticket, max +15)
  • Follow-Rate: Wie oft wird dieser Mitarbeiter vorgeschlagen und tatsĂ€chlich gewĂ€hlt? (±10 Punkte, ab 3 Entscheidungen aktiv)
  • Queue-Last: Wie viele Tickets und Minuten liegen schon in seiner Queue? (Abzug)
  • Anwesenheit & Status: Nicht anwesend: kein Bonus. Helpdesk: −3. Vor Ort: −8.
  • KI-Gewichtung: Im Admin einstellbar pro Mitarbeiter (0.0–1.0) um z.B. Dispatcher aus den VorschlĂ€gen herauszuhalten.

Danach bewertet ein lokales LLM (qwen3:14b) die Top-Kandidaten textlich und ergĂ€nzt FAQ-VorschlĂ€ge per Embedding-Ähnlichkeit.

Ticket-Zusammenfassung

Das LLM erstellt im Hintergrund Zusammenfassungen aller offenen Tickets (gecacht, kein erneuter LLM-Aufruf beim Öffnen): ein kurzes Problem-ResĂŒmee, ein Lösungsansatz und Schlagworte. Seit Juni 2026 fließt der gesamte Ticket-Verlauf ein (vorher nur die erste Nachricht) — möglich geworden durch das 40k-Kontextfenster. Ähnliche bereits gelöste Tickets werden per Embedding-Vergleich gesucht und angezeigt.

Antwort-Entwurf

Auf Knopfdruck entwirft das LLM eine Kundenantwort im pro Kunde konfigurierten Stil (formell / technisch / informell). Es nutzt dabei den Ticket-Verlauf, das Kundenprofil und Ă€hnliche gelöste Tickets als Kontext. Der Entwurf ist ein Vorschlag — der Mitarbeiter formuliert final selbst.

Berichte & Themen-Analyse

FĂŒr die Kunden-TĂ€tigkeitsberichte fasst das LLM zusammen, woran in einem Zeitraum gearbeitet wurde, und erkennt auf Wunsch die wiederkehrenden Probleme je Kategorie (Themen-Tiefenanalyse). Grundlage sind die bereinigten Ticket-VerlĂ€ufe; die Ergebnisse werden 24 h gecacht.

FAQ-VorschlÀge

FAQs aus OTRS werden importiert, per LLM zusammengefasst und mit nomic-embed-text eingebettet. Bei jedem Zuweisung-Vorschlag werden semantisch Ă€hnliche FAQs mitgeliefert. Mitarbeiter können FAQs als hilfreich/nicht hilfreich bewerten — das beeinflusst kĂŒnftige VorschlĂ€ge.

Kunden-Profile & Wiki

Das LLM generiert aus der Ticket-Historie und EintrĂ€gen aus dem internen Wiki (MediaWiki, Kunde:-Namespace) automatisch ein Profil pro Firma. Dieses Profil fließt in den Zuweisung-Prompt ein: "Was macht dieser Kunde, welche Systeme hat er, welche Erfahrungen haben wir mit ihm?"

Wo das LLM ĂŒberall eingesetzt wird

Alle folgenden Funktionen nutzen dasselbe lokale Modell. Damit es tagsĂŒber nicht blockiert, laufen die meisten Auswertungen vorberechnet im Hintergrund (Cron/Daemon) und werden gecacht — der Klick im Dashboard liefert dann sofort das Ergebnis statt auf das LLM zu warten.

Funktion Was das LLM tut Auslöser
Zuweisungs-Vorschlagbewertet Top-Kandidaten textlich, schĂ€tzt Aufwand, ergĂ€nzt FAQKlick + Prewarm (1×/min)
Ticket-ZusammenfassungProblem + Lösungsansatz + Schlagworte aus dem ganzen VerlaufPrewarm + Nacht-Batch
Antwort-EntwurfKundenantwort im konfigurierten StilKlick (✉)
Abrechnungstextformlose Notiz → neutraler Abrechnungssatz, bei Bedarf mit Verlauf prĂ€zisiertKlick (✩ aus Kommentar)
Kunden-Bericht & ThemenTĂ€tigkeits-Zusammenfassung + wiederkehrende Probleme je KategorieKlick (Statistik)
Kunden-ProfilFirmenprofil aus Ticket-Historie + WikiAdmin, pro Kunde
FAQ- & Wiki-AufbereitungFAQ/Wiki-Seiten zusammenfassen + verschlagwortenAdmin / Cron
Anonymisierungerkennt Personennamen fĂŒr die Maskierung im BerichtKlick (Bericht)
Abrechnungs-Korpusanalysiert historische !B{
}-Texte (Auswertung, read-only)manuell

Embeddings (nomic-embed-text) sind ein zweiter, eigener Einsatz: Tickets und FAQs werden als Vektoren gespeichert, um per Ähnlichkeit "passt zu diesem Fall" zu finden — nĂ€chtlich vorberechnet.

Wie die Bausteine zusammenhÀngen

Die KI-Funktionen sind kein loser Haufen einzelner Aufrufe — sie bauen aufeinander auf. Im Kern steht der zwischengespeicherte Ticket-Verlauf als gemeinsame Datenquelle, dazu zwei RĂŒckkopplungen aus dem Verhalten des Teams.

① Gemeinsame Grundlage: der Verlaufs-Cache

Ein Daemon legt die Ticket-Texte aus OTRS lokal ab. Auf dieser einen Quelle setzen Zusammenfassung, Antwort-Entwurf, Abrechnungstext und Themen-Analyse auf — niemand holt die Texte doppelt aus OTRS.

② Ergebnisse speisen Ergebnisse

Die Zusammenfassung eines Tickets wird beim Zuweisungs-Vorschlag und beim Antwort-Entwurf als Kontext fĂŒr „Àhnliche gelöste FĂ€lle" wiederverwendet. Das Kundenprofil fließt in Zuweisung und Antwort-Entwurf ein. Der Abrechnungstext greift bei knappen Notizen auf Verlauf bzw. Zusammenfassung zurĂŒck. So zahlt jede einmal erzeugte KI-Ausgabe auf mehrere Funktionen ein.

⑱ Embedding-BrĂŒcke

Tickets und FAQs liegen zusĂ€tzlich als Vektoren vor. DarĂŒber findet der Vorschlag Ă€hnliche frĂŒhere Tickets und passende FAQs — unabhĂ€ngig von exakter Wortwahl.

④ RĂŒckkopplung aus dem Team

Zwei Lernschleifen korrigieren die VorschlĂ€ge: Jede Dispatcher-Zuweisung, die vom Vorschlag abweicht, fließt als Follow-Rate zurĂŒck ins Scoring. Jede FAQ-Bewertung (👍/👎) wird kontextgebunden gespeichert und hebt/senkt die FAQ bei Ă€hnlichen FĂ€llen.

Vorlagen: Playbooks & Checklisten

Playbooks

Ein Playbook beschreibt einen wiederkehrenden Prozess als Folge von Schritten — zum Beispiel "Onboarding Neukunde" mit 5 Tickets von ErstgesprĂ€ch bis Abnahme. Mit einem Klick (und Eingabe des Kundennamens) werden alle Tickets auf einmal in OTRS angelegt, fertig betextet, der richtigen Queue zugewiesen. Variablen wie {kunde} werden ersetzt.

Jeder Schritt kann einem festen Mitarbeiter vorbelegt werden (Owner Default). Das ermöglicht komplexe wiederkehrende Aufgaben die immer gleich verteilt werden — z.B. "Carbonio-Schritt 1 geht immer an Technik-Queue, Schritt 5 (Abnahme) geht immer an jhs". Der Dispatcher kann beim Auslösen noch ĂŒbersteuern, hat aber sofort eine sinnvolle Vorbelegung.

Checklisten-Vorlagen

FĂŒr Projekte mit fester PrĂŒfliste (z.B. Carbonio Setup mit 20 Punkten) gibt es Checklisten-Vorlagen. Das TicketChecklist-Plugin von OTRS hat keine REST-API — Lizzy schreibt die EintrĂ€ge daher direkt in die OTRS-Datenbank (Tabelle ps_ticketchecklist). Da Lizzy Zugriff auf dieselbe Datenbank hat, ist das die vollstĂ€ndige Lösung — kein manueller Schritt, kein Workaround.

Features im Überblick

✅ Umgesetzt

  • Dispatch-Tab: Queue, Aktuell in Bearbeitung, Drag & Drop, Cross-User
  • Zeitfenster-Tab: Planung, KapazitĂ€tsprĂŒfung, SchĂ€tzungspflicht, In-Ticket-Posten
  • Ticket-Aktionen: Zuweisen, Schließen, Notiz posten, Merge, Lazy Text/Notiz/Zeit
  • Benutzerrollen: Dispatcher / Supporter (+ Impersonation fĂŒr Testansicht)
  • Status-Anzeige: Normal / Pause / Helpdesk / Vor Ort / Urlaub
  • KI-Zuweisung: deterministischer Score + LLM-Bewertung + FAQ-VorschlĂ€ge
  • KI-Zusammenfassung: ganzer Ticket-Verlauf, gecacht, Ă€hnliche gelöste Tickets
  • KI-Antwort-Entwurf im pro-Kunde-Stil (✉)
  • KI-Abrechnungstext aus formloser Notiz (✩), bei knappen Notizen mit Verlaufs-Kontext prĂ€zisiert
  • Kunden-Profile aus Ticket-Historie + Wiki (LLM-generiert)
  • Kunden-Berichte + Themen-Tiefenanalyse (LLM), Namens-Anonymisierung
  • Icinga-Integration: Monitor-Tickets farbig markiert, Status-Panel
  • Vorlagen: Playbook-Editor, Checklisten-Vorlagen, SQL-Snippet-Generierung
  • Admin: Benutzerverwaltung, FAQ-Import, Statistiken, Sync-Steuerung
  • Mobile Ansicht: Ticket-Tab als Karten-Layout auf Smartphones
  • 30s-Hintergrundrefresh ohne Overlay, Filter bleibt erhalten
  • CI/CD: Gitea Actions → Artifact → Webhook → Dev-Server

🔧 Offen / Geplant

  • Icinga-Auswertung (wöchentlich): LLM analysiert Muster in Monitor-Tickets und macht OptimierungsvorschlĂ€ge
  • Abrechnungstexte aussagekrĂ€ftiger machen: nichtssagende Floskeln ("Kommunikation", oft bei viel gebuchter Zeit) automatisch mit Verlaufs-Kontext anreichern — erster Schritt umgesetzt, Feinschliff offen
  • Pascom-Integration: Status aus Dashboard ↔ Pascom synchronisieren
  • Abwesenheits-Workflows: Schnellansicht welche Tickets bei Krankheit delegiert werden mĂŒssen; Übergabeliste vor Urlaub
  • Kalender-Integration: Meetings und feste Termine automatisch als Zeitblöcke; VerknĂŒpfung Ticket ↔ Kalendereintrag (war schon in v1 offen, konkrete Umsetzung noch unklar)
  • Drag auf "Aktuell in Bearbeitung": In manchen Browsern instabil (Kind-Element blockiert Drop-Events)

❌ Bewusst nicht ĂŒbernommen aus v1

  • Meeting-Verwaltung im Dashboard: Wird ĂŒber Kalender-Tools abgebildet, nicht hier
  • Hilfe-Anfragen als Queue-Eintrag: Zu komplex fĂŒr den tatsĂ€chlichen Nutzen — stattdessen einfach per Kommentar/Notiz
  • Timer-Countdown pro Ticket: Zeitfenster-Planung löst das KapazitĂ€tsproblem besser als ein laufender Timer
  • Kanboard-VerknĂŒpfung: Weiterhin offen, noch kein konkreter Bedarf entstanden

Benutzerrollen

🎯 Dispatcher
  • Sieht alle Tabs
  • Weist Tickets zu und verwaltet Queues
  • Verwaltet Zeitfenster fĂŒr alle
  • Zugriff auf Admin, Statistik, Status
  • Kann KI-Sync manuell anstoßen
  • Kann andere User impersonieren (Testansicht)
đŸ‘€ Supporter
  • Sieht Übersicht, Tickets, Zeitfenster
  • Kann eigene Tickets kommentieren, schließen
  • Sieht KI-Zusammenfassungen und FAQ-VorschlĂ€ge
  • Kein Zugriff auf Dispatch, Admin, Statistik

Das Prinzip aus v1 gilt: Supporter mĂŒssen nicht entscheiden, sie arbeiten was oben liegt. Die kognitive Last des Priorisierens liegt beim Dispatcher.

Arbeitszeit und KapazitÀt

Die 300-Minuten-Annahme aus v1 (38h/Woche, abzĂŒglich Overhead) ist weiterhin der Orientierungswert — es gibt keine automatische Kalender-Integration. Reale KapazitĂ€t ergibt sich aus:

Offene Frage (aus v1, noch ungelöst): Meetings und andere nicht-OTRS-Aufgaben erzeugen blinde Flecken. Ein Mitarbeiter der gerade in einem 2-Stunden-Meeting sitzt, erscheint im Dashboard als verfĂŒgbar. Eine Kalender-Integration wĂŒrde das lösen — ist aber noch nicht umgesetzt.

Offene Fragen

Ist jede Aufgabe ein Ticket?

Aus v1 unverĂ€ndert offen. Einkauf, Terminvorbereitung, interne Abstimmungen — diese Aufgaben erscheinen weder in OTRS noch im Dashboard. Die Entscheidung war: nicht zu erzwingen. Ein Mitarbeiter der "frei" erscheint aber gerade eine interne Aufgabe erledigt, ist eine bekannte und akzeptierte UnschĂ€rfe.

Wo leben interne Aufgaben?

Kanboard war als geplante ErgĂ€nzung vorgesehen. Noch nicht integriert, kein konkreter Zeitplan. Solange interne Aufgaben klein und kurzlebig sind, wird das Dashboard als Dispatching-Tool fĂŒr OTRS-Tickets betrieben — bewusst ohne Anspruch auf vollstĂ€ndige Aufgaben-Erfassung.

Kalender-Integration: konkrete Umsetzung unklar

Die Integration eines Kalenders (z.B. Carbonio) ist seit v1 als Idee vorhanden, aber noch nicht ausgearbeitet. Offen sind mehrere Teilfragen:

  • Wie werden Meetings angelegt? Im Dashboard direkt, oder nur im Kalender-Tool mit Einspiegelung?
  • Wie erscheinen sie im Dashboard? Als Zeitblock im Zeitfenster-Tab, als eigene Kachel auf der Übersicht, oder nur als Warnung beim Dispatch?
  • Fester Termin → Ticket: Wenn ein Außendienst-Ticket einen fixen Termin hat, soll dieser als Kalender-Eintrag erscheinen — und umgekehrt. Die bidirektionale VerknĂŒpfung ist technisch offen.
  • Schreibzugriff auf Carbonio CalDAV? Technisch möglich, aber bisher kein Bedarf entstanden der den Aufwand rechtfertigt.

Code-Struktur: dashboard.js

Die Frontend-Logik lag ursprĂŒnglich in einer einzigen Datei mit 3700+ Zeilen. Inzwischen ist der Modul-Split erfolgt: gemeinsame Helfer und die Tab-Bereiche (Zeitfenster, Admin, Statistik, Vorlagen) liegen als eigene Module unter assets/js/lizzy/, dashboard.js ist auf ~1800 Zeilen als Orchestrator (Dispatch + Tickets + KI-Klicks) geschrumpft. Eine weitere Aufteilung von dashboard.js selbst bleibt fĂŒr den nĂ€chsten grĂ¶ĂŸeren Umbau offen.

Versionsverlauf

v1 — April 2026 Browser-Prototyp

Eine einzelne HTML-Datei, localStorage, lokaler Python-Proxy. Konzept-Validierung. Hat bewiesen: welche Features sinnvoll sind, wie der Workflow funktioniert. Code bewusst weggeworfen, Konzept ĂŒbernommen.

v2 — Mai 2026 Lizzy (produktiv)

PHP + MariaDB + Apache. Geteilter Zustand, OTRS-Schreibzugriff, KI-UnterstĂŒtzung, CI/CD. In produktivem Einsatz bei inmedias.it.

Aus v1 ĂŒbernommen: Konzept, Feature-Definitionen, Workflows. Nicht ĂŒbernommen: Code, Timer, Meeting-Verwaltung, Hilfe-Anfragen als Queue-Eintrag.