Klassifikations-Pipeline
Die Pipeline verarbeitet ein Ticket in 6 Schritten:
1. Vorverarbeitung
Titel und Body werden normalisiert, Tags extrahiert, Log-Anhaenge inline einbezogen.
2. Signal-Sammlung
Fuenf parallele Signale werden gesammelt:
| Signal | Gewicht | Beschreibung |
|---|---|---|
| Repo-Match | 3.0x | Quell-Repo gegen Collection-Registry (staerkstes Signal) |
| Tag-Match | 2.0x | Tags gegen Collection-Namen |
| Keyword-Match | 1.5x | Ticket-Text gegen gewichteten Keyword-Index |
| Attachment-Match | 1.5x | Package-Namen und Dateipfade aus Log-Anhaengen |
| Search-Match | 1.0x | Collection-Verteilung der Top-10 Suchergebnisse |
| Feedback-Match | 0.5x pro Korrektur | Aehnliche korrigierte Tickets aus der Feedback-DB |
Keyword-Index
Jede Collection hat gewichtete Keywords:
"bpmn" → engine (2.0)
"node-red" → lowcode (2.0)
"openid" → authority (2.0)
"single-binary" → cuby (2.0)
"artifactshipper" → devops (2.0)Mehrere Treffer derselben Collection verstaerken den Score (Multi-Hit-Bonus).
Feedback-Signal (Self-Improvement)
Wenn aehnliche Tickets in der Vergangenheit korrigiert wurden, bekommt die korrigierte Collection einen Bonus:
Ticket: "Dashboard zeigt alte Daten"
FTS5-Suche findet: 5x zu "portal" korrigiert (vorher "lowcode")
→ Boost: portal +2.03. Hybrid-Suche
Der Ticket-Titel wird als Suchquery gegen den qmd-Index geschickt. Die Collection-Verteilung der Top-10 Ergebnisse wird als zusaetzliches Signal genutzt.
4. Scoring
Alle Signale werden gewichtet aggregiert und auf 0-1 normalisiert:
engine: keyword(1.5) + tag(2.0) + search(0.3) = 3.8 → 1.00
lowcode: keyword(0.8) + search(0.2) = 1.0 → 0.26
studio: search(0.1) = 0.1 → 0.035. Entscheidung
| Bedingung | Path | Bedeutung |
|---|---|---|
| Score > 0.8 und Abstand > 0.2 zum Zweiten | Fast Path | Eindeutig, sofortige Antwort |
| Score < 0.8 oder kein klarer Abstand | Slow Path | LLM entscheidet aus Top-3 Kandidaten |
LLM-Entscheider (Slow Path)
Das LLM bekommt:
- Ticket-Titel + Body
- Top-3 Kandidaten mit Scores
- Top-5 Doku-Treffer
- Feedback-Hints (haeufige Fehlklassifikationen)
Und liefert: Collection, Sub-Thema, Konfidenz, Begruendung.
Der LLM-Entscheider ist optional. Ohne konfiguriertes LLM wird immer der Fast Path genutzt (bestes regelbasiertes Ergebnis).
6. Ergebnis + Speichern
Das Ergebnis wird zurueckgegeben und gleichzeitig im Feedback-Store gespeichert (fuer spaeteres Self-Improvement via Feedback).
Sub-Thema-Erkennung
Innerhalb der gewaehlten Collection wird das beste Sub-Thema ermittelt:
Collection: engine
Sub-Themen:
bpmn/timer-events → Keywords: timer, cron, delay
bpmn/gateways → Keywords: gateway, exclusive, parallel
bpmn/user-tasks → Keywords: user-task, formular
configuration → Keywords: config, environment, database
Ticket: "Timer feuert nicht bei cron"
→ Sub-Thema: bpmn/timer-events (2 Treffer: timer + cron)