CG-Feedback-Monitor/docs/FACHLICHE_ARCHITEKTUR.md
2026-07-02 10:10:06 +02:00

161 lines
6.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 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