6.1 KiB
6.1 KiB
Projektstatus und offene Punkte — Assignment Monitor
Stand: 2026-07-02
Implementierungsstatus
✅ Vollständig implementiert
| Feature | Seite / Datei |
|---|---|
| Dashboard: Assignment-Liste | Dashboard.tsx |
| Assignment anlegen (Typ, Institutees, Phasen-Preview) | AssignmentCreate.tsx |
| Assignment nachbearbeiten (Nummer, Typ-Wechsel-Warnung, Institutee-Laufzeiten) | AssignmentEdit.tsx |
| Phasen-Flow-Ansicht pro Assignment | AssignmentDetail.tsx |
| Soft-Delete + Papierkorb für Meetings | AssignmentDetail.tsx |
| Bewertungs-Chips je Institutee + Kategorie in der Übersicht | AssignmentDetail.tsx |
| Live-Gesprächsprotokoll mit Sprecher-Zeitlinie | MeetingView.tsx |
| Schnellnotation (+, !, >, […]) mit farbigem Rendering | MeetingView.tsx, notationParser.tsx |
| Äh-Counter pro Institutee (live + nachträgliche Anpassung) | MeetingView.tsx |
| Gesamtbewertung auf Kriterium-Ebene (Accordion, farbige Kategorie-Header) | MeetingView.tsx |
| Auto-Calc Bewertung aus Protokoll-Kategorie-Scores | MeetingView.tsx |
| Allgemeine Notizen mit Auto-Resize + Notation-Rendering | MeetingView.tsx |
| Meeting-Export: Markdown + JSON, strukturierter Dateiname | meetingExport.ts |
| Assignment-Nummer im Dateinamen | MeetingView.tsx, AssignmentDetail.tsx |
| Strukturiertes Abschluss-Feedback pro Institutee | AssignmentFeedbackPage.tsx |
| KI-Feedback-Generierung via OpenRouter | AssignmentFeedbackPage.tsx |
| Feedback-Status: Entwurf → Final | AssignmentFeedbackPage.tsx |
| Feedback-Dimensionsstruktur CRUD mit Gewichtung ×1–×5 | FeedbackStructureConfig.tsx |
| AssignmentTyp CRUD mit Phasen-Templates | AssignmentTypeConfig.tsx |
| Kriterien-Auswahl je Typ (Baumstruktur, Indeterminate) | AssignmentTypeConfig.tsx |
| Kriterien-Filterung je Typ in Meetings + Übersicht | MeetingView.tsx, AssignmentDetail.tsx |
| Vollständiges DB-Backup (JSON Export/Import) | dbBackup.ts, Configuration.tsx |
| Berater/Gruppen-Verwaltung | Consultants.tsx |
| PWA (installierbar, Offline-fähig) | Vite-PWA-Plugin |
⚠️ Offene Punkte / Bugs
Priorität Hoch
| # | Beschreibung | Datei | Aufwand |
|---|---|---|---|
| H1 | IndexedDB-Robustheit: Browser kann IndexedDB unter Speicherdruck löschen. Migration zu SQLite WASM + OPFS geplant. Bis dahin: regelmäßige Backups als einzige Sicherheit. | db/index.ts |
L (Wochen) |
| H2 | Backup-Reminder fehlt: Es gibt keine automatische Erinnerung / keinen Hinweis nach abgeschlossenem Meeting, dass ein Backup erstellt werden sollte. | MeetingView.tsx |
S |
Priorität Mittel
| # | Beschreibung | Datei | Aufwand |
|---|---|---|---|
| M1 | Evaluation.tsx veraltet: Nutzt die Legacy-Category/Criterion-Tabellen, nicht die neue feedbackCriterionItems-Struktur. Zeigt falsche / keine Daten aus neuen Meetings. |
Evaluation.tsx |
M |
| M2 | AI-Prompt veraltet: AssignmentFeedbackPage liest db.criteria (alt) für Score-Zeilen. Sollte auf feedbackCriterionItems + assessments umgestellt werden. |
AssignmentFeedbackPage.tsx |
M |
| M3 | meetingExport.md veraltet: Kriterien-Scores werden über db.criteria aufgelöst, nicht feedbackCriterionItems. Kategorie-Namen fehlen im Export. |
meetingExport.ts |
S |
Priorität Niedrig
| # | Beschreibung | Datei | Aufwand |
|---|---|---|---|
| N1 | Dashboard: Zeigt keine Assignment-Nummer. Nur Titel + Kunde + Typ. | Dashboard.tsx |
XS |
| N2 | AssignmentCreate: Kein Feld für Assignment-Nummer. Muss nachträglich über Edit eingegeben werden. | AssignmentCreate.tsx |
XS |
| N3 | FeedbackStructureConfig: Toter Code — Funktionen für AssignmentType-CRUD wurden verschoben, Deklarationen blieben (assignmentTypes, phaseTemplates State + alle zugehörigen Handler). |
FeedbackStructureConfig.tsx |
XS |
| N4 | Evaluation-Route: Zeigt Scores als Dezimalzahlen /5 mit alter Skala statt neuer Rating-Labels. |
Evaluation.tsx |
S |
| N5 | AssignmentCreate: Erstellt keine instituteeEnrollments. Von/Bis-Daten können nur über Edit gepflegt werden. |
AssignmentCreate.tsx |
S |
| N6 | Meeting-Route: URL ist /assignment/:id/meeting/:meetingId — :id ist die Assignment-ID, aber die Assignment-Nummer (z.B. CGI-2024-001) ist nicht in der URL. Akzeptiert als nice-to-have. |
App.tsx |
M |
Geplante Erweiterungen (Roadmap)
SQLite WASM + OPFS (Datenbankevolution)
Ziel: Robuste lokale Datenhaltung ohne Installation, ohne Risiko durch Browser-Speicherdruck.
Technologie: SQLite compiled to WebAssembly, persistiert via Origin Private File System (OPFS).
Vorteil: Echte Datei auf Gerät, nicht löschbar wie IndexedDB. Kein Server nötig.
Status: Konzept beschlossen. Implementierung steht aus. Paralleles Backup-System ist die aktuelle Notlösung.
Evaluation neu (M1 oben)
Auswertungsseite auf neue Datenstruktur migrieren. Soll zeigen:
- Pro Institutee: aggregierte Kriterien-Scores über alle Meetings
- Trend über mehrere Assignments
- Vergleich zwischen Institutees
Dashboard-Verbesserungen (N1 oben)
- Assignment-Nummer anzeigen
- Filtern nach Status (aktiv/abgeschlossen)
- Sortierung nach Datum / Assignment-Nummer
Bekannte Datenkonsistenz-Risiken
| Risiko | Beschreibung | Mitigation |
|---|---|---|
criteriaIds auf AssignmentType |
Referenziert FeedbackCriterionItem.id. Wenn Kriterien gelöscht werden, bleiben verwaiste IDs in criteriaIds. Filter ignoriert fehlende IDs stillschweigend. |
Beim Löschen von Items: criteriaIds in allen AssignmentTypes bereinigen |
Assessment.criteriaId |
Referenziert FeedbackCriterionItem.id. Kein FK-Constraint in IndexedDB. |
Beim Löschen von Items: zugehörige Assessments löschen |
ConversationSkillScore.criteriaId |
Referenziert FeedbackCategory.id. Gleiche Gefahr. |
Beim Löschen von Kategorien: ConversationSkillScores bereinigen |
| Typ-Wechsel bei Assignment | Zeigt Warnung, löscht aber keine alten Meeting-Bewertungen. Bewertungen mit IDs aus dem alten Typ-Kriteriensatz bleiben erhalten, werden aber möglicherweise nicht mehr angezeigt. | Dokumentiertes Verhalten, absichtlich so gestaltet |