CG-Feedback-Monitor/docs/FACHLICHE_ARCHITEKTUR.md

9.4 KiB
Raw Permalink Blame History

Fachliche Architektur — Assignment Monitor

Zweck und Kontext

Assignment Monitor ist eine Progressive Web App (PWA) zur Live-Begleitung und Bewertung von Capgemini-Trainees (Institutees) während ihrer Kunden-Assignments. Die App wird vom jeweiligen Lead (Führungskraft / Mentor) auf dem Smartphone genutzt, um:

  • Kundentermine strukturiert zu protokollieren
  • Beobachtungen und Bewertungen in Echtzeit zu erfassen
  • Am Ende eines Assignments ein qualifiziertes Feedback vorzubereiten

Nutzer: Lars Stommer (Capgemini Management Consultant Trainee Program Lead)
Sprache der App: Deutsch (Bedienoberfläche), Englisch (Rating-Labels)
Datenschutz: Alle Daten bleiben lokal im Browser (IndexedDB). Kein Public Cloud Upload.


Fachliche Entitätenhierarchie

AssignmentType                        ← Konfiguration (z.B. "Case Interview")
  └── PhaseTemplate[]                 ← Definierter Meeting-Flow des Typs
  └── criteriaIds: FeedbackCriterionItem[] ← Welche Kriterien gelten für diesen Typ

Assignment                            ← Ein konkretes Kundenprojekt
  └── AssignmentType                  ← Zugeordneter Typ
  └── Institutees: Consultant[]       ← Begleitete Berater (1n)
  └── MeetingInstance[]               ← Durchgeführte Meetings je Phase

MeetingInstance                       ← Ein konkreter Termin (z.B. "Briefing Call #1")
  └── PhaseTemplate                   ← Welche Phase des Assignments
  └── ConversationEntry[]             ← Zeitleiste: wer spricht wann
  └── Assessment[]                    ← Gesamtbewertung pro Institutee am Ende

ConversationEntry                     ← Ein zusammenhängender Sprecher-Beitrag (mehrzeilig) eines Institutees
  └── ConversationSkillScore[]        ← Kategorie-Schnellbewertung (während des Beitrags)
  └── lineTags[]                      ← Kriterium-Zuordnung einzelner Zeilen (nachträglich, per Zeilentext)

FeedbackDimension                     ← Übergeordnete Dimension für das Assignment-Feedback
  └── FeedbackCategory[]              ← Kategorie (z.B. "Kommunikationsfähigkeit")
    └── FeedbackCriterionItem[]       ← Einzelnes Kriterium (z.B. "To the point")

AssignmentFeedback                    ← Strukturiertes Abschluss-Feedback pro Institutee
  └── FeedbackCategoryRating[]        ← Bewertung je Kategorie
  └── FeedbackDimensionText[]         ← Freitext Achievements + Development Needs je Dimension

Meeting-Phasen

Jeder AssignmentTyp definiert einen geordneten Flow von PhaseTemplates. Die drei vordefinierten Typen haben folgende Phasen:

Phase Mit wem Wdh. Protokoll Bewertung Generisch Case Pitch
Pre-Briefing (Lead) Lead
Briefing (Kunde) Kunde
Alignment Call Kunde
Pre-Delivery (Lead) Lead
Delivery / Pitch Kunde
Feedback Call (Kunde) Kunde
Feedback Call (Lead) Lead

Wiederholbare Phasen (z.B. Alignment Calls) werden mit fortlaufendem phaseIndex und Dateinamen-Suffix -#2, -#3 etc. gekennzeichnet.


Bewertungssystem

Skala

Label Kürzel Farbe Numerischer Wert
N/A N/A grau 0
Not Client Ready Not rot 1
Partially Client Ready Partially orange 2
Nearly Client Ready Nearly hellgrün 3
Client Ready Fully dunkelgrün 4

N/A gilt als „nicht gesetzt" und wird aus allen Berechnungen ausgeschlossen.

Aggregationslogik

Gewichteter Durchschnitt über alle Kriterien mit weight-Faktor (konfigurierbar 0,02,0 in 0,1-Schritten — 0 blendet ein Kriterium komplett aus, z.B. für sprachliche Weichmacher/Füllwörter mit reduziertem Einfluss):

avg = Σ(score_i × weight_i) / Σ(weight_i)

Mapping auf Rating:

  • avg < 1.5 → Not
  • avg < 2.5 → Partially
  • avg < 3.5 → Nearly
  • avg ≥ 3.5 → Fully

Zwei Assessment-Ebenen

  1. Kategorie-Level (live, während Gesprächsbeitrag): ConversationSkillScore.criteriaIdFeedbackCategory.id
    Schnelle Bewertung während ein Institutee spricht. Optional, da im Hektik oft nicht machbar.

  2. Kriterium-Level (Gesamtbewertung am Ende des Meetings): Assessment.criteriaIdFeedbackCriterionItem.id
    Detaillierte Bewertung je Kriterium nach dem Meeting. Grundlage für die Kategorie-Farbkodierung im Gesamtbewertungs-Tab.

Verbindendes drittes Element: Kriterium-Zuordnung einzelner Protokollzeilen (ConversationEntry.lineTags). Der Lead schreibt während des Gesprächs einen zusammenhängenden, mehrzeiligen Beitrag pro Sprecher-Block; nachträglich (nicht während des Tippens, um den Schreibfluss nicht zu stören) kann jede einzelne Zeile über ein kleines Tag-Symbol direkt einem Kriterium zugeordnet werden. Diese Zuordnung ist die Grundlage für den Notation-Vorschlag (siehe unten) und fließt auch strukturiert in den KI-Prompt ein.


Bewertungs-Vorschläge

Die App leitet an zwei Stellen automatisch einen Bewertungs-Vorschlag ab — beide bleiben reine Vorschläge, die der Lead frei übernehmen oder überschreiben kann.

1. Notation-Vorschlag in der Gesamtbewertung (pro Meeting)

Die Schnellnotations-Symbole (siehe unten) entsprechen einer Bewertungsstufe: ! → Not, (!) → Partially, (+) → Nearly, + → Fully. Ist eine notierte Protokollzeile einem Kriterium zugeordnet (siehe oben), errechnet die App daraus einen Vorschlag für die Gesamtbewertung dieses Kriteriums ("Vorschlag aus Protokoll" mit Übernehmen-Button). Bei mehreren getaggten Zeilen zum selben Kriterium wird gemittelt. Jede Kategorie-Kopfzeile zeigt zusätzlich — auch zugeklappt — wie viele ihrer Kriterien einen offenen Vorschlag haben.

Füllwörter oder sprachliche Weichmacher ("ein bisschen") werden nicht automatisch erkannt, sondern über ein eigenes, niedrig gewichtetes Kriterium abgebildet, das ganz normal getaggt und notiert wird.

2. Zeitgewichteter Vorschlag über die Assignment-Laufzeit (/evaluation, Abschluss-Feedback)

Über mehrere Meetings hinweg gewichtet die App spätere Bewertungen stärker als frühere (Gewichtungsfaktor konfigurierbar unter Config → Gewichtung) und erkennt eine Verbesserung oder Verschlechterung eines Institutees über die Zeit. Der Vorschlag erscheint als Badge auf der Abschluss-Feedback-Seite, mit „Übernehmen" für den Bewertungswert und „Trend in Text übernehmen" für einen automatisch formulierten Hinweis auf die Entwicklung in Achievements/Development Needs.

Beide Vorschlags-Mechanismen greifen nicht in die manuell gepflegten Endergebnisse ein (Assessment.score, FeedbackCategoryRating) — sie liefern nur einen Ausgangspunkt.


Feedback-Struktur (Abschluss-Feedback)

Die Feedback-Struktur ist vollständig konfigurierbar und von der Meeting-Bewertungsstruktur getrennt. Sie spiegelt das Capgemini-Kompetenzmodell wider:

Dimension Kategorien (Beispiele)
Mindset, Commitment, Collaboration Persönliche Einstellung, Professionalität, Commitment, Kommunikationsfähigkeit, Zusammenarbeit
Running Our Projects Ergebnisverantwortung, Arbeitsstil, Kundenmanagement, Lieferzeiten
Growing our People Networking, Learning und Development
Functional & Technical Skills Qualität des Inhalts, Inhaltliche Vollständigkeit, Qualität der Unterlage, Prozesstreue
Innovation und Asset Development Innovation

Das Abschluss-Feedback (AssignmentFeedbackPage) erlaubt:

  • Manuelle Bewertung je Kategorie (N/A bis Fully)
  • KI-gestützten Textentwurf via OpenRouter API (GPT-4o, Claude, Gemini)
  • Manuell editierbare Textfelder „Achievements" und „Development Needs" je Dimension
  • Status-Toggle: Entwurf → Final

Protokoll-Notation

Im Gesprächsprotokoll unterstützt die App eine Schnellnotations-Syntax, die farbig gerendert wird:

Symbol Bedeutung Darstellung
+ Positiv grün
(+) Positiv mit Abstrichen grün (gedimmt)
! Negativ rot
(!) Negativ mit Abstrichen rot (gedimmt)
> Einwand / Kundeninput blau
[…] Slide-/Dokument-Referenz grau

Export-Funktionen

Meeting-Export

Format: {AssignmentNummer}_{Datum}_{PhasenLabel}{-#Nr}.{md|json}
Beispiel: CGI-2024-001_02-07-2026_Alignment Call-2.md

  • Markdown: Lesbare Dokumentation mit Protokoll, Bewertungen und Notizen — getaggte Protokollzeilen zeigen zusätzlich das zugeordnete Kriterium
  • JSON: Vollständige Datensicherung eines einzelnen Meetings, inklusive Zeilen-Tags

Datenbank-Backup

Vollständiger Export aller Tabellen als JSON-Datei. Import löscht alle Daten und stellt den gesicherten Stand wieder her. Backup sollte nach jedem Meeting erstellt werden.


Datenschutz und Datenhaltung

  • Alle Daten bleiben im lokalen Browser-IndexedDB (Dexie.js)
  • Kein Backend, kein Cloud-Sync
  • Personenbezogene Daten: Namen von Institutees, Kundennamen, Gesprächsnotizen
  • GDPR-relevant: Backup-Dateien müssen sicher (OneDrive, lokaler Ordner) aufbewahrt werden
  • Kein Public Cloud Storage erlaubt (explizite Anforderung)
  • Zukünftig geplant: SQLite WASM + OPFS für robustere lokale Speicherung ohne Installation