CG-Feedback-Monitor/docs/FACHLICHE_ARCHITEKTUR.md

161 lines
6.7 KiB
Markdown
Raw Normal View History

2026-07-02 10:10:06 +02:00
# 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 (1–n)
└── 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 Gesprächsbeitrag eines Institutees
└── ConversationSkillScore[] ← Kategorie-Schnellbewertung (während des Beitrags)
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 (×1–×5):
```
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.criteriaId` → `FeedbackCategory.id`
Schnelle Bewertung während ein Institutee spricht. Optional, da im Hektik oft nicht machbar.
2. **Kriterium-Level (Gesamtbewertung am Ende des Meetings):** `Assessment.criteriaId` → `FeedbackCriterionItem.id`
Detaillierte Bewertung je Kriterium nach dem Meeting. Grundlage für die Kategorie-Farbkodierung im Gesamtbewertungs-Tab.
---
## 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
- **JSON:** Vollständige Datensicherung eines einzelnen Meetings
### 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