CG-Feedback-Monitor/docs/FEEDBACK_CASCADE_PLAN.md
Lars 234f87d408 V2-Dev-Stand: Skala 1-10, Benefits/Concerns, DEV-Isolation und Gitea-Doku.
Bündelt die Neuentwicklung in AssigmentMonitorV2 (eigene Ports/DB), die Umstellung auf numerische Bewertungen, Meeting-Checklisten, KI-Tagging und die geplante Feedback-Kaskade — als Basis für Versionsverwaltung in Gitea.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-08 17:35:05 +02:00

14 KiB
Raw Blame History

Plan: Feedback-Neukonzeption, KI-Kaskadierung & UX

Stand: 2026-08-06 · nur DEV (AssigmentMonitorV2)
Voraussetzung: Bewertungsskala 110 weitgehend umgesetzt (docs/SCALE_1_TO_10.md).

Dieses Dokument ist die Arbeitsliste. Pakete nacheinander abarbeiten; innerhalb eines Pakets Unterpunkte möglichst in der angegebenen Reihenfolge. Abhaken in diesem File oder in der Session-Todo-Liste.


Zielbild (festgezogen)

Assignment-Feedback (Gesamtauswertung pro Person)

Ebene Inhalt
Kategorie Score 110 · Benefits · Concerns (Gesprächsbasis)
Dimension Benefits · Concerns — 3 bis max. 5 Hauptpunkte (verdichtet)
  • PDF enthält beides (Kategorie + Dimension) — intern/Manager-Gespräch, spätere Anbindung Erfassungssystem.
  • Keine Pflicht-Rubrik „Reifegrad pro Scorelevel 110“; Score-Vorschlag primär aus zeitgewichteten Meeting-Kategorie-Scores, KI darf ±1 mit Begründung feinjustieren.
  • Achievements/Development Needs → fachlich Benefits/Concerns (UI-Sprache umstellen).

KI-Kaskade Feedback

Stufe A  — 1 Call pro Kategorie (schmaler Kontext)
           → suggested Score, Benefits, Concerns (Kategorie)

Stufe B  — 1 Call pro Dimension
           Input: NUR Ergebnisse aus A (kein Rohprotokoll)
           → 35 Benefits + 35 Concerns (Dimension)

KI-Kaskade Tagging („Vorschläge analysieren“)

Nur ungetaggte Zeilen (bereits zugeordnete nie an KI)
→ Batches nach Zeilenanzahl UND Zeichenbudget
→ optional Hybrid: bei Monster-Batches Kriterien auf lokale Top-Kandidaten beschränken
→ Dimensions-Schnitt kein Standardweg
→ lokale Jaccard-Vorschläge + learnedPatternHints bleiben

Entscheidungen (Nachtrag 2026-08-06)

  1. Score: KI darf vorschlagen. Primärquelle = Meeting-Trend (wie bisherige Gewichtung). Keine 10-stufige Erwartungs-Rubrik als Voraussetzung; optional später globale Anker (z.B. 2/5/8/10), nicht jetzt.
  2. PDF: Kategorie-Benefits/Concerns mit ausgeben.
  3. Tagging-Batches: A (zeilen- + zeichenbasiert). B (Dimension) verworfen als Standard; Hybrid nur bei extrem großen Einträgen (Top-K Kriterien). C: getaggte Zeilen weiter ausschließen.

Paket 0 — Aufräumen Skala 110 (Rest aus SCALE Phase 24)

Bereits weitgehend erledigt; nur nachziehen, was noch hinkt.

# Aufgabe Done
0.1 Farbbänder speichern/laden (getOrSeed/saveRatingColorBands Server) — Hell-/Dunkelgrün unterscheidbar ☐ prüfen
0.2 Chips Detail/History/PDF/MD aus meetingCategoryRatings (+ Fallback) ☐ prüfen
0.3 Dimension-Prompts per „Auf Standard (110) setzen“ nachziehen / manuell testen
0.4 Kurz-Smoke: Speichern Skala → Meeting-Einschätzung → Farben greifen nach Reload

Exit: Skala und Farben verhalten sich in Config, Meeting und Feedback konsistent.


Paket 1 — Datenmodell Feedback (Benefits/Concerns)

# Aufgabe Dateien (Orientierung) Done
1.1 FeedbackCategoryText: benefits, concerns, suggestedBenefits, suggestedConcerns (+ Migration ALTER). Altes text/suggestedText entfernt (Dev: ggf. npm run db:reset oder Spalten bleiben ungenutzt in alter SQLite) types.ts, tableRegistry, UI/PDF
1.2 Dimension: DB achievements/developmentNeeds behalten; UI/PDF-Labels Benefits/Concerns
1.3 CRUD unverändert (generisch); Parser + Feedback-Seite + PDF angepasst
1.4 npx tsc -b grün

Exit: Persistenz für Kategorie- und Dimension-Benefits/Concerns inkl. suggested*.


Paket 2 — Prompt-Engine Stufe A (pro Kategorie)

# Aufgabe Done
2.1 Neues Template (AppSettings oder pro Dimension): Kategorie-Call — Platzhalter nur für eine Kategorie (Struktur, Kriterien-Scores/Notizen dieser Cat, Meeting-Cat-Scores/Trend, getaggte Zeilen dieser Cat)
2.2 Antwortformat Marker z.B. SCORE:, BENEFITS:, CONCERNS: — Parser analog parseDimensionAiResponse
2.3 Score-Vorschlag: berechneten Trend im Prompt vorgeben; KI nur bestätigen oder ±1 mit Begründung (nicht frei aus Protokoll erfinden)
2.4 Sequenz: alle Kategorien eines Institutee (Fortschritt, Teilfehler, Retry pro Kategorie)
2.5 Config-UI: Kategorie-Prompt editierbar (+ Reset), Platzhalter-Legende

Exit: „KI generieren“ füllt suggested* auf Kategorie-Ebene; Score-Badge aus Trend bleibt führend.


Paket 3 — Prompt-Engine Stufe B (Dimension verdichten)

# Aufgabe Done
3.1 Dimension-Template umbauen: Input = Kategorie-Benefits/Concerns + Scores der Dimension; kein Rohprotokoll
3.2 Output: genau 35 Benefits, 35 Concerns; Parser/Validierung (zu viele kürzen-Hinweis oder Prompt-Zwang)
3.3 Orchestrierung: erst alle Cats der Dim (A), dann ein Call B; fehlende Cats = Retry A vor B
3.4 Bestehende Dimension-Prompts in DB: Reset-Button / Sync auf neues Default-Template

Exit: Dimension-Texte sind Verdichtung, nicht Parallel-Erfindung aus dem Protokoll.


Paket 4 — Feedback-UI

# Aufgabe Done
4.1 Pro Kategorie: ScorePicker + Trend/KI-Score-Vorschlag („Übernehmen“) + Benefits/Concerns (editierbar + suggested-Boxen)
4.2 Pro Dimension: nur Benefits/Concerns (35), suggested übernehmen/verwerfen
4.3 Alten Ein-Text-pro-Kategorie und Achievements/DevNeeds-Labels entfernen bzw. umbenennen
4.4 „Trend in Text“ → sinnvoll auf Concerns oder Benefits mappen (Regel festlegen, z.B. Verschlechterung→Concern)
4.5 Fortschrittsanzeige Generierung: Kategorie X/Y, dann Dimension Z

Exit: Direktgespräch möglich: Kategorie-Details + Dimensions-Hauptpunkte auf einer Seite.


Paket 5 — PDF & sonstige Exporte

# Aufgabe Done
5.1 InstituteeFeedbackDocument / Assignment-Report: pro Kategorie Score + Benefits + Concerns; pro Dimension Benefits + Concerns
5.2 Nur finale Felder, nie suggested*
5.3 Markdown/JSON Assignment-Feedback falls vorhanden nachziehen

Exit: Internes PDF für Manager-Gespräch brauchbar.


Paket 6 — Tagging-Kaskade (Zeichen-Batches)

# Aufgabe Done
6.1 Hilfsfunktion: offene Zeilen sammeln (unverändert: ohne bereits Getaggte, ohne Kundenzitate wie bisher)
6.2 Batch-Builder: max. Zeilen und max. Zeichensumme (Konstanten in constants oder AI_CONFIG, konfigurierbar später)
6.3 analyzeSuggestions: Schleife über Batches; Ergebnisse mergen; Fortschritt „Batch i/n“; Teilfehler retrybar
6.4 Hybrid-Notnagel: wenn ein Batch trotz 1 Zeile zu groß (Struktur+Text), {{KRITERIEN_STRUKTUR}} auf Jaccard-Top-K der Batch-Zeilen beschränken
6.5 MUSTER:-Block: nach allen Batches einmal zusammenführen/schreiben oder nur aus Batches mit Treffern — Regel dokumentieren
6.6 Info-Zeile + Rohantwort weiter nutzbar (pro Batch oder letzte)

Exit: Lange Protokolle brechen nicht mehr am Einzelcall; getaggte Zeilen bleiben draußen.


Paket 7 — Robustheit KI-Client (gemeinsam)

Betrifft Feedback- und Tagging-Calls.

# Aufgabe Done
7.1 Timeouts / Abbruch klar melden (nicht still)
7.2 Retry mit Backoff für transient failures (einmalig)
7.3 Grobe Prompt-Größen-Schätzung vor Call → Warnung oder Auto-Split
7.4 Gleiche aiClient-Hilfen für Feedback und Tagging

Exit: Abbrüche sind erklärbar und oft automatisch reparierbar.


Paket UX — Professionelle Oberfläche (Capgemini-Tool, kein Marketing-Landing)

Bisher wirkt die App funktional, aber wie ein schneller Prototyp (graue Fläche, Emoji-Navigation, uneinheitliche Karten/Abstände). Ziel: ruhig, markenklar, gut lesbar im Direktgespräch und im Live-Meeting — nicht „bunte Dashboard-Show“.

Leitplanken

  • Capgemini-Brand #0070AD / Tailwind brand als Primärsignal; keine lila/Indie-Themes.
  • Bestehende Interaktionsmuster behalten (Tabs, ScorePicker, Tag-Picker) — visuell vereinheitlichen, nicht neu erfinden.
  • Schreibfluss im Meeting schützen (keine zusätzlichen Overlays beim Tippen).
  • Emojis in Nav/Buttons schrittweise durch klare Labels oder einfache Icons ersetzen (oder stark reduzieren).
  • Typografie und Abstände einmal zentral (index.css / kleine UI-Primitives), nicht Seite für Seite wildwuchs.
# Aufgabe Done
UX.1 Design-Tokens: Schrift, Abstände, Radius, Schatten, Flächen (bg-app, surface, border-subtle) in index.css / @theme — App-Shell (App.tsx) darauf umstellen
UX.2 App-Chrome: Header (Titel/Kontext), Bottom-Nav ohne Emoji-Overload, aktiver Zustand klar, sichere Touch-Targets
UX.3 Dashboard / Assignment-Listen: einheitliche Zeilen/Kacheln, Status, Typografie-Hierarchie (Nummer, Kunde, Institutees)
UX.4 Meeting-Live-UX: Einschätzung + Protokoll dichter und ruhiger; ScorePicker/Chips konsistent; Fokus auf Tippen + schnelle Scores
UX.5 Feedback-Seite: nach Paket 4 — klare Hierarchie Dimension → Kategorie; Benefits/Concerns optisch getrennt; KI-Vorschläge als „Entwurf“, nicht als Lärm
UX.6 Config: Tabs und Formulare angleichen (Skala, KI-Prompts, Struktur) — gleiche Button-/Hinweis-Muster
UX.7 Leere Zustände & Fehler: kurze, professionelle Leer-/Fehlertexte statt stiller Lücken
UX.8 PDF-Feinschliff: Typo/Abstände an Capgemini-Report-Anmutung (ohne Corporate-Template-Zwang)

Timing: UX.1UX.2 früh (nach Paket 0) als Fundament. UX.4 mit Meeting-Arbeit; UX.5 bewusst nach Paket 4 (sonst doppelte UI-Arbeit). UX.3/6/7 parallel zu funktionalen Paketen möglich. UX.8 nach Paket 5.

Exit: App wirkt wie ein internes Capgemini-Fachtool: einheitlich, ruhig, brandklar — ohne Feature-Regression.


Paket 8 — SCALE / Struktur Prio-2 und bekannte Offenheiten

Nicht blockierend für Pakete 17 / UX; einplanen wenn Kapazität.

# Aufgabe Quelle Done
8.1 Sichtbarkeit Dim/Cat pro Typ — vorgezogen nach Paket 1b SCALE Phase 6 → 1b
8.2 Notation-Schnellbuttons / mobile Hit-Areas (kann in UX.4 aufgehen) SCALE Phase 5
8.3 Dexie/IndexedDB-Legacy entfernen CLAUDE Offene Punkte L
8.4 Server Seed-if-empty Assignment-Typen/Struktur CLAUDE L
8.5 Evaluation.tsx / FeedbackDraftPage auf neue Benefits/Concerns + Bänder prüfen oder Legacy deprecaten
8.6 Datenschutz: Hinweis Tagging+Feedback (externe API) vor Prod CLAUDE

Empfohlene Abarbeitungsreihenfolge

0 (Smoke Skala)
 → 1 (Schema Benefits/Concerns)           ← erledigt
 → 1b (Typ → sichtbare Struktur)          ← VOR Feedback-KI: gleiche Teilmenge in Meeting + Feedback + Kaskade
 → 6 + 7 parallel möglich                 ← Tagging-Abbrüche lindern
 → 2 → 3 → 4 → 5                           ← Feedback-Neukonzeption Ende-zu-Ende
 → 8 Rest nach Bedarf
 → UX später

Hinweis: Paket UX ist spezifiziert, aber zurückgestellt — erst Features fertig, dann Optik.

Warum 1b vor 2: Stufe A (ein Call pro Kategorie) und Feedback-UI müssen nur Kategorien/Dimensionen des Assignment-Typs sehen. Ohne kanonische Sichtbarkeit generiert die KI später Inhalte für ausgeblendete Strukturteile.


Paket 1b — Feedback-Struktur je Assignment-Typ (vorziehen aus 8.1)

Ziel: Ein Assignment-Typ blendet Dimensionen und/oder Kategorien aus → Meeting-Einschätzung, Tagging-Struktur und Assignment-Feedback arbeiten auf derselben Teilmenge.

# Aufgabe Done
1b.1 Kanonischer Helper z.B. resolveVisibleStructure(allDims, allCats, allItems, criteriaIds){ dimensions, categories, items } (Cats ohne Items und Dims ohne Cats entfallen) — baut auf filterVisibleFeedbackStructure auf
1b.2 Überall verdrahten: MeetingView, Assessment, Feedback-Seite, Tagging-Prompt, PDF-Feedback-Teil, History/Detail wo nötig
1b.3 Config Ass.-Typen: Auswahl auf Dimension- / Kategorie-Ebene (Checkboxen), persistiert weiter als criteriaIds (alle Items der gewählten Cats) — kein zweites Parallel-Feld nötig
1b.4 Leere criteriaIds = alles sichtbar (unverändert); Smoke mit Typ der z.B. nur 12 Dimensionen hat ☐ manuell

Nicht nötig jetzt: separates dimensionIds[]/categoryIds[] in der DB, solange die UI Dim/Cat pflegt und auf criteriaIds mappt.

Exit: Feedback und Einschätzung zeigen für denselben Assignment-Typ dieselbe Struktur; KI-Kaskade kann darauf aufsetzen.


Empfohlene Abarbeitungsreihenfolge (Detail)

0 → 1 → 1b → (6+7 optional) → 2 → 3 → 4 → 5 → 8 → UX

Alternative, wenn Feedback-Calls zuerst stören: nach 1b sofort 2→3→4→5, Tagging 6→7 dazwischen wenn Abbrüche blockieren.


Nicht-Ziele (jetzt)

  • Produktiv-Migration / Mapping alter Enum-Skala
  • 10-stufige Score-Rubrik pro Kategorie
  • Dimensions-Score als eigene Pflicht-Ebene
  • Tagging-Batches standardmäßig nach Dimension schneiden
  • Automatischer KI-Call beim Meeting-Öffnen
  • Anbindung externes Erfassungssystem (PDF/Struktur vorbereiten reicht)
  • Komplett-Redesign als Marketing-Landing / Dark Mode / Illustration-Heavy UI

Abnahmekriterien (Gesamt)

  1. Feedback-Seite zeigt Kategorie-Score + Benefits/Concerns und Dimensions-Hauptpunkte (35).
  2. Generierung läuft kaskadiert (Cat → Dim), Teilfehler retrybar, Prompt ohne wiederholtes Vollprotokoll in Stufe B.
  3. PDF enthält Kategorie- und Dimension-Benefits/Concerns (final).
  4. „Vorschläge analysieren“ arbeitet in zeichenbewussten Batches; bereits getaggte Zeilen gehen nicht an die KI.
  5. Score-Vorschlag bleibt an Meeting-Trend gekoppelt; KI erfindet keinen Score aus dem Nichts.
  6. Oberfläche wirkt professionell und einheitlich (Shell, Typo, Abstände, Meeting + Feedback).
  7. npx tsc -b fehlerfrei; manuelle Smoke-Tests Meeting + Feedback + PDF.

Nächster Schritt

Beim Start der Umsetzung: Paket 0 kurz verifizieren, optional UX.1UX.2 für den ersten visuellen Sprung, dann entscheiden ob zuerst Paket 6 (Tagging) oder Paket 1+2 (Feedback-Schema/KI).