Plan Querschnitt-Pakete P3-P5 und Infrastruktur-Entscheidungen

- Feature Map: Regelwerk, Kanten-System, Paket-Canvas-Verknuepfungen, MD-Links
- Infrastruktur & Navigation: Sidebar-Abgleich, Einstellungen-Modell, Mobile, Gating
- WF-P3 Benachrichtigungen + Audit Log (validiert)
- WF-P4 Aufgaben (inkl. Topbar-Drawer-Delta) + Dateien (inkl. Teilen v1, CR an Dev)
- WF-P5 Integrationen (Sync-Verlauf als eigene Seiten)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
davidandClaude Fable 5 committed 2026-07-08 20:47:46 +02:00
1 parent 1363933387
commit e48a5a46e8
38 files changed
+3147 -732

No files matched your search

@@ -0,0 +1,61 @@
---
kind: screen
project: HiveGrid Screen Project
ticket: D-P3
package: WF-P3 Audit Log
id: M01
screen: Detail-Drawer
typ: Drawer
umsetzung: Bauen
status: Validiert
route: "aus S01, Zeile oeffnen"
subframe: ""
---
# M01 — Detail-Drawer
## Ziel
Einen Eintrag im Detail verstehen: was genau hat sich geändert?
## Pattern / Archetyp
Drawer (A2/A3-Baustein) über der Protokoll-Tabelle.
## Daten
- Kopf: Klartext-Satz, Actor mit Art-Marker, Zeit, Subjekt (verlinkt)
- **Feld-für-Feld-Vergleich**: hinzugefügt / geändert / entfernt farblich unterschieden, Vorher → Nachher
- Struktur-Vergleich für komplexe Felder (JSON aufgeklappt)
- Maskierungs-Hinweis bei sensiblen Werten
## Aktionen
- „Verlauf dieses Objekts" → [[M03 Objekt-Verlauf-Drawer]] (gefiltert auf das Subjekt)
- „Ähnliche Einträge" → setzt Quick-Filter in S01
- Subjekt öffnen (Sprung zur Detailseite)
## Meldungsentscheidung
| Ereignis | UI-Form | Blockiert? | Umsetzung | Copy/Notiz |
|---|---|---|---|---|
| Sensibler Wert | Inline im Diff | nein | Nur dokumentieren | „Aus Datenschutzgründen nur ‚Wert geändert'" |
## Zustände
| Zustand | Beschreibung | Umsetzung |
|---|---|---|
| Laden | Skeleton (A7) | Wiederverwenden |
| Fehler | A7-Fehlerzustand | Wiederverwenden |
## Permissions / Gates
Wie S01.
## Subframe
- (erst nach explizitem OK)
## Notizen
- Beim Bau echte Drawer-Struktur verwenden (kein Fake-Overlay) — Regel aus AI README.
@@ -0,0 +1,59 @@
---
kind: screen
project: HiveGrid Screen Project
ticket: D-P3
package: WF-P3 Audit Log
id: M02
screen: Export anlegen
typ: Modal
umsetzung: Bauen
status: Validiert
route: "aus S01/S02, Exportieren-Knopf"
subframe: ""
---
# M02 — Export anlegen
## Ziel
Protokoll-Auszug als Datei anfordern — mit dokumentiertem Zweck (Compliance).
## Pattern / Archetyp
A5 Dialog (echtes Modal: DialogLayout → Dialog → Dialog.Content).
## Daten
- Format-Wahl: CSV / NDJSON
- **Zweck (Pflicht-Textfeld)** — z. B. „Anfrage Steuerberater"
- Zusammenfassung der übernommenen Filter (Zeitraum, Mitarbeiter, Bereich …) mit „Filter ändern"-Hinweis (führt zurück zu S01)
## Aktionen
- „Export anlegen" → Job wird erstellt, Wechsel zum Reiter [[S02 Exporte]] + Toast
- Abbrechen
## Meldungsentscheidung
| Ereignis | UI-Form | Blockiert? | Umsetzung | Copy/Notiz |
|---|---|---|---|---|
| Zweck leer | Inline-Validierung | ja (Feld) | Nur dokumentieren | „Bitte Zweck angeben — wird protokolliert" |
## Zustände
| Zustand | Beschreibung | Umsetzung |
|---|---|---|
| Anlegen läuft | Button-Spinner | Wiederverwenden |
| Fehler | Toast mit Klartext | Wiederverwenden |
## Permissions / Gates
Wie S01.
## Subframe
- (erst nach explizitem OK)
## Notizen
- Der Zweck erscheint später in der Job-Liste (S02) und ist selbst audit-geloggt.
@@ -0,0 +1,60 @@
---
kind: screen
project: HiveGrid Screen Project
ticket: D-P3
package: WF-P3 Audit Log
id: M03
screen: Objekt-Verlauf-Drawer
typ: Drawer (wiederverwendbar)
umsetzung: Bauen
status: Validiert
route: "in jeder Detailseite (Kontakt, Projekt, ...)"
subframe: ""
---
# M03 — Objekt-Verlauf-Drawer
## Ziel
Direkt an einem Datensatz sehen: „Was ist mit diesem Objekt passiert?" — ohne ins Admin-Protokoll zu wechseln. **Wiederverwendbares Muster für alle Detailseiten.**
## Pattern / Archetyp
Drawer mit kompakter A2-Liste, gefiltert auf das aktuelle Objekt.
## Daten
- Kompakte Einträge: Zeit · Actor mit Art-Marker · Klartext-Satz
- Kopf: Objekt-Name + Typ
## Aktionen
- Eintrag öffnen → [[M01 Detail-Drawer]] (Vorher/Nachher)
- „Im Protokoll öffnen" → [[S01 Protokoll-Ansicht]] mit gesetztem Objekt-Filter
## Meldungsentscheidung
| Ereignis | UI-Form | Blockiert? | Umsetzung | Copy/Notiz |
|---|---|---|---|---|
| — | — | — | — | — |
## Zustände
| Zustand | Beschreibung | Umsetzung |
|---|---|---|
| Leer | „Noch keine Änderungen protokolliert" | Nur dokumentieren |
| Laden | Skeleton (A7) | Wiederverwenden |
| Fehler | A7-Fehlerzustand | Wiederverwenden |
## Permissions / Gates
Nur sichtbar mit `audit.read` — ohne Recht wird der Einstiegs-Knopf auf der Detailseite gar nicht angezeigt.
## Subframe
- (erst nach explizitem OK)
## Notizen
- Einstieg auf Detailseiten: kleiner „Verlauf"-Knopf (genaue Platzierung entscheidet das jeweilige Feature-Paket, z. B. D-CRM Kontakt-Detail).
- Offen: teilt sich mit M01 eine Drawer-Komponente? → Subframe-Bau.
@@ -0,0 +1,64 @@
---
kind: screen
project: HiveGrid Screen Project
ticket: D-P3
package: WF-P3 Audit Log
id: S01
screen: Protokoll-Ansicht
typ: Admin Liste
umsetzung: Bauen
status: Validiert
route: "/admin/audit"
subframe: ""
---
# S01 — Protokoll-Ansicht
## Ziel
Auf einen Blick nachvollziehen, wer wann was geändert hat — in verständlichen deutschen Sätzen.
## Pattern / Archetyp
A2 Liste (server-paginiert) mit Filter-Leiste und Reitern „Protokoll" / „Exporte" ([[S02 Exporte]]).
## Daten
- Tabelle, neueste zuerst: Zeit · Mitarbeiter/Actor mit **Art-Marker** (Mensch / Automation / MCP-Agent / Admin, visuell unterscheidbar) · Bereich (Modul) · Änderungs-Art (erstellt/geändert/gelöscht …) · Subjekt (verlinkt) · **deutscher Klartext-Satz**
- Filter-Leiste: Zeitraum (Presets, Default 30 Tage, max. 24 Monate), Mitarbeiter, Bereich (z. B. Aufgaben, Kontakte, Projekte), Änderungs-Art, Subjekt-Typ
- Sortierbare Spalten (Zeit, Mitarbeiter, Bereich)
- Quick-Filter: Klick auf einen Tabellenwert (Mitarbeiter, Subjekt, Aktion) setzt den Filter
## Aktionen
- Zeile öffnen → [[M01 Detail-Drawer]]
- „Exportieren" → [[M02 Export anlegen]] (übernimmt aktuelle Filter)
- Reiter-Wechsel zu [[S02 Exporte]]
- Filter zurücksetzen
## Meldungsentscheidung
| Ereignis | UI-Form | Blockiert? | Umsetzung | Copy/Notiz |
|---|---|---|---|---|
| Zeitraum > 24 Monate | Inline am Filter | nein | Nur dokumentieren | „Ältere Einträge nur per Export" |
## Zustände
| Zustand | Beschreibung | Umsetzung |
|---|---|---|
| Leer | „Keine Einträge für diese Filter" + Zurücksetzen-Knopf | Nur dokumentieren |
| Laden | Skeleton-Tabelle (A7) | Wiederverwenden |
| Fehler | A7-Fehlerzustand | Wiederverwenden |
| Keine Berechtigung | A7 „kein Zugriff" (Recht `audit.read`) | Wiederverwenden |
## Permissions / Gates
Nur mit `audit.read` (Admin-Bereich). Filter laufen server-seitig.
## Subframe
- (erst nach explizitem OK)
## Notizen
- Klartext-Satz-Formulierungen liefert Dev (Fehler-/Text-Katalog); UI reserviert dafür die Hauptspalte.
@@ -0,0 +1,59 @@
---
kind: screen
project: HiveGrid Screen Project
ticket: D-P3
package: WF-P3 Audit Log
id: S02
screen: Exporte
typ: Admin Liste (Reiter)
umsetzung: Bauen
status: Validiert
route: "/admin/audit (Reiter Exporte)"
subframe: ""
---
# S02 — Exporte
## Ziel
Angeforderte Protokoll-Exporte im Blick: Status sehen, fertige herunterladen.
## Pattern / Archetyp
A2 Liste als zweiter Reiter der Protokoll-Ansicht ([[S01 Protokoll-Ansicht]]).
## Daten
- Job-Liste: angelegt am · von wem · Zweck (Pflichttext aus der Anlage) · Format (CSV/NDJSON) · Filter-Zusammenfassung (Zeitraum, Bereich …) · Status-Badge (in Arbeit / fertig / fehlgeschlagen) · Download-Link (wenn fertig)
## Aktionen
- Download (fertiger Job)
- „Erneut versuchen" (fehlgeschlagener Job)
- „Exportieren" → [[M02 Export anlegen]]
## Meldungsentscheidung
| Ereignis | UI-Form | Blockiert? | Umsetzung | Copy/Notiz |
|---|---|---|---|---|
| Export fehlgeschlagen | Status-Badge + Aktion | nein | Nur dokumentieren | Klartext-Grund + „erneut versuchen" |
## Zustände
| Zustand | Beschreibung | Umsetzung |
|---|---|---|
| Leer | „Noch keine Exporte" + Exportieren-Knopf | Nur dokumentieren |
| Laden | Skeleton (A7) | Wiederverwenden |
| Fehler | A7-Fehlerzustand | Wiederverwenden |
## Permissions / Gates
Wie S01 (`audit.read`).
## Subframe
- (erst nach explizitem OK)
## Notizen
- Nach Anlage in M02 wechselt die Ansicht hierher + Toast „Export angelegt".
@@ -0,0 +1,161 @@
{
"nodes": [
{
"id": "group-main",
"type": "group",
"x": -80,
"y": -100,
"width": 1875,
"height": 420,
"label": "Hauptflow (ein Screen, zwei Reiter)"
},
{
"id": "group-drawer",
"type": "group",
"x": -80,
"y": 460,
"width": 1875,
"height": 420,
"label": "Drawer und Modals"
},
{
"id": "group-notes",
"type": "group",
"x": 1935,
"y": -100,
"width": 460,
"height": 980,
"label": "Regeln"
},
{
"id": "note-entry",
"type": "text",
"text": "# Einstieg\n\nVerwaltung → Aktivitäts-Protokoll (`/admin/audit`).\n\nNur mit Recht `audit.read` sichtbar.",
"x": 0,
"y": 0,
"width": 360,
"height": 200
},
{
"id": "s01",
"type": "file",
"file": "02 Wireframes/P3 Querschnitt/WF-P3 Audit Log/Screens/S01 Protokoll-Ansicht.md",
"x": 595,
"y": 0,
"width": 420,
"height": 200
},
{
"id": "s02",
"type": "file",
"file": "02 Wireframes/P3 Querschnitt/WF-P3 Audit Log/Screens/S02 Exporte.md",
"x": 1275,
"y": 0,
"width": 420,
"height": 200
},
{
"id": "m01",
"type": "file",
"file": "02 Wireframes/P3 Querschnitt/WF-P3 Audit Log/Screens/M01 Detail-Drawer.md",
"x": 0,
"y": 560,
"width": 420,
"height": 200
},
{
"id": "m03",
"type": "file",
"file": "02 Wireframes/P3 Querschnitt/WF-P3 Audit Log/Screens/M03 Objekt-Verlauf-Drawer.md",
"x": 655,
"y": 560,
"width": 420,
"height": 200
},
{
"id": "m02",
"type": "file",
"file": "02 Wireframes/P3 Querschnitt/WF-P3 Audit Log/Screens/M02 Export anlegen.md",
"x": 1275,
"y": 560,
"width": 420,
"height": 200
},
{
"id": "note-mask",
"type": "text",
"text": "# Regeln (nur Doku)\n\n- Sensible Werte im Diff: nur „Wert geändert\"\n- Zeitraum max. 24 Monate — ältere nur per Export\n- Sortierung/Filter: Mitarbeiter, Zeitraum, Bereich, Änderungs-Art (validiert)\n- Actor-Marker: Mensch / Automation / MCP-Agent / Admin\n- M03 ist das wiederverwendbare „Verlauf\"-Muster für alle Detailseiten (Einstieg je Feature-Paket)",
"x": 1975,
"y": 0,
"width": 380,
"height": 560
},
{
"id": "md-paket",
"type": "file",
"file": "02 Wireframes/P3 Querschnitt/WF-P3 Audit Log/WF-P3 Audit Log.md",
"x": -80,
"y": -440,
"width": 460,
"height": 280
}
],
"edges": [
{
"id": "e-entry",
"fromNode": "note-entry",
"fromSide": "right",
"toNode": "s01",
"toSide": "left",
"toEnd": "arrow"
},
{
"id": "e-tab",
"fromNode": "s01",
"fromSide": "right",
"toNode": "s02",
"toSide": "left",
"toEnd": "arrow",
"label": "Reiter Exporte"
},
{
"id": "e-row",
"fromNode": "s01",
"fromSide": "bottom",
"toNode": "m01",
"toSide": "top",
"toEnd": "arrow",
"label": "Zeile öffnen"
},
{
"id": "e-verlauf",
"fromNode": "m01",
"fromSide": "right",
"toNode": "m03",
"toSide": "left",
"toEnd": "arrow",
"label": "Verlauf dieses Objekts"
},
{
"id": "e-export",
"fromNode": "s02",
"fromSide": "bottom",
"toNode": "m02",
"toSide": "top",
"toEnd": "arrow",
"label": "Export anlegen"
},
{
"id": "e-job",
"fromNode": "m02",
"fromSide": "right",
"toNode": "s02",
"toSide": "right",
"toEnd": "arrow",
"label": "Job angelegt",
"styleAttributes": {
"path": "long-dashed"
}
}
]
}
@@ -0,0 +1,131 @@
---
kind: wireframe-package
project: HiveGrid Screen Project
ticket: D-P3
package: WF-P3 Audit Log
typ: Flow
status: Validiert
subframe: ""
canvas: "WF-P3 Audit Log.canvas"
---
# WF-P3 Audit Log
Status: Validiert (Screen-Liste)
Subframe-Link: -
Canvas: [Canvas](<WF-P3 Audit Log.canvas>)
Stand: 2026-07-08
---
## 1. Kurzfassung
Das Aktivitäts-Protokoll: „Wer hat wann was getan" als deutscher Klartext-Satz, mit Vorher/Nachher-Vergleich, Export mit Zweck-Pflichtangabe und einem wiederverwendbaren „Verlauf dieses Objekts"-Drawer für alle Detailseiten. Der Protokoll-Dienst existiert schon (Dev P1) — wir bauen die Bedienung.
---
## 2. Intent Check
| Frage | Antwort |
|---|---|
| Welches Ticket/Modul ist betroffen? | D-P3 (Teil Audit), Dev-Pendant AK-P3 |
| Was soll der Nutzer am Ende schaffen? | Nachvollziehen, wer was geändert hat; bei Bedarf belegen (Export); Verlauf direkt am Objekt sehen |
| Flow, Screen, Zustand oder Doku? | Ein Screen mit zwei Reitern + drei Drawer/Modals |
| Welche Planning-Quellen wurden geprüft? | `ticket-docs/D-P3.md`, SCREEN-MAP §2, HiveGrid Map |
| Was ist sicher im Scope? | Protokoll-Tabelle, Filter/Sortierung, Diff-Drawer, Export mit Zweck, Objekt-Verlauf-Drawer |
| Was ist sicher nicht im Scope? | Aufbewahrungs-Editor, Legal Hold, gespeicherte Ansichten (v2) |
| Admin/Normalrolle-Unterschiede? | Nur mit Recht `audit.read` sichtbar (Admin-Bereich) |
| Unsichere Annahmen? | Ob Diff-Drawer und Objekt-Verlauf-Drawer eine gemeinsame Komponente teilen — Subframe-Bau zeigt es |
---
## 3. Scope
| Punkt | Inhalt |
|---|---|
| Ticket/Modul | D-P3 · Audit |
| Nutzerrolle | Admin (Maximalansicht, Recht `audit.read`) |
| Startpunkt | Einstellungen/Verwaltung → Aktivitäts-Protokoll (`/admin/audit`) |
| Ziel | Eintrag gefunden, verstanden (Diff), ggf. exportiert |
| Haupt-Archetyp | A2 Liste + Drawer · A5 Modal |
| Bespoke-Anteil | Keiner — Baukasten-Compose; Diff-Ansicht ist die aufwendigste Einzelkomponente |
| Out of scope | Retention-Editor, Legal-Hold, Saved-Views (v2) |
---
## 4. Entscheidungen (validiert 2026-07-08)
| Entscheidung | Status | Notiz |
|---|---|---|
| Export-Übersicht als Reiter im Protokoll-Screen (Option B) | genommen | Reiter „Protokoll" / „Exporte" — alles an einem Ort |
| Sortier-/Filterbarkeit: nach Mitarbeiter, Zeitraum, Bereich (Modul, z. B. Aufgaben), Änderungs-Art | genommen | Davids Ergänzung; dazu Quick-Filter per Klick auf Tabellenwerte |
| Actor-Marker: Mensch / Automation / MCP-Agent / Admin | genommen | Pivot AD-26 („KI" → „MCP/Agent"), passt zur Sidebar-Entscheidung |
| Detail als Drawer (nicht eigene Seite) | genommen | Feld-für-Feld Vorher/Nachher, farbig |
| Export-Anlage als Modal mit Zweck-Pflichtfeld | genommen | übernimmt die aktuell gesetzten Filter |
| „Verlauf dieses Objekts" als eigener wiederverwendbarer Drawer | genommen | wird das Muster für alle Detailseiten (Kontakt, Projekt, …) |
### Happy Path
1. Admin öffnet Aktivitäts-Protokoll → Tabelle mit Klartext-Sätzen, Default letzte 30 Tage.
2. Filtern/Sortieren (Mitarbeiter, Zeitraum, Bereich, Änderungs-Art) oder Klick auf einen Tabellenwert als Schnellfilter.
3. Zeile öffnen → Detail-Drawer mit Vorher/Nachher; von dort „Verlauf dieses Objekts" oder „Ähnliche Einträge".
4. Bei Bedarf „Exportieren" → Modal (Format + Zweck-Pflicht) → Job erscheint im Reiter „Exporte" → Download, wenn fertig.
### Meldungs-/Error-States (validiert)
| Ereignis | UI-Form | Blockiert? | Bauen? | Copy/Notiz |
|---|---|---|---|---|
| Kein Recht `audit.read` | A7-Zustand „kein Zugriff" | ja | Wiederverwenden | Baukasten-Zustand |
| Export fehlgeschlagen | Status-Badge rot + „erneut versuchen" | nein | Nur dokumentieren | in der Job-Liste |
| Sensibler Wert maskiert | Inline-Hinweis im Diff | nein | Nur dokumentieren | „Aus Datenschutzgründen nur ‚Wert geändert'" |
| Zeitraum > 24 Monate | Inline am Filter | nein | Nur dokumentieren | „Ältere Einträge nur per Export" |
| Leere Liste (Filter zu eng) | Leer-Zustand | nein | Nur dokumentieren | „Keine Einträge für diese Filter" + Filter zurücksetzen |
---
## 7. Validierte Screen-Liste
| ID | Screen/Zustand | Typ | Umsetzung | Ort | Status |
|---|---|---|---|---|---|
| S01 | Protokoll-Ansicht (Reiter „Protokoll") | Screen | Bauen | `/admin/audit` | Validiert |
| S02 | Exporte (Reiter im selben Screen) | Screen/Tab | Bauen | `/admin/audit`, Reiter | Validiert |
| M01 | Detail-Drawer (Vorher/Nachher) | Drawer | Bauen | aus S01 | Validiert |
| M02 | Export anlegen | Modal | Bauen | aus S01/S02 | Validiert |
| M03 | Objekt-Verlauf-Drawer (wiederverwendbar) | Drawer | Bauen | in jeder Detailseite | Validiert |
| D01 | Maskierungs-Hinweis | Inline | Nur dokumentieren | in M01 | Validiert |
| D02 | 24-Monate-Hinweis | Inline | Nur dokumentieren | Filter in S01 | Validiert |
---
## 8. Grid
```text
Verwaltung -> S01 <-> S02 (Reiter)
S01 -> M01 (Zeile oeffnen) -> M03 (Verlauf dieses Objekts)
S01/S02 -> M02 (Export anlegen) -> S02 (Job angelegt)
Detailseiten (Kontakt, Projekt, ...) -> M03
```
---
## 9. Screen-Pakete
- [[S01 Protokoll-Ansicht]]
- [[S02 Exporte]]
- [[M01 Detail-Drawer]]
- [[M02 Export anlegen]]
- [[M03 Objekt-Verlauf-Drawer]]
---
## 10. Offene Fragen
- Teilen M01 (Diff) und M03 (Objekt-Verlauf) eine Drawer-Komponente? → beim Subframe-Bau klären
- Klartext-Sätze: genaue Formulierungs-Muster („Max hat … geändert") kommen von Dev (M002/i18n) — UI zeigt nur den Satz
## Handoff-Check
- [x] Jeder Screen ist mit Umsetzung markiert.
- [x] Meldungs-/Error-State-Matrix ist ausgefüllt.
- [x] Banner/Inline-Meldungen sind dokumentiert.
- [ ] Subframe-Link ist eingetragen. *(Subframe erst nach explizitem OK)*
@@ -0,0 +1,69 @@
---
kind: screen
project: HiveGrid Screen Project
ticket: D-P3
package: WF-P3 Benachrichtigungen
id: S01
screen: Glocken-Drawer
typ: Drawer
umsetzung: Bauen
status: Validiert
route: "Topbar, global"
subframe: ""
---
# S01 — Glocken-Drawer
## Ziel
Schneller Blick auf Neues, ohne den aktuellen Kontext zu verlassen. Wird das Muster für alle künftigen Topbar-Drawer.
## Pattern / Archetyp
A2 Liste als Drawer/Panel, öffnet aus der Glocke in der Topbar (App-Gerüst D0 liefert Glocke + Badge).
## Daten
- Einträge, neueste zuerst: Typ-Icon je Quelle (Aufgabe, E-Mail, Antrag, Erwähnung, System …), Titel, kurzer Body, Actor, Zeit (relativ), Ungelesen-Punkt, Prioritäts-Marker
- Tabs: Alle / Ungelesen
- Zähler kommt aus der Topbar-Glocke (D0)
## Aktionen
- Klick auf Eintrag → typ-abhängiger Sprung zur Sache (neue Aufgabe → Aufgabe öffnen usw.); Eintrag wird dabei gelesen
- Einzelnen Eintrag wegklicken (X), wenn erledigt
- „Alle als gelesen"
- Aktualisieren-Knopf
- „Alle anzeigen" → [[S02 Benachrichtigungen Seite]]
## Banner / Hinweise
- Bounce-Banner: „E-Mails an dich kommen aktuell nicht an." + Prüf-Knopf (nur wenn E-Mail-Zustellung pausiert)
## Meldungsentscheidung
| Ereignis | UI-Form | Blockiert? | Umsetzung | Copy/Notiz |
|---|---|---|---|---|
| Bounce (E-Mail-Zustellung pausiert) | Banner | nein | Nur dokumentieren | s. oben |
| Live-Verbindung weg | Inline | nein | Nur dokumentieren | „Aktualisiert sich gerade nicht — neu laden." |
## Zustände
| Zustand | Beschreibung | Umsetzung |
|---|---|---|
| Leer | „Keine Benachrichtigungen — du bist auf dem Stand." | Nur dokumentieren |
| Laden | Skeleton-Zeilen (A7) | Wiederverwenden |
| Fehler | A7-Fehlerzustand mit Lösungs-Knopf | Wiederverwenden |
## Permissions / Gates
Keine — jeder sieht nur die eigenen Benachrichtigungen.
## Subframe
- (erst nach explizitem OK)
## Notizen
- Offen: Zahnrad im Drawer-Kopf als Direkteinstieg zu S03?
- Offen (Dev): Wegklicken = löschen oder archivieren?
@@ -0,0 +1,67 @@
---
kind: screen
project: HiveGrid Screen Project
ticket: D-P3
package: WF-P3 Benachrichtigungen
id: S02
screen: Benachrichtigungen Seite
typ: Liste
umsetzung: Bauen
status: Validiert
route: "/notifications"
subframe: ""
---
# S02 — Benachrichtigungen Seite
## Ziel
Der Drawer in groß: alle Meldungen durchsehen, in Ruhe aufräumen.
## Pattern / Archetyp
A2 Liste (volle Seite in der App-Shell), gleiche Einträge wie S01.
## Daten
- Gleiche Eintrags-Struktur wie [[S01 Glocken-Drawer]] (Typ-Icon, Titel, Body, Actor, Zeit, Read-Status, Prioritäts-Marker)
- Tabs: Alle / Ungelesen
## Aktionen
- Klick → typ-abhängiger Sprung zur Sache
- Einzeln als gelesen/ungelesen markieren
- Einzeln wegklicken
- Bulk-Aufräumen („alle als gelesen" / Auswahl entfernen)
- Aktualisieren
## Banner / Hinweise
- Bounce-Banner wie in S01
## Meldungsentscheidung
| Ereignis | UI-Form | Blockiert? | Umsetzung | Copy/Notiz |
|---|---|---|---|---|
| Bounce | Banner | nein | Nur dokumentieren | wie S01 |
| Live-Verbindung weg | Inline | nein | Nur dokumentieren | wie S01 |
## Zustände
| Zustand | Beschreibung | Umsetzung |
|---|---|---|
| Leer | „Keine Benachrichtigungen — du bist auf dem Stand." | Nur dokumentieren |
| Laden | Skeleton (A7) | Wiederverwenden |
| Fehler | A7-Fehlerzustand | Wiederverwenden |
## Permissions / Gates
Keine — nur eigene Benachrichtigungen.
## Subframe
- (erst nach explizitem OK)
## Notizen
- Erreichbar über „Alle anzeigen" im Drawer; ob es zusätzlich einen Sidebar-Punkt braucht: nein (bewusst nur über Glocke).
@@ -0,0 +1,64 @@
---
kind: screen
project: HiveGrid Screen Project
ticket: D-P3
package: WF-P3 Benachrichtigungen
id: S03
screen: Benachrichtigungen Einstellungen
typ: Settings
umsetzung: Bauen
status: Validiert
route: "/settings/notifications"
subframe: ""
---
# S03 — Benachrichtigungen Einstellungen
## Ziel
Selbst steuern, worüber man wie informiert wird — pro Ereignis-Typ.
## Pattern / Archetyp
A6 Settings-Seite unter Einstellungen → Persönlich → Benachrichtigungen (P2-Settings-Muster mit Seitennavigation).
## Daten
- Ereignis-Typen **nach Modul gruppiert** (z. B. Aufgaben, Leads, Projekte, Chat, HR …)
- Je Zeile: Name + Kurzbeschreibung des Ereignisses, Toggle **In-App**, Toggle **E-Mail**, Prioritäts-Selektor (ab welcher Wichtigkeit)
- Oben: **Master-Schalter „alle E-Mails aus"** mit Klartext: „Gilt auch für Ereignis-Typen, die später dazukommen."
## Aktionen
- Toggles je Zeile (speichern sofort, Toast als Bestätigung)
- Master-Schalter (graut E-Mail-Spalte aus)
## Banner / Hinweise
- Bei aktivem Bounce: Hinweis „E-Mails an dich kommen aktuell nicht an" auch hier sichtbar
## Meldungsentscheidung
| Ereignis | UI-Form | Blockiert? | Umsetzung | Copy/Notiz |
|---|---|---|---|---|
| Speichern fehlgeschlagen | Toast | nein | Wiederverwenden | Klartext + erneut versuchen |
## Zustände
| Zustand | Beschreibung | Umsetzung |
|---|---|---|
| Laden | Skeleton (A7) | Wiederverwenden |
| Fehler | A7-Fehlerzustand | Wiederverwenden |
## Permissions / Gates
Keine — persönliche Einstellungen.
## Subframe
- (erst nach explizitem OK)
## Notizen
- v2 (nicht bauen, nicht andeuten): Ruhezeiten, Bündelung, Push-Geräte.
- E-Mail-Spalte bei Master-aus: ausgegraut, nicht versteckt (Nutzer soll sehen, was er verpasst).
@@ -0,0 +1,143 @@
{
"nodes": [
{
"id": "group-main",
"type": "group",
"x": -80,
"y": -100,
"width": 1840,
"height": 420,
"label": "Hauptflow"
},
{
"id": "group-settings",
"type": "group",
"x": -80,
"y": 460,
"width": 1000,
"height": 400,
"label": "Einstellungen"
},
{
"id": "group-notes",
"type": "group",
"x": 1060,
"y": 460,
"width": 1240,
"height": 400,
"label": "Regeln und Offenes"
},
{
"id": "note-entry",
"type": "text",
"text": "# Einstieg\n\nGlocke in der Topbar (App-Gerüst D0) mit Ungelesen-Zähler.\n\nKlick öffnet den Drawer.",
"x": 0,
"y": 0,
"width": 360,
"height": 200
},
{
"id": "s01",
"type": "file",
"file": "02 Wireframes/P3 Querschnitt/WF-P3 Benachrichtigungen/Screens/S01 Glocken-Drawer.md",
"x": 560,
"y": 0,
"width": 420,
"height": 200
},
{
"id": "s02",
"type": "file",
"file": "02 Wireframes/P3 Querschnitt/WF-P3 Benachrichtigungen/Screens/S02 Benachrichtigungen Seite.md",
"x": 1240,
"y": 0,
"width": 420,
"height": 200
},
{
"id": "note-entry-settings",
"type": "text",
"text": "# Einstieg\n\nEinstellungen → Persönlich → Benachrichtigungen",
"x": 0,
"y": 560,
"width": 320,
"height": 200
},
{
"id": "s03",
"type": "file",
"file": "02 Wireframes/P3 Querschnitt/WF-P3 Benachrichtigungen/Screens/S03 Benachrichtigungen Einstellungen.md",
"x": 440,
"y": 560,
"width": 420,
"height": 200
},
{
"id": "note-deeplink",
"type": "text",
"text": "# Regel: Typ-Sprung\n\nKlick auf einen Eintrag springt typ-abhängig zur Sache (neue Aufgabe → Aufgabe, Anfrage → Anfrage …). Typ-Icon je Quelle.\n\nKein eigener Screen.",
"x": 1120,
"y": 560,
"width": 360,
"height": 240
},
{
"id": "note-bounce",
"type": "text",
"text": "# Banner (nur Doku)\n\nBounce-Hinweis „E-Mails an dich kommen aktuell nicht an\" + Prüf-Knopf — sichtbar in S01, S02 und S03.",
"x": 1520,
"y": 560,
"width": 360,
"height": 240
},
{
"id": "note-dismiss",
"type": "text",
"text": "# Offen (Dev)\n\nWegklicken: endgültig löschen oder archivieren?\n\nUI: Eintrag verschwindet aus der Liste.",
"x": 1920,
"y": 560,
"width": 340,
"height": 240
},
{
"id": "md-paket",
"type": "file",
"file": "02 Wireframes/P3 Querschnitt/WF-P3 Benachrichtigungen/WF-P3 Benachrichtigungen.md",
"x": -80,
"y": -440,
"width": 460,
"height": 280
}
],
"edges": [
{
"id": "e-entry",
"fromNode": "note-entry",
"fromSide": "right",
"toNode": "s01",
"toSide": "left",
"toEnd": "arrow",
"label": "öffnen"
},
{
"id": "e-page",
"fromNode": "s01",
"fromSide": "right",
"toNode": "s02",
"toSide": "left",
"toEnd": "arrow",
"label": "Alle anzeigen"
},
{
"id": "e-settings",
"fromNode": "note-entry-settings",
"fromSide": "right",
"toNode": "s03",
"toSide": "left",
"toEnd": "arrow",
"styleAttributes": {
"path": "dotted"
}
}
]
}
@@ -0,0 +1,128 @@
---
kind: wireframe-package
project: HiveGrid Screen Project
ticket: D-P3
package: WF-P3 Benachrichtigungen
typ: Flow
status: Validiert
subframe: ""
canvas: "WF-P3 Benachrichtigungen.canvas"
---
# WF-P3 Benachrichtigungen
Status: Validiert (Screen-Liste)
Subframe-Link: -
Canvas: [Canvas](<WF-P3 Benachrichtigungen.canvas>)
Stand: 2026-07-08
---
## 1. Kurzfassung
Die Benachrichtigungs-Oberflächen: Glocken-Drawer in der Topbar, volle Seite `/notifications` und die persönlichen Einstellungen. Der Versand-Dienst existiert schon (Dev P1) — wir bauen nur die Bedienung.
---
## 2. Intent Check
| Frage | Antwort |
|---|---|
| Welches Ticket/Modul ist betroffen? | D-P3 (Teil Benachrichtigungen), Dev-Pendant AK-P3 |
| Was soll der Nutzer am Ende schaffen? | Neues sofort sehen, per Klick zur Sache springen, Erledigtes wegräumen, selbst steuern, worüber er wie informiert wird |
| Flow, Screen, Zustand oder Doku? | Kleiner Flow: Drawer → Seite + separater Einstellungs-Screen |
| Welche Planning-Quellen wurden geprüft? | `ticket-docs/D-P3.md`, SCREEN-MAP §2, HiveGrid Map |
| Was ist sicher im Scope? | Drawer, Seite, Einstellungen, Bounce-Hinweis, Zustände |
| Was ist sicher nicht im Scope? | Ruhezeiten, Bündelung, Push-Geräte-Liste, Sprach-Wechsler (alles v2) |
| Admin/Normalrolle-Unterschiede? | Keine — Benachrichtigungen sind persönlich, jeder sieht nur seine |
| Unsichere Annahmen? | Ob der Drawer zusätzlich einen Zahnrad-Einstieg zu den Einstellungen bekommt (offen) |
---
## 3. Scope
| Punkt | Inhalt |
|---|---|
| Ticket/Modul | D-P3 · Benachrichtigungen |
| Nutzerrolle | Alle (persönlicher Bereich) |
| Startpunkt | Glocke in der Topbar (App-Gerüst, D0) |
| Ziel | Meldung gesehen → zur Sache gesprungen oder weggeräumt |
| Haupt-Archetyp | A2 Liste + Drawer · A6 Settings |
| Bespoke-Anteil | Keiner — reines Baukasten-Compose |
| Out of scope | Ruhezeiten, Bündelung, Push, Sprach-Wechsler (v2) |
---
## 4. Entscheidungen (validiert 2026-07-08)
| Entscheidung | Status | Notiz |
|---|---|---|
| Drawer UND Seite als eigene Frames | genommen | Seite = Drawer in groß; Drawer wird Muster für künftige Topbar-Drawer |
| Drawer-Inhalt: Hinweis/Link zur vollen Seite | genommen | Davids Ergänzung — „Alle anzeigen" |
| Drawer: Aktualisieren-Aktion | genommen | Davids Ergänzung |
| Einzelne Benachrichtigung wegklickbar (wenn erledigt) | genommen | Davids Ergänzung; wegklicken ≠ nur „gelesen" — Verhalten s. offene Fragen |
| Klick auf Eintrag springt typ-abhängig zur Sache | genommen | z. B. neue Aufgabe → Aufgabe öffnen; Typ-Icon je Quelle (Aufgabe, E-Mail, Antrag, System …) |
| Bounce-Hinweis als Banner, nicht als Screen | genommen | „E-Mails an dich kommen aktuell nicht an" + Prüf-Knopf |
| Live-Verbindung weg = Inline-Hinweis | genommen | „aktualisiert sich gerade nicht" |
| Einstellungen unter Einstellungen → Persönlich → Benachrichtigungen | genommen | passt zum Infrastruktur-Beschluss (ein Einstellungen-Hub) |
### Happy Path
1. Glocke zeigt Ungelesen-Zähler → Klick öffnet Drawer (S01).
2. Eintrag anklicken → Sprung zur Sache (Aufgabe, Anfrage, Antrag …), Eintrag wird gelesen.
3. Erledigtes wegklicken oder „alle als gelesen"; für Historie/Aufräumen „Alle anzeigen" → Seite (S02).
4. Wer weniger/mehr will: Einstellungen (S03) — pro Ereignis-Typ In-App/E-Mail + Priorität, Master-Schalter.
### Meldungs-/Error-States (validiert)
| Ereignis | UI-Form | Blockiert? | Bauen? | Copy/Notiz |
|---|---|---|---|---|
| E-Mails kommen nicht an (Bounce) | Banner in Drawer + Seite | nein | Nur dokumentieren | „E-Mails an dich kommen aktuell nicht an." + Prüf-Knopf |
| Live-Verbindung weg | Inline in Drawer/Seite | nein | Nur dokumentieren | „Aktualisiert sich gerade nicht — neu laden." |
| Liste lädt nicht | Fehler-Zustand (A7) | nein | Wiederverwenden | Baukasten-Fehlerzustand mit Lösungs-Knopf |
| Keine Benachrichtigungen | Leer-Zustand | nein | Nur dokumentieren | „Keine Benachrichtigungen — du bist auf dem Stand." |
---
## 7. Validierte Screen-Liste
| ID | Screen/Zustand | Typ | Umsetzung | Ort | Status |
|---|---|---|---|---|---|
| S01 | Glocken-Drawer | Drawer | Bauen | Topbar, global | Validiert |
| S02 | Benachrichtigungen Seite | Screen | Bauen | `/notifications` | Validiert |
| S03 | Benachrichtigungen Einstellungen | Settings | Bauen | `/settings/notifications` | Validiert |
| D01 | Bounce-Banner | Banner | Nur dokumentieren | in S01/S02 | Validiert |
| D02 | Leer-Zustand | Inline | Nur dokumentieren | in S01/S02 | Validiert |
| D03 | Live-Verbindung weg | Inline | Nur dokumentieren | in S01/S02 | Validiert |
---
## 8. Grid
```text
Glocke (Topbar, D0) -> S01 -> (Alle anzeigen) -> S02
Einstellungen -> S03
```
---
## 9. Screen-Pakete
- [[S01 Glocken-Drawer]]
- [[S02 Benachrichtigungen Seite]]
- [[S03 Benachrichtigungen Einstellungen]]
---
## 10. Offene Fragen
- Drawer-Zahnrad als Direkteinstieg zu S03? (klein, noch nicht validiert)
- Wegklicken: verschwindet der Eintrag endgültig oder nur aus der Ansicht (Archiv)? → Frage an Dev, UI zeigt erstmal „X entfernt aus Liste"
- Prioritäts-Marker: eigene Optik (Farbe/Icon) — beim Subframe-Bau entscheiden
## Handoff-Check
- [x] Jeder Screen ist mit Umsetzung markiert.
- [x] Meldungs-/Error-State-Matrix ist ausgefüllt.
- [x] Banner/Inline-Meldungen sind dokumentiert.
- [ ] Subframe-Link ist eingetragen. *(Subframe erst nach explizitem OK)*