feat: Implement member inbox with read status and question functionality
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 53s

This commit is contained in:
Torsten Schulz (local)
2026-07-24 09:17:57 +02:00
parent 63a5db1196
commit e2e8ba0d54
9 changed files with 211 additions and 17 deletions

View File

@@ -84,6 +84,20 @@ Die Daten enthalten keine Zahlungsdaten. Bestehende Vereins- und
Mitgliedsdaten bleiben unverändert; die neuen Tabellen werden erst durch die
persönlichen Rückmeldungen bzw. Änderungsanfragen befüllt.
## 2026-07-24
### `club_communication_recipients.read_at`
Persönlicher Gelesen-Status für Nachrichten. Er wird ausschließlich für das
jeweilige Empfänger-Mitglied erfasst; die Kommunikationsverwaltung kann daraus
keine Kontakt- oder Zahlungsdaten ableiten.
```sql
ALTER TABLE club_communication_recipients
ADD COLUMN read_at DATETIME NULL AFTER delivered_at,
ADD INDEX club_communication_recipients_member_read (club_id, member_id, read_at);
```
## 2026-03-17
### `predefined_activities.exclude_from_stats`

View File

@@ -0,0 +1,46 @@
# Pilot-Checkliste: persönlicher Mitgliederbereich
## Ziel und Rahmen
Mit 35 echten Mitgliedern auf unterschiedlichen Geräten prüfen. Keine
Produktivdaten, Bankdaten oder Screenshots von Nachrichten an unbeteiligte
Personen weitergeben.
## Rollen- und Rechte-Smoke-Test
| Rolle | Erwartetes Ergebnis |
| --- | --- |
| Mitglied | Kann ausschließlich `/my-club` und eigene Daten, Termine, Nachrichten sowie Rückmeldungen nutzen. Kein Zugriff auf Finanzen, Archiv, Rollen, Mitgliederlisten oder fremde Nachrichten. |
| Trainer | Sieht die erlaubten Trainings-/Terminwerkzeuge und Rückmeldungen entsprechend den Rollenrechten; kein Zugriff auf Finanz- und Rollenverwaltung ohne zusätzliche Rechte. |
| Vorstand | Kann die Verwaltungsansichten, Profiländerungsanfragen und Kommunikationsvorgänge entsprechend seiner Rechte nutzen. |
Pro Rolle testen:
1. Login, Verein auswählen und Direktaufruf eines fremden/geschützten Pfads.
2. Eigenes Profil, Termin-Zusage/Absage und Nachrichteneingang öffnen.
3. Für ein Mitglied prüfen, dass die API keine fremde Nachricht oder Rückfrage
zurückgibt (abweichende `recipientId` ausprobieren).
## Mobile Hauptabläufe
Auf mindestens einem Gerät mit 360430 px Breite testen:
1. Erster Login: Onboarding verstehen und schließen.
2. Profiländerung einreichen.
3. Termin zu- oder absagen.
4. Nachricht öffnen, als gelesen markieren und Rückfrage senden.
5. Seite bei gedrosselter Verbindung neu laden: Lade-, Fehler- und
Wiederholen-Zustände müssen verständlich sein.
## Feedbackbogen
Für jede Person erfassen:
- Gerät/Browser und Verbindungsart.
- Konnte die Person Profil, Terminrückmeldung und Nachricht ohne Hilfe finden?
- Unklare Begriffe oder fehlende Informationen.
- Fehlermeldung, Zeitpunkt und reproduzierbarer Ablauf.
- Freigabe für breiteren Rollout: ja / nein / mit Nachbesserung.
Nach dem Pilot die Ergebnisse im Vereinsvorgang dokumentieren und nur dann die
letzte Phase-4-Checkbox im [Plan](./simple-user-plan.md) abhaken.

View File

@@ -44,23 +44,30 @@ Abnahme:
### Phase 3: Kommunikation und Informationen
- [ ] Persönlichen Nachrichteneingang bereitstellen.
- [ ] Vereinsankündigungen nach Datum sortiert anzeigen.
- [ ] Gelesen-/ungelesen-Status und einen klaren Rückfrageweg ergänzen.
- [ ] Datenschutz- und Sichtbarkeitsregeln für Nachrichten und Kontaktinformationen prüfen.
- [x] Persönlichen Nachrichteneingang bereitstellen.
- [x] Vereinsankündigungen nach Datum sortiert anzeigen.
- [x] Gelesen-/ungelesen-Status und einen klaren Rückfrageweg ergänzen.
- [x] Datenschutz- und Sichtbarkeitsregeln für Nachrichten und Kontaktinformationen prüfen.
Abnahme:
- [ ] Neue Vereinsinformationen sind ohne Verwaltungsmenüs auffindbar.
- [ ] Persönliche Nachrichten sind ausschließlich für den Empfänger sichtbar.
- [x] Neue Vereinsinformationen sind ohne Verwaltungsmenüs auffindbar.
- [x] Persönliche Nachrichten sind ausschließlich für den Empfänger sichtbar.
### Phase 4: Mobil, Qualität und Einführung
- [ ] Mobilansicht und langsame Verbindungen prüfen.
- [ ] Berechtigungstest mit Mitglied, Trainer und Vorstand durchführen.
- [ ] Onboarding für ersten Login, Profilprüfung und Rückmeldungen erstellen.
- [x] Onboarding für ersten Login, Profilprüfung und Rückmeldungen erstellen.
- [ ] Pilot mit wenigen echten Mitgliedern durchführen und Feedback auswerten.
Vorbereitet:
- Die persönliche Startseite stapelt ihre Inhalte auf kleinen Bildschirmen;
Lade-, Fehler- und Wiederholen-Zustände sind vorhanden.
- Eine konkrete [Pilot- und Rollen-Checkliste](./member-pilot-checklist.md)
dokumentiert die noch mit echten Konten und Geräten auszuführenden Prüfungen.
Abnahme:
- [ ] Die Testrollen sehen jeweils nur die vorgesehenen Daten und Aktionen.
@@ -74,10 +81,10 @@ Abnahme:
## Erste umsetzbare Tickets
1. [ ] Bestehende `member`-Berechtigungen und Navigation auditieren.
2. [ ] Datenvertrag und Wireframe für das persönliche Dashboard festlegen.
3. [ ] Dashboard mit Terminen und Nachrichten implementieren.
1. [x] Bestehende `member`-Berechtigungen und Navigation auditieren.
2. [x] Datenvertrag und Wireframe für das persönliche Dashboard festlegen.
3. [x] Dashboard mit Terminen und Nachrichten implementieren.
4. [x] Profil- und Kontaktdaten-Änderungsanfrage implementieren.
5. [x] Trainings- und Veranstaltungsrückmeldungen ergänzen.
6. [ ] Nachrichteneingang und Benachrichtigungsstatus ergänzen.
6. [x] Nachrichteneingang und Benachrichtigungsstatus ergänzen.
7. [ ] Rollen- und Mobile-Smoke-Test mit Pilotgruppe durchführen.