161 lines
6.7 KiB
Markdown
161 lines
6.7 KiB
Markdown
# 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
|