CG-Feedback-Monitor/docs/SCALE_1_TO_10.md

101 lines
4.0 KiB
Markdown
Raw Normal View History

# Konzept: Bewertungsskala 1–10 (AssignmentMonitorV2)
Stand: 2026-08-06 · nur DEV (`AssigmentMonitorV2`), Produktiv unberührt.
## Festgezogene Entscheidungen
| # | Entscheidung |
|---|---|
| Skala | **1–10**, ganzzahlig; `null` = nicht gesetzt (kein N/A-String mehr) |
| Primäre Ebene | **Kategorie** — Meeting-Bewertung und Assignment-Feedback setzen den Score hier |
| Kriterien | Primär **Beobachtungen** (Tags, Notizen, Gewichtung); nicht die Pflicht-Bewertungsebene |
| Warum Kategorie direkt? | Nicht alle Kriterien sind in jedem Meeting beobachtbar → Score darf **nicht** nur aus Kriterien-Ø abgeleitet werden müssen |
| Notation | Führende Zahl `1`–`10` am Zeilenanfang; **keine** `+` / `!` / `(+)` / `(!)` mehr; `>` Zitat und `[…]` Abschnitte bleiben |
| Farben | 4 Bänder, **konfigurierbar** unter Config (Defaults unten) |
| Labels | Nur Zahlen, keine Ankertexte |
| Altdaten | Keine Migration; frische Dev-DB (`npm run db:reset` bei Bedarf) |
| Struktur | Noch nicht angelegt — parallel in Config pflegbar, kein Blocker für Skalen-Umbau |
| Typ-Strukturen | Prio 2 (später) |
| Schnelle Zuordnung | `lineTags` / Tag-Picker / Vorschläge bleiben |
### Default-Farbbänder
Überlappung an der 5 in der Erstidee bereinigt:
| Score | Farbe |
|---|---|
| 1–2 | rot |
| 3–5 | orange |
| 6–8 | hellgrün |
| 9–10 | dunkelgrün |
Speicherung in `appSettings.ratingColorBands` (JSON), editierbar in einem neuen Config-Bereich „Skala / Farben“.
---
## Zielmodell (Daten)
```text
Beobachtung (Kriterium)
lineTags / generalNoteTags / Assessment.note
optionale Notations-Zahl auf der Zeile → Vorschlag / Detail
Meeting-Bewertung (Pflicht-Skala)
NEU bzw. klar: Score 1–10 pro Kategorie × Institutee × Meeting
direkt setzbar, unabhängig davon ob alle Kriterien getaggt sind
Assignment-Feedback
FeedbackCategoryRating.rating → 1–10
Vorschlag aus zeitgewichteten Meeting-Kategorie-Scores
Checkliste
ChecklistResponse.rating → 1–10 (gleiche Skala/Farben)
```
### Speicherung Meeting-Kategorie-Score
Neue Tabelle `meetingCategoryRatings`:
- `meetingInstanceId`, `instituteeId`, `categoryId`, `score` (INTEGER nullable 1–10), optional `note`
Bestehende `ConversationSkillScore` (Schnellscore am Protokoll-Eintrag) ebenfalls auf 1–10 umstellen — bleibt optionaler Feinschliff während des Tippens, ersetzt aber nicht die Meeting-Gesamtbewertung pro Kategorie.
`Assessment.score` (pro Kriterium): optional `number | null` für Detail/KI; UI der Gesamtbewertung fokussiert auf **Kategorien**. Kriterien darunter zeigen Beobachtungen + optionalen Detail-Score.
---
## Umsetzungsphasen
### Phase 1 — Skalen-Kern ✅ (2026-08-06)
- Types: `RatingScore` 1–10, `null` = unset; `meetingCategoryRatings`; `ratingColorBands`
- `constants.ts`: Bänder, `resolveScoreStyle`, `ScorePicker`
- Config-Tab „Skala“
- `ratingTrend` / Notation (führende Zahl) / Meeting-/Feedback-/Export-UI umgestellt
- Hard-Delete räumt `meetingCategoryRatings` + `checklistResponses` auf
### Phase 2 — Meeting-UI Feinschliff
- Notation-Schnellbuttons weiter verfeinern; Farbbänder live aus Config laden (nicht nur Defaults)
- Detail/History-Chips primär aus `meetingCategoryRatings`
### Phase 3 — Feedback & Auswertung
- Trend/Vorschlag konsequent aus Meeting-Kategorie-Scores
- **Neukonzeption Benefits/Concerns + KI-Kaskade:** siehe `docs/FEEDBACK_CASCADE_PLAN.md`
### Phase 4 — Export & KI
- Persistierte Dimension-Prompts auf neue Skalen-Sprache zurücksetzen/syncen
- Kategorie-Benefits/Concerns im PDF (Teil von `FEEDBACK_CASCADE_PLAN.md` Paket 5)
### Phase 5 — UX-Feinschliff
- Slider/Stepper, mobile Hit-Areas; Schreibfluss schützen
### Phase 6 (Prio 2) — Struktur je Assignment-Typ
- Sichtbarkeit Dimension/Kategorie pro Typ — **umgesetzt als Paket 1b** (`resolveVisibleStructure`, Config → Ass.-Typen → Struktur)
---
## Nicht-Ziele (jetzt)
- Produktiv-Migration / Mapping alter Enum-Werte
- Ankertexte auf der Skala
- Getrennte Taxonomien pro Assignment-Typ (erst Prio 2)