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:
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?
|
||||
+67
@@ -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).
|
||||
+64
@@ -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).
|
||||
+143
@@ -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)*
|
||||
@@ -0,0 +1,45 @@
|
||||
---
|
||||
kind: screen
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-P4
|
||||
package: WF-P4 Aufgaben
|
||||
id: M01
|
||||
screen: Aufgabe anlegen
|
||||
typ: Modal
|
||||
umsetzung: Bauen
|
||||
status: Validiert
|
||||
route: "aus S01/S03/Detailseiten"
|
||||
subframe: ""
|
||||
---
|
||||
|
||||
# M01 — Aufgabe anlegen
|
||||
|
||||
## Ziel
|
||||
|
||||
Aufgabe in Sekunden anlegen — aus der Liste, dem Drawer oder direkt aus einer Detailseite (dann vorbefüllt).
|
||||
|
||||
## Pattern / Archetyp
|
||||
|
||||
A5 Dialog (echtes Modal: DialogLayout → Dialog → Dialog.Content).
|
||||
|
||||
## Daten
|
||||
|
||||
- Titel (Pflicht) · Beschreibung (Markdown) · Priorität · Frist (Date-Picker)
|
||||
- Zuständig: Person ↔ Gruppe · Verknüpfung (Auto-Complete) · Beobachter
|
||||
- Aus Detailseite geöffnet: Verknüpfung vorbefüllt
|
||||
|
||||
## Aktionen
|
||||
|
||||
- »Anlegen« → Toast + Aufgabe erscheint in Liste/Drawer
|
||||
- Abbrechen
|
||||
|
||||
## Zustände
|
||||
|
||||
| Zustand | Beschreibung | Umsetzung |
|
||||
|---|---|---|
|
||||
| Titel fehlt | Inline-Validierung | Nur dokumentieren |
|
||||
| Speichern fehlgeschlagen | Toast mit Klartext | Wiederverwenden |
|
||||
|
||||
## Subframe
|
||||
|
||||
- (erst nach explizitem OK)
|
||||
@@ -0,0 +1,52 @@
|
||||
---
|
||||
kind: screen
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-P4
|
||||
package: WF-P4 Aufgaben
|
||||
id: S01
|
||||
screen: Aufgaben-Liste
|
||||
typ: Liste
|
||||
umsetzung: Bauen
|
||||
status: Validiert
|
||||
route: "/tasks"
|
||||
subframe: ""
|
||||
---
|
||||
|
||||
# S01 — Aufgaben-Liste
|
||||
|
||||
## Ziel
|
||||
|
||||
Alle Aufgaben im Griff: meine zuerst, überfällige sofort sichtbar, schnell abhaken.
|
||||
|
||||
## Pattern / Archetyp
|
||||
|
||||
A2 Liste — **wiederverwendbare Komponente** (Kompakt-Variante: [[V01 Eingebettete Kompakt-Variante]]).
|
||||
|
||||
## Daten
|
||||
|
||||
- Zeile: Titel · Prioritäts-Marker · Frist (relativ ≤ 7 Tage, überfällig rot) · verknüpfte Entität · Zuständig (Person/Gruppe) · Status · Herkunfts-Marker (manuell/Chat/Formular/Automation)
|
||||
- Presets: **Meine / Von mir erstellt / Alle** (»Alle« nur mit `tasks.read_all`)
|
||||
- Suche · Filter: Status, Priorität, Frist-Zeitraum, Verknüpfungs-Typ, Herkunft · Archiviert-Schalter
|
||||
|
||||
## Aktionen
|
||||
|
||||
- Zeile öffnen → [[S02 Aufgaben-Detail]]
|
||||
- Schnell-Aktionen in der Zeile: erledigt · Priorität · Frist
|
||||
- Mehrfach-Auswahl + Bulk-Aktionen
|
||||
- »Neue Aufgabe« → [[M01 Aufgabe anlegen]]
|
||||
|
||||
## Zustände
|
||||
|
||||
| Zustand | Beschreibung | Umsetzung |
|
||||
|---|---|---|
|
||||
| Leer | »Keine offenen Aufgaben — schöne Sache« | Nur dokumentieren |
|
||||
| Laden | Skeleton (A7) | Wiederverwenden |
|
||||
| Fehler | A7-Fehlerzustand | Wiederverwenden |
|
||||
|
||||
## Permissions / Gates
|
||||
|
||||
`tasks.*` — Aktions-Knöpfe rechte-abhängig; Preset »Alle« gegated.
|
||||
|
||||
## Subframe
|
||||
|
||||
- (erst nach explizitem OK)
|
||||
@@ -0,0 +1,54 @@
|
||||
---
|
||||
kind: screen
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-P4
|
||||
package: WF-P4 Aufgaben
|
||||
id: S02
|
||||
screen: Aufgaben-Detail
|
||||
typ: Detail
|
||||
umsetzung: Bauen
|
||||
status: Validiert
|
||||
route: "/tasks/:id"
|
||||
subframe: ""
|
||||
---
|
||||
|
||||
# S02 — Aufgaben-Detail
|
||||
|
||||
## Ziel
|
||||
|
||||
Eine Aufgabe komplett verstehen und direkt bearbeiten.
|
||||
|
||||
## Pattern / Archetyp
|
||||
|
||||
A3 Detail.
|
||||
|
||||
## Daten
|
||||
|
||||
- Titel · Beschreibung (Markdown) · Status/Priorität/Frist direkt änderbar
|
||||
- Zuständig: Umschalter **Person ↔ Gruppe** (genau eines)
|
||||
- Verknüpfung (Auto-Complete: Kontakt/Organisation/Lead/Projekt) · Beobachter
|
||||
- Herkunft mit Link zur Quelle (Chat-Nachricht, Formular, Automation)
|
||||
- Verlauf (Activity-Stream)
|
||||
|
||||
## Aktionen
|
||||
|
||||
- Erledigen / Wieder öffnen · Duplizieren · Löschen (mit Klartext-Warnung)
|
||||
|
||||
## Banner / Hinweise
|
||||
|
||||
- Überfällig · Zuständiger deaktiviert (+ »neu zuweisen«) · »wird in 30 Tagen archiviert« · Verknüpfung gelöscht
|
||||
|
||||
## Zustände
|
||||
|
||||
| Zustand | Beschreibung | Umsetzung |
|
||||
|---|---|---|
|
||||
| Nicht gefunden | 404 auch bei fehlendem Recht (Dev-Vorgabe) | Wiederverwenden |
|
||||
| Laden / Fehler | A7 | Wiederverwenden |
|
||||
|
||||
## Permissions / Gates
|
||||
|
||||
Aktions-Knöpfe rechte-abhängig; fremde Aufgaben → 404.
|
||||
|
||||
## Subframe
|
||||
|
||||
- (erst nach explizitem OK)
|
||||
@@ -0,0 +1,55 @@
|
||||
---
|
||||
kind: screen
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-P4
|
||||
package: WF-P4 Aufgaben
|
||||
id: S03
|
||||
screen: Aufgaben-Drawer
|
||||
typ: Drawer
|
||||
umsetzung: Bauen
|
||||
status: Validiert
|
||||
route: "Topbar, global"
|
||||
subframe: ""
|
||||
---
|
||||
|
||||
# S03 — Aufgaben-Drawer
|
||||
|
||||
## Ziel
|
||||
|
||||
Schnellzugriff auf die eigenen Aufgaben von überall — ohne die aktuelle Seite zu verlassen. **Davids Ergänzung über das Ticket hinaus (Delta).**
|
||||
|
||||
## Pattern / Archetyp
|
||||
|
||||
Drawer rechts, geöffnet über einen Topbar-Button (analog Glocken-Drawer aus WF-P3 — gleiches Drawer-Muster).
|
||||
|
||||
## Daten
|
||||
|
||||
- Meine offenen Aufgaben, überfällige oben (rot)
|
||||
- Zeile kompakt: Titel · Frist · Prioritäts-Marker · verknüpfte Entität
|
||||
|
||||
## Aktionen
|
||||
|
||||
- Tipp auf Eintrag → [[S02 Aufgaben-Detail]]
|
||||
- Erledigt-Haken direkt in der Zeile
|
||||
- »Neue Aufgabe« → [[M01 Aufgabe anlegen]]
|
||||
- »Alle Aufgaben« → [[S01 Aufgaben-Liste]]
|
||||
|
||||
## Zustände
|
||||
|
||||
| Zustand | Beschreibung | Umsetzung |
|
||||
|---|---|---|
|
||||
| Leer | »Keine offenen Aufgaben — schöne Sache« | Nur dokumentieren |
|
||||
| Laden / Fehler | A7 | Wiederverwenden |
|
||||
|
||||
## Permissions / Gates
|
||||
|
||||
Keine — zeigt nur eigene Aufgaben.
|
||||
|
||||
## Subframe
|
||||
|
||||
- (erst nach explizitem OK)
|
||||
|
||||
## Notizen
|
||||
|
||||
- Offen: Zähler-Badge am Topbar-Button (offene/überfällige)? → Subframe-Bau
|
||||
- Delta in `ticket-docs/D-P4.md` (»Davids Delta«) beim Handoff nachtragen
|
||||
+48
@@ -0,0 +1,48 @@
|
||||
---
|
||||
kind: screen
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-P4
|
||||
package: WF-P4 Aufgaben
|
||||
id: V01
|
||||
screen: Eingebettete Kompakt-Variante
|
||||
typ: Variante (wiederverwendbar)
|
||||
umsetzung: Bauen
|
||||
status: Validiert
|
||||
route: "Reiter in jeder Detailseite"
|
||||
subframe: ""
|
||||
---
|
||||
|
||||
# V01 — Eingebettete Kompakt-Variante
|
||||
|
||||
## Ziel
|
||||
|
||||
Der Aufgaben-Reiter, der später in **jeder** Detailseite steckt (Kontakt, Organisation, Lead, Projekt) — vorgefiltert auf das Objekt. **Das Einbett-Muster für alle Features.**
|
||||
|
||||
## Pattern / Archetyp
|
||||
|
||||
Kompakte Ausführung von [[S01 Aufgaben-Liste]]: weniger Spalten, keine Presets (immer objektbezogen), gleiche Zeilen-Optik.
|
||||
|
||||
## Daten
|
||||
|
||||
- Aufgaben des Objekts: Titel · Frist · Prioritäts-Marker · Zuständig · Status
|
||||
|
||||
## Aktionen
|
||||
|
||||
- »Aufgabe anlegen« → [[M01 Aufgabe anlegen]] (Verknüpfung vorbefüllt)
|
||||
- Zeile öffnen → [[S02 Aufgaben-Detail]]
|
||||
- Erledigt-Haken in der Zeile
|
||||
|
||||
## Zustände
|
||||
|
||||
| Zustand | Beschreibung | Umsetzung |
|
||||
|---|---|---|
|
||||
| Leer | »Noch keine Aufgaben zu diesem Eintrag« + Anlegen-Knopf | Nur dokumentieren |
|
||||
| Laden / Fehler | A7 | Wiederverwenden |
|
||||
|
||||
## Subframe
|
||||
|
||||
- (erst nach explizitem OK)
|
||||
|
||||
## Notizen
|
||||
|
||||
- Wird von den Feature-Paketen (D-CRM, D-P8 …) referenziert, nicht neu gebaut.
|
||||
@@ -0,0 +1,178 @@
|
||||
{
|
||||
"nodes": [
|
||||
{
|
||||
"id": "group-main",
|
||||
"type": "group",
|
||||
"x": -80,
|
||||
"y": -100,
|
||||
"width": 1840,
|
||||
"height": 420,
|
||||
"label": "Hauptflow"
|
||||
},
|
||||
{
|
||||
"id": "group-schnell",
|
||||
"type": "group",
|
||||
"x": -80,
|
||||
"y": 460,
|
||||
"width": 1000,
|
||||
"height": 400,
|
||||
"label": "Schnellzugriff (Davids Delta)"
|
||||
},
|
||||
{
|
||||
"id": "group-anlage",
|
||||
"type": "group",
|
||||
"x": 1060,
|
||||
"y": 460,
|
||||
"width": 1240,
|
||||
"height": 400,
|
||||
"label": "Anlegen und Einbettung"
|
||||
},
|
||||
{
|
||||
"id": "note-entry",
|
||||
"type": "text",
|
||||
"text": "# Einstieg\n\nSidebar → Aufgaben (`/tasks`).",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"width": 360,
|
||||
"height": 200
|
||||
},
|
||||
{
|
||||
"id": "s01",
|
||||
"type": "file",
|
||||
"file": "02 Wireframes/P4 Aufgaben und Dateien/WF-P4 Aufgaben/Screens/S01 Aufgaben-Liste.md",
|
||||
"x": 560,
|
||||
"y": 0,
|
||||
"width": 420,
|
||||
"height": 200
|
||||
},
|
||||
{
|
||||
"id": "s02",
|
||||
"type": "file",
|
||||
"file": "02 Wireframes/P4 Aufgaben und Dateien/WF-P4 Aufgaben/Screens/S02 Aufgaben-Detail.md",
|
||||
"x": 1240,
|
||||
"y": 0,
|
||||
"width": 420,
|
||||
"height": 200
|
||||
},
|
||||
{
|
||||
"id": "note-topbar",
|
||||
"type": "text",
|
||||
"text": "# Einstieg\n\nTopbar-Button »Meine Aufgaben« (Davids Ergänzung).",
|
||||
"x": 0,
|
||||
"y": 560,
|
||||
"width": 320,
|
||||
"height": 200
|
||||
},
|
||||
{
|
||||
"id": "s03",
|
||||
"type": "file",
|
||||
"file": "02 Wireframes/P4 Aufgaben und Dateien/WF-P4 Aufgaben/Screens/S03 Aufgaben-Drawer.md",
|
||||
"x": 440,
|
||||
"y": 560,
|
||||
"width": 420,
|
||||
"height": 200
|
||||
},
|
||||
{
|
||||
"id": "m01",
|
||||
"type": "file",
|
||||
"file": "02 Wireframes/P4 Aufgaben und Dateien/WF-P4 Aufgaben/Screens/M01 Aufgabe anlegen.md",
|
||||
"x": 1120,
|
||||
"y": 560,
|
||||
"width": 420,
|
||||
"height": 200
|
||||
},
|
||||
{
|
||||
"id": "v01",
|
||||
"type": "file",
|
||||
"file": "02 Wireframes/P4 Aufgaben und Dateien/WF-P4 Aufgaben/Screens/V01 Eingebettete Kompakt-Variante.md",
|
||||
"x": 1600,
|
||||
"y": 560,
|
||||
"width": 420,
|
||||
"height": 200
|
||||
},
|
||||
{
|
||||
"id": "md-paket",
|
||||
"type": "file",
|
||||
"file": "02 Wireframes/P4 Aufgaben und Dateien/WF-P4 Aufgaben/WF-P4 Aufgaben.md",
|
||||
"x": -80,
|
||||
"y": -440,
|
||||
"width": 460,
|
||||
"height": 280
|
||||
}
|
||||
],
|
||||
"edges": [
|
||||
{
|
||||
"id": "e-entry",
|
||||
"fromNode": "note-entry",
|
||||
"fromSide": "right",
|
||||
"toNode": "s01",
|
||||
"toSide": "left",
|
||||
"toEnd": "arrow",
|
||||
"styleAttributes": {
|
||||
"path": "dotted",
|
||||
"pathfindingMethod": "direct"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "e-open",
|
||||
"fromNode": "s01",
|
||||
"fromSide": "right",
|
||||
"toNode": "s02",
|
||||
"toSide": "left",
|
||||
"toEnd": "arrow",
|
||||
"label": "Zeile öffnen",
|
||||
"styleAttributes": {
|
||||
"pathfindingMethod": "direct"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "e-topbar",
|
||||
"fromNode": "note-topbar",
|
||||
"fromSide": "right",
|
||||
"toNode": "s03",
|
||||
"toSide": "left",
|
||||
"toEnd": "arrow",
|
||||
"styleAttributes": {
|
||||
"path": "dotted",
|
||||
"pathfindingMethod": "direct"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "e-drawer",
|
||||
"fromNode": "s03",
|
||||
"fromSide": "top",
|
||||
"toNode": "s02",
|
||||
"toSide": "bottom",
|
||||
"toEnd": "arrow",
|
||||
"label": "Eintrag öffnen",
|
||||
"styleAttributes": {
|
||||
"pathfindingMethod": "direct"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "e-new",
|
||||
"fromNode": "s01",
|
||||
"fromSide": "bottom",
|
||||
"toNode": "m01",
|
||||
"toSide": "top",
|
||||
"toEnd": "arrow",
|
||||
"label": "Neue Aufgabe (auch aus S03 + Detailseiten, vorbefüllt)",
|
||||
"styleAttributes": {
|
||||
"pathfindingMethod": "direct"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "e-variant",
|
||||
"fromNode": "v01",
|
||||
"fromSide": "top",
|
||||
"toNode": "s01",
|
||||
"toSide": "bottom",
|
||||
"toEnd": "arrow",
|
||||
"label": "kompakte Ausführung von S01",
|
||||
"styleAttributes": {
|
||||
"path": "short-dashed",
|
||||
"pathfindingMethod": "direct"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,131 @@
|
||||
---
|
||||
kind: wireframe-package
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-P4
|
||||
package: WF-P4 Aufgaben
|
||||
typ: Flow
|
||||
status: Validiert
|
||||
subframe: ""
|
||||
canvas: "WF-P4 Aufgaben.canvas"
|
||||
---
|
||||
|
||||
# WF-P4 Aufgaben
|
||||
|
||||
Status: Validiert (Screen-Liste)
|
||||
Subframe-Link: -
|
||||
Canvas: [Canvas](<WF-P4 Aufgaben.canvas>)
|
||||
Stand: 2026-07-08
|
||||
|
||||
---
|
||||
|
||||
## 1. Kurzfassung
|
||||
|
||||
Das Aufgaben-Modul: Liste, Detail, Anlegen-Modal, Topbar-Drawer für den Schnellzugriff und die eingebettete Kompakt-Variante, die später in jeder Detailseite (Kontakt, Projekt, …) steckt. **Einmal bauen, überall einbetten.**
|
||||
|
||||
---
|
||||
|
||||
## 2. Intent Check
|
||||
|
||||
| Frage | Antwort |
|
||||
|---|---|
|
||||
| Welches Ticket/Modul ist betroffen? | D-P4 (Teil Aufgaben), Dev-Pendant AK-P4b |
|
||||
| Was soll der Nutzer am Ende schaffen? | Aufgaben sehen (meine zuerst), schnell anlegen, abhaken, nichts verpassen (Fristen) |
|
||||
| Flow, Screen, Zustand oder Doku? | Screens + Modal + Drawer + wiederverwendbare Kompakt-Variante |
|
||||
| Welche Planning-Quellen wurden geprüft? | `ticket-docs/D-P4.md`, SCREEN-MAP §2, HiveGrid Map |
|
||||
| Was ist sicher im Scope? | Liste, Detail, Anlegen, Drawer, Kompakt-Variante, Banner-Zustände |
|
||||
| Was ist sicher nicht im Scope? | Unteraufgaben, Boards für Aufgaben, wiederkehrende Aufgaben (nicht im Ticket) |
|
||||
| Admin/Normalrolle-Unterschiede? | Preset »Alle« nur mit Recht `tasks.read_all`; fremde Aufgaben → 404 |
|
||||
| Unsichere Annahmen? | Feinverhalten Drawer (z. B. Anzahl-Badge am Topbar-Button) — beim Subframe-Bau |
|
||||
|
||||
---
|
||||
|
||||
## 3. Scope
|
||||
|
||||
| Punkt | Inhalt |
|
||||
|---|---|
|
||||
| Ticket/Modul | D-P4 · Aufgaben |
|
||||
| Nutzerrolle | Alle (Maximalansicht Admin) |
|
||||
| Startpunkt | Sidebar »Aufgaben« oder Topbar-Button |
|
||||
| Ziel | Aufgabe angelegt / erledigt / gefunden |
|
||||
| Haupt-Archetyp | A2 Liste · A3 Detail · A5 Modal |
|
||||
| Bespoke-Anteil | Keiner |
|
||||
| Out of scope | Wiederkehrende Aufgaben, Unteraufgaben (nicht beauftragt) |
|
||||
|
||||
---
|
||||
|
||||
## 4. Entscheidungen (validiert 2026-07-08)
|
||||
|
||||
| Entscheidung | Status | Notiz |
|
||||
|---|---|---|
|
||||
| Detail als eigene Seite, Anlegen als Modal (vorbefüllbar) | genommen | Ticket-treu |
|
||||
| Eingebettete Kompakt-Variante als eigener Frame (V01) | genommen | Einbett-Muster steht, bevor D-CRM es braucht |
|
||||
| **Topbar-Button »Meine Aufgaben« + Aufgaben-Drawer rechts** | genommen | **Davids Ergänzung (Delta über Ticket hinaus)** — Schnellzugriff analog Glocken-Drawer; in »Davids Delta« der Ticket-Doc nachtragen |
|
||||
| Zuweisung an Person ODER Gruppe (genau eines) | genommen | Ticket-Vorgabe, Umschalter im Picker |
|
||||
| Herkunfts-Marker (manuell/Chat/Formular/Automation) mit Link | genommen | Ticket-Vorgabe |
|
||||
| Banner nur dokumentieren | genommen | überfällig / Zuständiger deaktiviert / 30-Tage-Archiv / Verknüpfung gelöscht |
|
||||
|
||||
### Happy Path
|
||||
|
||||
1. Sidebar »Aufgaben« → Liste, Preset »Meine«, überfällige rot oben.
|
||||
2. Schnell-Aktionen direkt in der Zeile: erledigt, Priorität, Frist.
|
||||
3. »Neue Aufgabe« → Modal (aus einer Detailseite geöffnet: Verknüpfung vorbefüllt).
|
||||
4. Zwischendurch überall: Topbar-Button → Drawer rechts mit meinen offenen Aufgaben, Tipp auf Eintrag → Detail.
|
||||
|
||||
### Meldungs-/Error-States (validiert)
|
||||
|
||||
| Ereignis | UI-Form | Blockiert? | Bauen? | Copy/Notiz |
|
||||
|---|---|---|---|---|
|
||||
| Fremde Aufgabe aufgerufen | 404 »nicht gefunden« | ja | Wiederverwenden | bewusst nicht »verboten« (Dev-Vorgabe) |
|
||||
| Zuständiger deaktiviert | Banner + »neu zuweisen« | nein | Nur dokumentieren | im Detail |
|
||||
| Überfällig | Banner/rote Frist | nein | Nur dokumentieren | Liste + Detail |
|
||||
| Wird in 30 Tagen archiviert | Banner | nein | Nur dokumentieren | erledigte Aufgaben |
|
||||
| Verknüpfung gelöscht | Banner | nein | Nur dokumentieren | »Verknüpftes Objekt existiert nicht mehr« |
|
||||
| Leere Liste | Leer-Zustand | nein | Nur dokumentieren | »Keine offenen Aufgaben — schöne Sache« |
|
||||
|
||||
---
|
||||
|
||||
## 7. Validierte Screen-Liste
|
||||
|
||||
| ID | Screen/Zustand | Typ | Umsetzung | Ort | Status |
|
||||
|---|---|---|---|---|---|
|
||||
| S01 | Aufgaben-Liste | Screen | Bauen | `/tasks` | Validiert |
|
||||
| S02 | Aufgaben-Detail | Screen | Bauen | `/tasks/:id` | Validiert |
|
||||
| S03 | Aufgaben-Drawer (Topbar) | Drawer | Bauen | Topbar, global | Validiert |
|
||||
| M01 | Aufgabe anlegen | Modal | Bauen | aus S01/S03/Detailseiten | Validiert |
|
||||
| V01 | Eingebettete Kompakt-Variante | Variante | Bauen | Reiter in Detailseiten | Validiert |
|
||||
| D01–D05 | Banner-Zustände (s. Tabelle oben) | Banner/Inline | Nur dokumentieren | in S01/S02 | Validiert |
|
||||
|
||||
---
|
||||
|
||||
## 8. Grid
|
||||
|
||||
```text
|
||||
Sidebar -> S01 -> S02
|
||||
Topbar-Button -> S03 (Drawer) -> S02
|
||||
S01/S03/Detailseiten -> M01 (Anlegen, vorbefuellt)
|
||||
V01 = kompakte S01 als Reiter in jeder Detailseite
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 9. Screen-Pakete
|
||||
|
||||
- [[S01 Aufgaben-Liste]]
|
||||
- [[S02 Aufgaben-Detail]]
|
||||
- [[S03 Aufgaben-Drawer]]
|
||||
- [[M01 Aufgabe anlegen]]
|
||||
- [[V01 Eingebettete Kompakt-Variante]]
|
||||
|
||||
---
|
||||
|
||||
## 10. Offene Fragen
|
||||
|
||||
- Topbar-Button: mit Zähler-Badge (offene/überfällige)? → beim Subframe-Bau
|
||||
- Drawer-Umfang: nur »Meine offen« oder mit Tabs? → beim Subframe-Bau schlank starten
|
||||
- Davids Delta (Topbar-Button + Drawer) in `ticket-docs/D-P4.md` »Davids Delta« nachtragen → beim Handoff
|
||||
|
||||
## Handoff-Check
|
||||
|
||||
- [x] Jeder Screen ist mit Umsetzung markiert.
|
||||
- [x] Meldungs-/Error-State-Matrix ist ausgefüllt.
|
||||
- [ ] Subframe-Link ist eingetragen. *(Subframe erst nach explizitem OK)*
|
||||
@@ -0,0 +1,63 @@
|
||||
---
|
||||
kind: screen
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-P4
|
||||
package: WF-P4 Dateien
|
||||
id: M01
|
||||
screen: Datei freigeben
|
||||
typ: Modal
|
||||
umsetzung: Bauen
|
||||
status: Validiert
|
||||
route: "aus S01 (Zeilen-Aktion) und S03"
|
||||
subframe: ""
|
||||
---
|
||||
|
||||
# M01 — Datei freigeben
|
||||
|
||||
## Ziel
|
||||
|
||||
Eine Datei gezielt teilen — intern mit Kollegen oder per Link nach außen (z. B. an einen Kunden). **v1-Erweiterung auf Davids Entscheidung (2026-07-08); Change-Request an Dev.**
|
||||
|
||||
## Pattern / Archetyp
|
||||
|
||||
A5 Dialog (echtes Modal: DialogLayout → Dialog → Dialog.Content).
|
||||
|
||||
## Daten
|
||||
|
||||
- **Intern freigeben:** Personen-/Gruppen-Picker + Rolle je Eintrag (ansehen / bearbeiten)
|
||||
- Liste bestehender Freigaben (wer, welche Rolle) mit Entfernen-Knopf
|
||||
- **Öffentlicher Link:** erzeugen → Link mit Kopier-Knopf · Deaktivieren-Knopf · Klartext-Hinweis »Jeder mit dem Link kann die Datei ansehen«
|
||||
- Hinweis: Freigaben und Link-Aufrufe werden protokolliert (Audit)
|
||||
|
||||
## Aktionen
|
||||
|
||||
- Person/Gruppe hinzufügen (mit Rolle) · Rolle ändern · Freigabe entfernen
|
||||
- Link erzeugen / kopieren / deaktivieren
|
||||
- Fertig (Änderungen speichern sofort, Toast)
|
||||
|
||||
## Meldungsentscheidung
|
||||
|
||||
| Ereignis | UI-Form | Blockiert? | Umsetzung | Copy/Notiz |
|
||||
|---|---|---|---|---|
|
||||
| Link deaktivieren | Kurz-Bestätigung inline | nein | Nur dokumentieren | »Bestehende Link-Empfänger verlieren den Zugriff« |
|
||||
| Speichern fehlgeschlagen | Toast | nein | Wiederverwenden | Klartext |
|
||||
|
||||
## Zustände
|
||||
|
||||
| Zustand | Beschreibung | Umsetzung |
|
||||
|---|---|---|
|
||||
| Noch keine Freigaben | Leer-Hinweis im Modal | Nur dokumentieren |
|
||||
| Laden / Fehler | A7 | Wiederverwenden |
|
||||
|
||||
## Permissions / Gates
|
||||
|
||||
Freigeben nur, wer die Datei bearbeiten darf; Details klärt der Change-Request mit Dev.
|
||||
|
||||
## Subframe
|
||||
|
||||
- (erst nach explizitem OK)
|
||||
|
||||
## Notizen
|
||||
|
||||
- Scope-Erweiterung gegenüber `ticket-docs/D-P4.md` → beim Handoff als Davids Delta + Change-Request formulieren (Datenmodell/Rechte, zieht Teile des v2-Themas vor).
|
||||
- Ordner + Versionen bleiben v2.
|
||||
@@ -0,0 +1,56 @@
|
||||
---
|
||||
kind: screen
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-P4
|
||||
package: WF-P4 Dateien
|
||||
id: S01
|
||||
screen: Datei-Uebersicht
|
||||
typ: Liste
|
||||
umsetzung: Bauen
|
||||
status: Validiert
|
||||
route: "/files"
|
||||
subframe: ""
|
||||
---
|
||||
|
||||
# S01 — Datei-Übersicht
|
||||
|
||||
## Ziel
|
||||
|
||||
Dateien schnell wiederfinden — meine zuerst, per Filter oder Suche.
|
||||
|
||||
## Pattern / Archetyp
|
||||
|
||||
A2 Liste mit **Tabelle/Kacheln-Umschalter** (Kacheln mit Thumbnail).
|
||||
|
||||
## Daten
|
||||
|
||||
- Zeile/Kachel: Vorschau-Thumbnail · Name · Größe · Datum · Tags · verknüpfte Entität · Verantwortlicher
|
||||
- Presets: **Meine Dateien / Mit mir geteilt / Alle Dateien**
|
||||
- Filter: Verknüpfung (Entität), Datei-Typ-Gruppe, Tags, Verantwortlicher · Archiviert-Schalter
|
||||
- Inline-Schnell-Vorschau (Hover/Einzelklick)
|
||||
|
||||
## Aktionen
|
||||
|
||||
- Datei öffnen → [[S03 Datei-Detail]]
|
||||
- »Hochladen« → [[S02 Upload]]
|
||||
- Zeilen-Aktion **»Freigeben«** → [[M01 Datei freigeben]] (geteilte Dateien tragen einen Geteilt-Marker)
|
||||
- Mehrfach-Auswahl: Tag vergeben · Verknüpfen · Archivieren · **ZIP-Download**
|
||||
|
||||
## Zustände
|
||||
|
||||
| Zustand | Beschreibung | Umsetzung |
|
||||
|---|---|---|
|
||||
| Leer | »Noch keine Dateien« + Hochladen-Knopf | Nur dokumentieren |
|
||||
| Laden / Fehler | A7 | Wiederverwenden |
|
||||
|
||||
## Permissions / Gates
|
||||
|
||||
`files.*` — Aktions-Knöpfe rechte-abhängig.
|
||||
|
||||
## Subframe
|
||||
|
||||
- (erst nach explizitem OK)
|
||||
|
||||
## Notizen
|
||||
|
||||
- Kein Ordner-Baum in v1 (Tags + Filter statt Ordner). Teilen/Freigeben ist v1 (M01, Davids Entscheidung + Change-Request an Dev).
|
||||
@@ -0,0 +1,54 @@
|
||||
---
|
||||
kind: screen
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-P4
|
||||
package: WF-P4 Dateien
|
||||
id: S02
|
||||
screen: Upload
|
||||
typ: Form/Dropzone
|
||||
umsetzung: Bauen
|
||||
status: Validiert
|
||||
route: "/files/upload"
|
||||
subframe: ""
|
||||
---
|
||||
|
||||
# S02 — Upload
|
||||
|
||||
## Ziel
|
||||
|
||||
Mehrere Dateien auf einmal hochladen und dabei sehen, was passiert.
|
||||
|
||||
## Pattern / Archetyp
|
||||
|
||||
A4 mit Datei-Dropzone — die Dropzone ist ein **wiederverwendbarer Baustein** (steckt später auch in Detailseiten, Chat, Abnahme).
|
||||
|
||||
## Daten
|
||||
|
||||
- Dropzone (Drag&Drop + Datei-Auswahl)
|
||||
- Warteschlange: je Datei Name · Größe · Fortschrittsbalken · Status (wartet / lädt / fertig / Fehler)
|
||||
- **HEIC-Hinweis:** »iPhone-Fotos werden automatisch zu JPG konvertiert«
|
||||
|
||||
## Aktionen
|
||||
|
||||
- Fehlgeschlagene Datei: »erneut versuchen« (andere laufen weiter)
|
||||
- Fertige Datei: direkt öffnen → [[S03 Datei-Detail]]
|
||||
- Optional beim Upload: Tags vergeben, an Entität verknüpfen
|
||||
|
||||
## Meldungsentscheidung
|
||||
|
||||
| Ereignis | UI-Form | Blockiert? | Umsetzung | Copy/Notiz |
|
||||
|---|---|---|---|---|
|
||||
| Upload fehlgeschlagen | Fehlerzeile + Retry | nein | Nur dokumentieren | — |
|
||||
| Virenscan-Ablehnung | Fehlerzeile | nein | Nur dokumentieren | »Aus Sicherheitsgründen abgelehnt« |
|
||||
| Datei zu groß | Inline vor Upload | ja (Datei) | Nur dokumentieren | Limit-Klartext |
|
||||
|
||||
## Zustände
|
||||
|
||||
| Zustand | Beschreibung | Umsetzung |
|
||||
|---|---|---|
|
||||
| Leer | nur Dropzone sichtbar | — |
|
||||
| Fehler | A7 | Wiederverwenden |
|
||||
|
||||
## Subframe
|
||||
|
||||
- (erst nach explizitem OK)
|
||||
@@ -0,0 +1,63 @@
|
||||
---
|
||||
kind: screen
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-P4
|
||||
package: WF-P4 Dateien
|
||||
id: S03
|
||||
screen: Datei-Detail
|
||||
typ: Detail
|
||||
umsetzung: Bauen
|
||||
status: Validiert
|
||||
route: "/files/:id"
|
||||
subframe: ""
|
||||
---
|
||||
|
||||
# S03 — Datei-Detail
|
||||
|
||||
## Ziel
|
||||
|
||||
Datei ansehen und einordnen: Wozu gehört sie, wer hat sie angefasst?
|
||||
|
||||
## Pattern / Archetyp
|
||||
|
||||
A3 Detail mit großer Vorschau-Komponente.
|
||||
|
||||
## Daten
|
||||
|
||||
- **Vorschau:** Bild mit Zoom / PDF-Viewer (HEIC bereits als JPG) · Fallback bei nicht unterstütztem Typ: Klartext + Download
|
||||
- Stammdaten (Name, Größe, Typ, Datum, Verantwortlicher) · Tags · Notizen
|
||||
- Verknüpfte Entitäten **mit Rollen-Label** (z. B. »Angebot« am Projekt)
|
||||
- Verlauf (Upload, Verknüpfungs-Änderungen, Downloads)
|
||||
|
||||
## Aktionen
|
||||
|
||||
- Download · Ersetzen · Archivieren
|
||||
- **»Freigeben«** → [[M01 Datei freigeben]] (zeigt bestehende Freigaben + Link-Status)
|
||||
- »Vorschau neu erzeugen« (wenn Vorschau fehlgeschlagen)
|
||||
- Verknüpfung hinzufügen/entfernen (mit Rolle)
|
||||
|
||||
## Meldungsentscheidung
|
||||
|
||||
| Ereignis | UI-Form | Blockiert? | Umsetzung | Copy/Notiz |
|
||||
|---|---|---|---|---|
|
||||
| Vorschau nicht möglich | Klartext + Download | nein | Nur dokumentieren | `not_supported` |
|
||||
| Vorschau fehlgeschlagen | Hinweis + »neu erzeugen« | nein | Nur dokumentieren | `failed` |
|
||||
|
||||
## Zustände
|
||||
|
||||
| Zustand | Beschreibung | Umsetzung |
|
||||
|---|---|---|
|
||||
| Vorschau wird erzeugt | Skeleton + »wird vorbereitet« | Nur dokumentieren |
|
||||
| Laden / Fehler | A7 | Wiederverwenden |
|
||||
|
||||
## Permissions / Gates
|
||||
|
||||
`files.*`.
|
||||
|
||||
## Subframe
|
||||
|
||||
- (erst nach explizitem OK)
|
||||
|
||||
## Notizen
|
||||
|
||||
- Kein Versionsverlauf in v1 (Ersetzen überschreibt) — Versionen sind v2.
|
||||
@@ -0,0 +1,166 @@
|
||||
{
|
||||
"nodes": [
|
||||
{
|
||||
"id": "group-main",
|
||||
"type": "group",
|
||||
"x": -80,
|
||||
"y": -100,
|
||||
"width": 1840,
|
||||
"height": 420,
|
||||
"label": "Hauptflow"
|
||||
},
|
||||
{
|
||||
"id": "group-upload",
|
||||
"type": "group",
|
||||
"x": -80,
|
||||
"y": 460,
|
||||
"width": 1040,
|
||||
"height": 400,
|
||||
"label": "Upload und Freigeben"
|
||||
},
|
||||
{
|
||||
"id": "group-notes",
|
||||
"type": "group",
|
||||
"x": 1060,
|
||||
"y": 460,
|
||||
"width": 1240,
|
||||
"height": 400,
|
||||
"label": "Regeln und Backlog"
|
||||
},
|
||||
{
|
||||
"id": "note-entry",
|
||||
"type": "text",
|
||||
"text": "# Einstieg\n\nSidebar → Dateien (`/files`).\n\nPresets: Meine Dateien / Alle Dateien.",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"width": 360,
|
||||
"height": 200
|
||||
},
|
||||
{
|
||||
"id": "s01",
|
||||
"type": "file",
|
||||
"file": "02 Wireframes/P4 Aufgaben und Dateien/WF-P4 Dateien/Screens/S01 Datei-Uebersicht.md",
|
||||
"x": 560,
|
||||
"y": 0,
|
||||
"width": 420,
|
||||
"height": 200
|
||||
},
|
||||
{
|
||||
"id": "s03",
|
||||
"type": "file",
|
||||
"file": "02 Wireframes/P4 Aufgaben und Dateien/WF-P4 Dateien/Screens/S03 Datei-Detail.md",
|
||||
"x": 1240,
|
||||
"y": 0,
|
||||
"width": 420,
|
||||
"height": 200
|
||||
},
|
||||
{
|
||||
"id": "s02",
|
||||
"type": "file",
|
||||
"file": "02 Wireframes/P4 Aufgaben und Dateien/WF-P4 Dateien/Screens/S02 Upload.md",
|
||||
"x": 0,
|
||||
"y": 560,
|
||||
"width": 420,
|
||||
"height": 200
|
||||
},
|
||||
{
|
||||
"id": "note-backlog",
|
||||
"type": "text",
|
||||
"text": "# Scope-Update (2026-07-08)\n\n**Teilen/Freigeben = v1** (Davids Entscheidung, validiert): intern an Personen/Gruppen (ansehen/bearbeiten) + öffentlicher Link. Übersicht-Preset »Mit mir geteilt«. → Change-Request an Dev.\n\n**Backlog v2:** Ordner, Versionen. v1: Tags + Filter statt Ordner.",
|
||||
"x": 1120,
|
||||
"y": 560,
|
||||
"width": 540,
|
||||
"height": 260
|
||||
},
|
||||
{
|
||||
"id": "note-embed",
|
||||
"type": "text",
|
||||
"text": "# Einbettung (nur Doku)\n\nVorgefilterte Datei-Sektion in jeder Detailseite — Einbau passiert je Feature-Paket (D-CRM, D-P8 …).",
|
||||
"x": 1720,
|
||||
"y": 560,
|
||||
"width": 420,
|
||||
"height": 260
|
||||
},
|
||||
{
|
||||
"id": "md-paket",
|
||||
"type": "file",
|
||||
"file": "02 Wireframes/P4 Aufgaben und Dateien/WF-P4 Dateien/WF-P4 Dateien.md",
|
||||
"x": -80,
|
||||
"y": -440,
|
||||
"width": 460,
|
||||
"height": 280
|
||||
},
|
||||
{
|
||||
"id": "m01",
|
||||
"type": "file",
|
||||
"file": "02 Wireframes/P4 Aufgaben und Dateien/WF-P4 Dateien/Screens/M01 Datei freigeben.md",
|
||||
"x": 480,
|
||||
"y": 560,
|
||||
"width": 420,
|
||||
"height": 200
|
||||
}
|
||||
],
|
||||
"edges": [
|
||||
{
|
||||
"id": "e-entry",
|
||||
"fromNode": "note-entry",
|
||||
"fromSide": "right",
|
||||
"toNode": "s01",
|
||||
"toSide": "left",
|
||||
"toEnd": "arrow",
|
||||
"styleAttributes": {
|
||||
"path": "dotted",
|
||||
"pathfindingMethod": "direct"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "e-open",
|
||||
"fromNode": "s01",
|
||||
"fromSide": "right",
|
||||
"toNode": "s03",
|
||||
"toSide": "left",
|
||||
"toEnd": "arrow",
|
||||
"label": "Datei öffnen",
|
||||
"styleAttributes": {
|
||||
"pathfindingMethod": "direct"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "e-upload",
|
||||
"fromNode": "s01",
|
||||
"fromSide": "bottom",
|
||||
"toNode": "s02",
|
||||
"toSide": "top",
|
||||
"toEnd": "arrow",
|
||||
"label": "Hochladen",
|
||||
"styleAttributes": {
|
||||
"pathfindingMethod": "direct"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "e-done",
|
||||
"fromNode": "s02",
|
||||
"fromSide": "right",
|
||||
"toNode": "s03",
|
||||
"toSide": "bottom",
|
||||
"toEnd": "arrow",
|
||||
"label": "fertige Datei öffnen",
|
||||
"styleAttributes": {
|
||||
"path": "long-dashed",
|
||||
"pathfindingMethod": "direct"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "e-share",
|
||||
"fromNode": "s01",
|
||||
"fromSide": "bottom",
|
||||
"toNode": "m01",
|
||||
"toSide": "top",
|
||||
"toEnd": "arrow",
|
||||
"label": "Freigeben (auch aus S03)",
|
||||
"styleAttributes": {
|
||||
"pathfindingMethod": "direct"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,131 @@
|
||||
---
|
||||
kind: wireframe-package
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-P4
|
||||
package: WF-P4 Dateien
|
||||
typ: Flow
|
||||
status: Validiert
|
||||
subframe: ""
|
||||
canvas: "WF-P4 Dateien.canvas"
|
||||
---
|
||||
|
||||
# WF-P4 Dateien
|
||||
|
||||
Status: Validiert (Screen-Liste)
|
||||
Subframe-Link: -
|
||||
Canvas: [Canvas](<WF-P4 Dateien.canvas>)
|
||||
Stand: 2026-07-08
|
||||
|
||||
---
|
||||
|
||||
## 1. Kurzfassung
|
||||
|
||||
Die Datei-Ablage: Übersicht (Tabelle/Kacheln), Upload mit Warteschlange, Datei-Detail mit Vorschau. Dateien hängen an Kontakten/Projekten/… mit Rollen-Label. Davids Zielbild: „einfacher Google-Drive-Klon" — Teil 1 davon ist v1, Teilen/Freigeben ist v2 (siehe Backlog).
|
||||
|
||||
---
|
||||
|
||||
## 2. Intent Check
|
||||
|
||||
| Frage | Antwort |
|
||||
|---|---|
|
||||
| Welches Ticket/Modul ist betroffen? | D-P4 (Teil Dateien), Dev-Pendant AK-P4a |
|
||||
| Was soll der Nutzer am Ende schaffen? | Dateien ablegen, wiederfinden (meine/alle), ansehen, an Datensätze hängen |
|
||||
| Flow, Screen, Zustand oder Doku? | 3 Screens + eingebettete Sektion |
|
||||
| Welche Planning-Quellen wurden geprüft? | `ticket-docs/D-P4.md`, SCREEN-MAP §2, HiveGrid Map |
|
||||
| Was ist sicher im Scope? | Übersicht, Upload, Detail, Tags, Verknüpfungen, Bulk-ZIP, HEIC→JPG |
|
||||
| Was ist sicher nicht im Scope? | **Teilen/Freigeben einzelner Dateien, Ordner, Versionen** (v1 nicht beauftragt — Backlog) |
|
||||
| Admin/Normalrolle-Unterschiede? | Filter/Presets über Verantwortlicher; Rechte via `files.*` |
|
||||
| Unsichere Annahmen? | Wie prominent der Kacheln-Modus als Default ist — Subframe-Bau |
|
||||
|
||||
---
|
||||
|
||||
## 3. Scope
|
||||
|
||||
| Punkt | Inhalt |
|
||||
|---|---|
|
||||
| Ticket/Modul | D-P4 · Dateien |
|
||||
| Nutzerrolle | Alle (Maximalansicht Admin) |
|
||||
| Startpunkt | Sidebar »Dateien« |
|
||||
| Ziel | Datei gefunden/abgelegt/angehängt |
|
||||
| Haupt-Archetyp | A2 Liste · A4 Dropzone · A3 Detail |
|
||||
| Bespoke-Anteil | Keiner |
|
||||
| Out of scope | Datei-Freigabe, Ordner, Versionen, Office-/Video-Vorschau, OCR (v2) |
|
||||
|
||||
---
|
||||
|
||||
## 4. Entscheidungen (validiert 2026-07-08)
|
||||
|
||||
| Entscheidung | Status | Notiz |
|
||||
|---|---|---|
|
||||
| Drei Frames: Übersicht / Upload-Seite / Detail | genommen | Ticket-treu; Dropzone als wiederverwendbarer Baustein |
|
||||
| Ansicht-Presets **»Meine Dateien« / »Alle Dateien«** | genommen | Davids „meine Ablage" — umgesetzt über den Verantwortlicher-Filter (im Ticket vorhanden), kein neues Datenmodell |
|
||||
| Tabelle/Kacheln-Umschalter | genommen | Ticket-Vorgabe |
|
||||
| **Teilen/Freigeben einzelner Dateien** | **genommen — v1 (Davids Entscheidung 2026-07-08)** | Scope-Erweiterung gegenüber Dev-Ticket (dort v2-Thema) → **Change-Request an Dev nötig** (Datenmodell + Rechte). UI: Screen M01 |
|
||||
| Teilen-Umfang v1: **intern (Personen/Gruppen, ansehen/bearbeiten) + optionaler öffentlicher Link** (kopieren/deaktivieren) | genommen | validiert 2026-07-08 |
|
||||
| Übersicht-Presets: **Meine Dateien / Mit mir geteilt / Alle** | genommen | »Mit mir geteilt« neu dazu (validiert 2026-07-08) |
|
||||
| Ordner-Struktur | Backlog (v2) | v1 arbeitet mit Tags + Filtern + Verknüpfungen statt Ordnern |
|
||||
| HEIC→JPG-Hinweis im Upload | genommen | Pflicht laut Ticket |
|
||||
|
||||
### Happy Path
|
||||
|
||||
1. Sidebar »Dateien« → Übersicht, Preset »Meine Dateien«.
|
||||
2. »Hochladen« → Upload-Seite, Dateien reinziehen, Fortschritt je Datei, HEIC-Hinweis.
|
||||
3. Datei anklicken → Detail mit großer Vorschau, Tags, Verknüpfungen (mit Rolle, z. B. »Angebot«), Notizen.
|
||||
4. Aus jeder Detailseite: vorgefilterte Datei-Sektion (dokumentiert, Einbau je Feature-Paket).
|
||||
|
||||
### Meldungs-/Error-States (validiert)
|
||||
|
||||
| Ereignis | UI-Form | Blockiert? | Bauen? | Copy/Notiz |
|
||||
|---|---|---|---|---|
|
||||
| Upload einer Datei fehlgeschlagen | Fehlerzeile in der Queue + »erneut versuchen« | nein | Nur dokumentieren | andere Dateien laufen weiter |
|
||||
| Datei vom Virenscan abgelehnt | Fehlerzeile mit Klartext | nein | Nur dokumentieren | »Aus Sicherheitsgründen abgelehnt« (Infra-Vorgabe, fail-closed) |
|
||||
| Vorschau nicht möglich (Dateityp) | Klartext + Download-Knopf | nein | Nur dokumentieren | `not_supported` |
|
||||
| Vorschau fehlgeschlagen | Hinweis + »Vorschau neu erzeugen« | nein | Nur dokumentieren | `failed` |
|
||||
| Leere Übersicht | Leer-Zustand + Hochladen-Knopf | nein | Nur dokumentieren | — |
|
||||
|
||||
---
|
||||
|
||||
## 7. Validierte Screen-Liste
|
||||
|
||||
| ID | Screen/Zustand | Typ | Umsetzung | Ort | Status |
|
||||
|---|---|---|---|---|---|
|
||||
| S01 | Datei-Übersicht | Screen | Bauen | `/files` | Validiert |
|
||||
| S02 | Upload (Dropzone + Warteschlange) | Screen | Bauen | `/files/upload` | Validiert |
|
||||
| S03 | Datei-Detail | Screen | Bauen | `/files/:id` | Validiert |
|
||||
| M01 | Datei freigeben | Modal | Bauen | aus S01 (Zeilen-Aktion) + S03 | Validiert |
|
||||
| D01 | Eingebettete Datei-Sektion (vorgefiltert) | Doku | Nur dokumentieren | in Detailseiten | Validiert |
|
||||
| D02–D05 | Fehler-Zustände (s. Tabelle) | Inline | Nur dokumentieren | in S02/S03 | Validiert |
|
||||
|
||||
---
|
||||
|
||||
## 8. Grid
|
||||
|
||||
```text
|
||||
Sidebar -> S01 -> S03 (Datei oeffnen)
|
||||
S01 -> S02 (Hochladen) -> zurueck zu S01
|
||||
S01/S03 -> M01 (Datei freigeben)
|
||||
Detailseiten: vorgefilterte Sektion (D01) -> S03
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 9. Screen-Pakete
|
||||
|
||||
- [[S01 Datei-Uebersicht]]
|
||||
- [[S02 Upload]]
|
||||
- [[S03 Datei-Detail]]
|
||||
- [[M01 Datei freigeben]]
|
||||
|
||||
---
|
||||
|
||||
## 10. Offene Fragen / Backlog
|
||||
|
||||
- **Change-Request an Dev:** Teilen/Freigeben einzelner Dateien wird v1 (Davids Entscheidung 2026-07-08) — Dev muss Datenmodell/Rechte vorziehen (bisher v2-Thema). Umfang validiert: intern (Personen/Gruppen, ansehen/bearbeiten) + öffentlicher Link. Beim Handoff in `ticket-docs/D-P4.md` »Davids Delta« + als CR formulieren.
|
||||
- **Backlog v2:** Ordner, Versionen
|
||||
- Kacheln oder Tabelle als Default? → Subframe-Bau
|
||||
|
||||
## Handoff-Check
|
||||
|
||||
- [x] Jeder Screen ist mit Umsetzung markiert.
|
||||
- [x] Meldungs-/Error-State-Matrix ist ausgefüllt.
|
||||
- [ ] Subframe-Link ist eingetragen. *(Subframe erst nach explizitem OK)*
|
||||
@@ -0,0 +1,41 @@
|
||||
---
|
||||
kind: screen
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-P5
|
||||
package: WF-P5 Integrationen
|
||||
id: M01
|
||||
screen: Assistent OAuth
|
||||
typ: Modal/Wizard
|
||||
umsetzung: Bauen
|
||||
status: Validiert
|
||||
route: "aus S02, Verbinden"
|
||||
subframe: ""
|
||||
---
|
||||
|
||||
# M01 — Assistent (OAuth-Weg)
|
||||
|
||||
## Ziel
|
||||
|
||||
Dienst per »Bei … anmelden«-Knopf verbinden — der bequeme Weg (z. B. Google, AirCall).
|
||||
|
||||
## Pattern / Archetyp
|
||||
|
||||
A5 mehrstufiger Wizard mit Fortschritts-Anzeige (echtes Modal: DialogLayout → Dialog → Dialog.Content).
|
||||
|
||||
## Schritte
|
||||
|
||||
1. **Voraussetzungen** — Klartext: was man braucht, was passiert
|
||||
2. **Anmelden** — Namens-Label vergeben + »Bei [Dienst] anmelden«-Knopf → externe Weiterleitung → zurück
|
||||
3. **Verbindungs-Test** — automatisch, mit ✓/✗ und Klartext
|
||||
4. **Erster Abgleich** (optional) — jetzt starten oder später
|
||||
|
||||
## Meldungsentscheidung
|
||||
|
||||
| Ereignis | UI-Form | Blockiert? | Umsetzung | Copy/Notiz |
|
||||
|---|---|---|---|---|
|
||||
| Anmeldung abgebrochen/fehlgeschlagen | Schritt-Fehler + erneut versuchen | ja (Schritt) | Nur dokumentieren | Klartext-Grund |
|
||||
| Verbindungs-Test fehlgeschlagen | Schritt-Fehler + zurück | ja (Schritt) | Nur dokumentieren | Lösungs-Hinweis |
|
||||
|
||||
## Subframe
|
||||
|
||||
- (erst nach explizitem OK)
|
||||
+45
@@ -0,0 +1,45 @@
|
||||
---
|
||||
kind: screen
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-P5
|
||||
package: WF-P5 Integrationen
|
||||
id: M02
|
||||
screen: Assistent API-Schluessel
|
||||
typ: Modal/Wizard
|
||||
umsetzung: Bauen
|
||||
status: Validiert
|
||||
route: "aus S02, Verbinden"
|
||||
subframe: ""
|
||||
---
|
||||
|
||||
# M02 — Assistent (API-Schlüssel-Weg)
|
||||
|
||||
## Ziel
|
||||
|
||||
Dienst per kopiertem Schlüssel verbinden (z. B. KWP, Dienste ohne OAuth).
|
||||
|
||||
## Pattern / Archetyp
|
||||
|
||||
A5 mehrstufiger Wizard — gleiche Schritte wie [[M01 Assistent OAuth]], nur der Zugangsdaten-Schritt unterscheidet sich.
|
||||
|
||||
## Schritte
|
||||
|
||||
1. **Voraussetzungen** — Klartext inkl. »wo finde ich den Schlüssel« (Kurz-Anleitung je App)
|
||||
2. **Zugangsdaten** — Namens-Label + **auto-generiertes Formular** aus dem App-Schema (Text-/Schlüssel-/Geheimnis-Felder mit Anzeigen-Toggle)
|
||||
3. **Verbindungs-Test** — automatisch, ✓/✗ mit Klartext
|
||||
4. **Erster Abgleich** (optional)
|
||||
|
||||
## Meldungsentscheidung
|
||||
|
||||
| Ereignis | UI-Form | Blockiert? | Umsetzung | Copy/Notiz |
|
||||
|---|---|---|---|---|
|
||||
| Pflichtfeld leer / Format falsch | Inline-Validierung | ja (Feld) | Nur dokumentieren | — |
|
||||
| Verbindungs-Test fehlgeschlagen | Schritt-Fehler + zurück | ja (Schritt) | Nur dokumentieren | »Schlüssel prüfen« |
|
||||
|
||||
## Subframe
|
||||
|
||||
- (erst nach explizitem OK)
|
||||
|
||||
## Notizen
|
||||
|
||||
- Das Formular kommt aus dem `connection_schema` der jeweiligen App — wir designen die Feld-Typen, nicht die konkreten Felder.
|
||||
+43
@@ -0,0 +1,43 @@
|
||||
---
|
||||
kind: screen
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-P5
|
||||
package: WF-P5 Integrationen
|
||||
id: M03
|
||||
screen: Trennen-Bestaetigung
|
||||
typ: Modal (mehrstufig)
|
||||
umsetzung: Bauen
|
||||
status: Validiert
|
||||
route: "aus S02, Trennen"
|
||||
subframe: ""
|
||||
---
|
||||
|
||||
# M03 — Trennen-Bestätigung
|
||||
|
||||
## Ziel
|
||||
|
||||
Verbindung bewusst und informiert trennen — nichts geht versehentlich kaputt.
|
||||
|
||||
## Pattern / Archetyp
|
||||
|
||||
A5 Bestätigungs-Dialog, mehrstufig.
|
||||
|
||||
## Inhalt
|
||||
|
||||
- Klartext, was passiert: »Beim Trennen werden alle Abgleich-Jobs gestoppt. Bereits übertragene Daten bleiben erhalten. Die Verbindung wird als getrennt markiert (kein Löschen).«
|
||||
- Bestätigung (zweiter Schritt / bewusste Aktion)
|
||||
|
||||
## Aktionen
|
||||
|
||||
- »Trennen« → Card wird grau (getrennt), Toast
|
||||
- Abbrechen
|
||||
|
||||
## Meldungsentscheidung
|
||||
|
||||
| Ereignis | UI-Form | Blockiert? | Umsetzung | Copy/Notiz |
|
||||
|---|---|---|---|---|
|
||||
| Trennen fehlgeschlagen | Toast mit Klartext | nein | Wiederverwenden | erneut versuchen |
|
||||
|
||||
## Subframe
|
||||
|
||||
- (erst nach explizitem OK)
|
||||
@@ -0,0 +1,52 @@
|
||||
---
|
||||
kind: screen
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-P5
|
||||
package: WF-P5 Integrationen
|
||||
id: S01
|
||||
screen: App-Katalog
|
||||
typ: Katalog
|
||||
umsetzung: Bauen
|
||||
status: Validiert
|
||||
route: "/admin/integrations"
|
||||
subframe: ""
|
||||
---
|
||||
|
||||
# S01 — App-Katalog
|
||||
|
||||
## Ziel
|
||||
|
||||
Auf einen Blick sehen, welche Dienste es gibt und was verbunden ist — der „App-Store" von HiveGrid.
|
||||
|
||||
## Pattern / Archetyp
|
||||
|
||||
A6 — Karten-Grid, nach Kategorie gruppiert.
|
||||
|
||||
## Daten
|
||||
|
||||
- Kategorien: ERP · Kommunikation · Kalender · Signatur · Payment · KI/MCP
|
||||
- Je App-Karte: Logo · Name · Kurzbeschreibung · Status-Ampel (grün läuft / gelb hakt / rot kaputt / grau nicht verbunden) · Anzahl aktiver Verbindungen
|
||||
- Suche + Filter (Kategorie / Status)
|
||||
|
||||
## Aktionen
|
||||
|
||||
- App-Karte öffnen → [[S02 App-Seite]]
|
||||
|
||||
## Zustände
|
||||
|
||||
| Zustand | Beschreibung | Umsetzung |
|
||||
|---|---|---|
|
||||
| Filter ohne Treffer | Leer-Zustand + zurücksetzen | Nur dokumentieren |
|
||||
| Laden / Fehler / Kein Zugriff | A7 | Wiederverwenden |
|
||||
|
||||
## Permissions / Gates
|
||||
|
||||
`integrations.read`.
|
||||
|
||||
## Subframe
|
||||
|
||||
- (erst nach explizitem OK)
|
||||
|
||||
## Notizen
|
||||
|
||||
- Offen: kommende Apps als Teaser mit Schloss zeigen? (analog Abo-Gating)
|
||||
@@ -0,0 +1,54 @@
|
||||
---
|
||||
kind: screen
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-P5
|
||||
package: WF-P5 Integrationen
|
||||
id: S02
|
||||
screen: App-Seite
|
||||
typ: Verwaltung
|
||||
umsetzung: Bauen
|
||||
status: Validiert
|
||||
route: "/admin/integrations/:app"
|
||||
subframe: ""
|
||||
---
|
||||
|
||||
# S02 — App-Seite (Verbindungs-Verwaltung)
|
||||
|
||||
## Ziel
|
||||
|
||||
Alle Verbindungen einer App verwalten und ihren Zustand in Klartext verstehen.
|
||||
|
||||
## Pattern / Archetyp
|
||||
|
||||
A6 mit **wiederverwendbarer Connection-Card** (das Muster, das P14/P15/P16 später in ihren Settings nutzen).
|
||||
|
||||
## Daten
|
||||
|
||||
- Kopf: App-Logo, Beschreibung, Doku-Link
|
||||
- Je Verbindung eine **Connection-Card**: Namens-Label (z. B. »Büro«) · Status-Ampel · Klartext-Status (»Zugang abgelaufen — neu verbinden«) · letzter Abgleich
|
||||
- Mehrere Verbindungen pro App möglich
|
||||
- Letzte Läufe kompakt (Datum, Klartext-Summary) + »Alle Läufe anzeigen« → [[S03 Sync-Verlauf]]
|
||||
|
||||
## Aktionen
|
||||
|
||||
- »Verbinden« → [[M01 Assistent OAuth]] oder [[M02 Assistent API-Schluessel]] (je nach App)
|
||||
- Je Card: Neu abgleichen (mit Klartext-Fortschritt) · Neu verbinden (bei gelb/rot) · Trennen → [[M03 Trennen-Bestaetigung]]
|
||||
|
||||
## Banner / Hinweise
|
||||
|
||||
- Gelb/Rot/Schema geändert → Klartext-Banner mit Lösungs-Knopf
|
||||
|
||||
## Zustände
|
||||
|
||||
| Zustand | Beschreibung | Umsetzung |
|
||||
|---|---|---|
|
||||
| Keine Verbindung | Leer-Zustand + »Verbinden«-Knopf | Nur dokumentieren |
|
||||
| Laden / Fehler / Kein Zugriff | A7 | Wiederverwenden |
|
||||
|
||||
## Permissions / Gates
|
||||
|
||||
`integrations.connect/.disconnect/.manual_sync` — Knöpfe rechte-abhängig.
|
||||
|
||||
## Subframe
|
||||
|
||||
- (erst nach explizitem OK)
|
||||
@@ -0,0 +1,44 @@
|
||||
---
|
||||
kind: screen
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-P5
|
||||
package: WF-P5 Integrationen
|
||||
id: S03
|
||||
screen: Sync-Verlauf
|
||||
typ: Liste
|
||||
umsetzung: Bauen
|
||||
status: Validiert
|
||||
route: "/admin/integrations/:app/syncs"
|
||||
subframe: ""
|
||||
---
|
||||
|
||||
# S03 — Sync-Verlauf
|
||||
|
||||
## Ziel
|
||||
|
||||
Nachvollziehen, was wann übertragen wurde — jede Zeile in Klartext. **Eigene Seite (Davids Entscheidung, kein Drawer).**
|
||||
|
||||
## Pattern / Archetyp
|
||||
|
||||
A2 Liste.
|
||||
|
||||
## Daten
|
||||
|
||||
- Je Lauf: Datum · Art (holen/senden/Webhook/manuell) · Status · Zähler (gesamt/ok/fehlgeschlagen) · **Klartext-Summary** (»14 Aufträge geholt, 2 fehlgeschlagen«)
|
||||
- Filter: Datum, Status, Art
|
||||
|
||||
## Aktionen
|
||||
|
||||
- Lauf öffnen → [[S04 Lauf-Detail]]
|
||||
- Manueller Abgleich anstoßen
|
||||
|
||||
## Zustände
|
||||
|
||||
| Zustand | Beschreibung | Umsetzung |
|
||||
|---|---|---|
|
||||
| Leer | »Noch keine Abgleiche gelaufen« | Nur dokumentieren |
|
||||
| Laden / Fehler / Kein Zugriff | A7 (`integrations.view_logs`) | Wiederverwenden |
|
||||
|
||||
## Subframe
|
||||
|
||||
- (erst nach explizitem OK)
|
||||
@@ -0,0 +1,44 @@
|
||||
---
|
||||
kind: screen
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-P5
|
||||
package: WF-P5 Integrationen
|
||||
id: S04
|
||||
screen: Lauf-Detail
|
||||
typ: Detail
|
||||
umsetzung: Bauen
|
||||
status: Validiert
|
||||
route: "/admin/integrations/:app/syncs/:id"
|
||||
subframe: ""
|
||||
---
|
||||
|
||||
# S04 — Lauf-Detail
|
||||
|
||||
## Ziel
|
||||
|
||||
Bei Problemen genau sehen, welcher Datensatz warum gescheitert ist. **Eigene Seite (Davids Entscheidung).**
|
||||
|
||||
## Pattern / Archetyp
|
||||
|
||||
A3 Detail mit Tabelle + Log.
|
||||
|
||||
## Daten
|
||||
|
||||
- Kopf: Lauf-Infos (Datum, Art, Status, Klartext-Summary)
|
||||
- Datensatz-Tabelle: HiveGrid-Objekt ↔ externe ID · Vorgang (angelegt/aktualisiert/gelöscht) · Status · **Klartext-Fehler** je gescheitertem Datensatz
|
||||
- Log-Einträge mit Schweregrad (Info/Warnung/Fehler)
|
||||
|
||||
## Aktionen
|
||||
|
||||
- Verknüpftes Objekt öffnen (Sprung zur Detailseite)
|
||||
- Zurück zum Verlauf
|
||||
|
||||
## Zustände
|
||||
|
||||
| Zustand | Beschreibung | Umsetzung |
|
||||
|---|---|---|
|
||||
| Laden / Fehler / Kein Zugriff | A7 | Wiederverwenden |
|
||||
|
||||
## Subframe
|
||||
|
||||
- (erst nach explizitem OK)
|
||||
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"nodes":[
|
||||
{"id":"md-paket","type":"file","file":"02 Wireframes/P5 Integrationen/WF-P5 Integrationen/WF-P5 Integrationen.md","x":-80,"y":-440,"width":460,"height":280},
|
||||
{"id":"group-main","type":"group","x":-80,"y":-100,"width":1720,"height":420,"label":"Hauptflow"},
|
||||
{"id":"group-sync","type":"group","x":1800,"y":-100,"width":1120,"height":420,"label":"Sync-Verlauf (eigene Seiten)"},
|
||||
{"id":"group-wizard","type":"group","x":-80,"y":460,"width":1720,"height":420,"label":"Einrichtungs-Assistent und Trennen"},
|
||||
{"id":"group-notes","type":"group","x":1800,"y":460,"width":1120,"height":420,"label":"Regeln"},
|
||||
{"id":"note-entry","type":"text","text":"# Einstieg\n\nSidebar → Integrationen (`/admin/integrations`).\n\nNur mit Recht `integrations.read`.","x":0,"y":0,"width":360,"height":200},
|
||||
{"id":"s01","type":"file","file":"02 Wireframes/P5 Integrationen/WF-P5 Integrationen/Screens/S01 App-Katalog.md","x":560,"y":0,"width":420,"height":200},
|
||||
{"id":"s02","type":"file","file":"02 Wireframes/P5 Integrationen/WF-P5 Integrationen/Screens/S02 App-Seite.md","x":1180,"y":0,"width":420,"height":200},
|
||||
{"id":"s03","type":"file","file":"02 Wireframes/P5 Integrationen/WF-P5 Integrationen/Screens/S03 Sync-Verlauf.md","x":1840,"y":0,"width":420,"height":200},
|
||||
{"id":"s04","type":"file","file":"02 Wireframes/P5 Integrationen/WF-P5 Integrationen/Screens/S04 Lauf-Detail.md","x":2460,"y":0,"width":420,"height":200},
|
||||
{"id":"m01","type":"file","file":"02 Wireframes/P5 Integrationen/WF-P5 Integrationen/Screens/M01 Assistent OAuth.md","x":40,"y":560,"width":420,"height":200},
|
||||
{"id":"m02","type":"file","file":"02 Wireframes/P5 Integrationen/WF-P5 Integrationen/Screens/M02 Assistent API-Schluessel.md","x":620,"y":560,"width":420,"height":200},
|
||||
{"id":"m03","type":"file","file":"02 Wireframes/P5 Integrationen/WF-P5 Integrationen/Screens/M03 Trennen-Bestaetigung.md","x":1200,"y":560,"width":420,"height":200},
|
||||
{"id":"note-framework","type":"text","text":"# Wiederverwendung\n\nConnection-Card + Assistent + Verlauf sind das **Gerüst für alle App-Verbindungen**: E-Mail (P14), Telefonie (P15), Kalender/Signatur (P16) nutzen dieselben Bausteine in ihren Settings.","x":1840,"y":560,"width":520,"height":260},
|
||||
{"id":"note-banner","type":"text","text":"# Zustände (nur Doku)\n\nAmpel: grün läuft · gelb hakt · rot kaputt · grau getrennt.\n\nGelb/Rot/Schema geändert → Klartext-Banner mit Lösungs-Knopf. Trennen = Status »getrennt«, kein Löschen.","x":2420,"y":560,"width":460,"height":260}
|
||||
],
|
||||
"edges":[
|
||||
{"id":"e-entry","fromNode":"note-entry","fromSide":"right","toNode":"s01","toSide":"left","toEnd":"arrow","styleAttributes":{"path":"dotted","pathfindingMethod":"direct"}},
|
||||
{"id":"e-app","fromNode":"s01","fromSide":"right","toNode":"s02","toSide":"left","toEnd":"arrow","label":"App öffnen","styleAttributes":{"pathfindingMethod":"direct"}},
|
||||
{"id":"e-verlauf","fromNode":"s02","fromSide":"right","toNode":"s03","toSide":"left","toEnd":"arrow","label":"alle Läufe anzeigen","styleAttributes":{"pathfindingMethod":"direct"}},
|
||||
{"id":"e-lauf","fromNode":"s03","fromSide":"right","toNode":"s04","toSide":"left","toEnd":"arrow","label":"Lauf öffnen","styleAttributes":{"pathfindingMethod":"direct"}},
|
||||
{"id":"e-oauth","fromNode":"s02","fromSide":"bottom","toNode":"m01","toSide":"top","toEnd":"arrow","label":"Verbinden (OAuth)","styleAttributes":{"pathfindingMethod":"direct"}},
|
||||
{"id":"e-key","fromNode":"s02","fromSide":"bottom","toNode":"m02","toSide":"top","toEnd":"arrow","label":"Verbinden (API-Schlüssel)","styleAttributes":{"pathfindingMethod":"direct"}},
|
||||
{"id":"e-trennen","fromNode":"s02","fromSide":"bottom","toNode":"m03","toSide":"top","toEnd":"arrow","label":"Trennen","styleAttributes":{"pathfindingMethod":"direct"}}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,132 @@
|
||||
---
|
||||
kind: wireframe-package
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-P5
|
||||
package: WF-P5 Integrationen
|
||||
typ: Flow
|
||||
status: Validiert
|
||||
subframe: ""
|
||||
canvas: "WF-P5 Integrationen.canvas"
|
||||
---
|
||||
|
||||
# WF-P5 Integrationen
|
||||
|
||||
Status: Validiert (Screen-Liste)
|
||||
Subframe-Link: -
|
||||
Canvas: [Canvas](<WF-P5 Integrationen.canvas>)
|
||||
Stand: 2026-07-08
|
||||
|
||||
---
|
||||
|
||||
## 1. Kurzfassung
|
||||
|
||||
Der „App-Store" von HiveGrid: Katalog externer Dienste, Verbindungs-Verwaltung je App (mehrere Verbindungen möglich), Einrichtungs-Assistent (OAuth **und** API-Schlüssel) und Sync-Verlauf mit Klartext. **Das wiederverwendbare Verbindungs-Gerüst** — E-Mail (P14), Telefonie (P15), Kalender/Signatur (P16) nutzen später genau diese Bausteine.
|
||||
|
||||
---
|
||||
|
||||
## 2. Intent Check
|
||||
|
||||
| Frage | Antwort |
|
||||
|---|---|
|
||||
| Welches Ticket/Modul ist betroffen? | D-P5, Dev-Pendant R-P5 (Apps-Engine/Adapter-Layer) |
|
||||
| Was soll der Nutzer am Ende schaffen? | Externen Dienst anschließen, Zustand verstehen (Ampel + Klartext), Probleme selbst lösen (neu verbinden), nachvollziehen, was übertragen wurde |
|
||||
| Flow, Screen, Zustand oder Doku? | Screens + Wizard-Modals |
|
||||
| Welche Planning-Quellen wurden geprüft? | `ticket-docs/D-P5.md`, SCREEN-MAP §2, HiveGrid Map |
|
||||
| Was ist sicher im Scope? | Katalog, App-Seite, Assistent (2 Varianten), Trennen-Dialog, Sync-Verlauf + Lauf-Detail |
|
||||
| Was ist sicher nicht im Scope? | App-spezifische Einrichtungs-Details (→ P14/P15/P16), KWP-Sonder-UI (v2), Windows-Client-Flow (kein UI) |
|
||||
| Admin/Normalrolle-Unterschiede? | Rechte `integrations.read/.connect/.disconnect/.manual_sync/.view_logs/.admin` |
|
||||
| Unsichere Annahmen? | Ob der Katalog auch nicht verfügbare/kommende Apps zeigt (Teaser) — offene Frage |
|
||||
|
||||
---
|
||||
|
||||
## 3. Scope
|
||||
|
||||
| Punkt | Inhalt |
|
||||
|---|---|
|
||||
| Ticket/Modul | D-P5 · Integrationen |
|
||||
| Nutzerrolle | Admin (Maximalansicht) |
|
||||
| Startpunkt | Sidebar »Integrationen« (`/admin/integrations`) |
|
||||
| Ziel | Verbindung läuft grün; Läufe nachvollziehbar |
|
||||
| Haupt-Archetyp | A6 Settings/Connection-Card · A5 Wizard · A2 Liste |
|
||||
| Bespoke-Anteil | Keiner |
|
||||
| Out of scope | App-spezifische Setups, KWP-UI (v2) |
|
||||
|
||||
---
|
||||
|
||||
## 4. Entscheidungen (validiert 2026-07-08)
|
||||
|
||||
| Entscheidung | Status | Notiz |
|
||||
|---|---|---|
|
||||
| Ein Paket für das ganze Framework | genommen | Katalog + App-Seite + Assistent + Verlauf |
|
||||
| **Sync-Verlauf als eigene Seiten** (Liste + Lauf-Detail) | genommen | Davids Entscheidung — KEIN Drawer-Muster wie beim Audit; App-Seite zeigt nur die letzten Läufe + »alle anzeigen« |
|
||||
| Assistent: beide Zugangsdaten-Varianten als eigene Frames | genommen | M01 OAuth-Weg · M02 API-Schlüssel-Weg (Formular auto-generiert aus App-Schema) |
|
||||
| Trennen mehrstufig bestätigt, kein Hard-Delete | genommen | Status wird »getrennt«, Jobs stoppen, Klartext-Warnung |
|
||||
| Mehrere Verbindungen je App mit Namens-Label | genommen | z. B. drei Postfächer »Büro«/»Max«/»Info« |
|
||||
| KI-Kategorie bleibt im Katalog | genommen | Andockpunkt für MCP (Pivot AD-26), passt zum Sidebar-Punkt »MCP« |
|
||||
|
||||
### Happy Path
|
||||
|
||||
1. Sidebar »Integrationen« → Katalog mit App-Karten nach Kategorie, Ampel je App.
|
||||
2. App öffnen → Verbindungs-Karten; »Verbinden« startet den Assistenten.
|
||||
3. Assistent: Voraussetzungen → Zugangsdaten (OAuth-Knopf ODER Schlüssel einfügen) → Verbindungs-Test ✓ → optional erster Abgleich.
|
||||
4. Später: Ampel gelb/rot → Klartext-Banner mit Lösungs-Knopf (»neu verbinden«); Sync-Verlauf zeigt jeden Lauf in Klartext, Lauf-Detail jeden Datensatz.
|
||||
|
||||
### Meldungs-/Error-States (validiert)
|
||||
|
||||
| Ereignis | UI-Form | Blockiert? | Bauen? | Copy/Notiz |
|
||||
|---|---|---|---|---|
|
||||
| Verbindung hakt / kaputt / Schema geändert | Klartext-Banner + Lösungs-Knopf | nein | Nur dokumentieren | auf App-Seite + Katalog-Ampel |
|
||||
| Verbindungs-Test im Assistent fehlgeschlagen | Schritt-Fehler mit Klartext + zurück | ja (Schritt) | Nur dokumentieren | im Wizard |
|
||||
| Lauf fehlgeschlagen | rote Zeile + Fehl-Detail je Datensatz | nein | Nur dokumentieren | in S03/S04 |
|
||||
| Kein Zugriff | A7 »kein Zugriff« | ja | Wiederverwenden | `integrations.read` |
|
||||
| Katalog-Filter ohne Treffer | Leer-Zustand | nein | Nur dokumentieren | Filter zurücksetzen |
|
||||
|
||||
---
|
||||
|
||||
## 7. Validierte Screen-Liste
|
||||
|
||||
| ID | Screen/Zustand | Typ | Umsetzung | Ort | Status |
|
||||
|---|---|---|---|---|---|
|
||||
| S01 | App-Katalog | Screen | Bauen | `/admin/integrations` | Validiert |
|
||||
| S02 | App-Seite (Verbindungs-Verwaltung) | Screen | Bauen | `/admin/integrations/:app` | Validiert |
|
||||
| S03 | Sync-Verlauf (eigene Seite) | Screen | Bauen | `…/syncs` | Validiert |
|
||||
| S04 | Lauf-Detail (eigene Seite) | Screen | Bauen | `…/syncs/:id` | Validiert |
|
||||
| M01 | Assistent — OAuth-Weg | Modal/Wizard | Bauen | aus S02 | Validiert |
|
||||
| M02 | Assistent — API-Schlüssel-Weg | Modal/Wizard | Bauen | aus S02 | Validiert |
|
||||
| M03 | Trennen-Bestätigung | Modal (mehrstufig) | Bauen | aus S02 | Validiert |
|
||||
| D01–D05 | Banner/Fehler-Zustände (s. Tabelle) | Inline/Banner | Nur dokumentieren | — | Validiert |
|
||||
|
||||
---
|
||||
|
||||
## 8. Grid
|
||||
|
||||
```text
|
||||
Sidebar -> S01 -> S02 -> S03 -> S04
|
||||
S02 -> M01 (OAuth) / M02 (API-Schluessel) / M03 (Trennen)
|
||||
Connection-Card + Assistent = wiederverwendbar fuer P14/P15/P16
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 9. Screen-Pakete
|
||||
|
||||
- [[S01 App-Katalog]]
|
||||
- [[S02 App-Seite]]
|
||||
- [[S03 Sync-Verlauf]]
|
||||
- [[S04 Lauf-Detail]]
|
||||
- [[M01 Assistent OAuth]]
|
||||
- [[M02 Assistent API-Schluessel]]
|
||||
- [[M03 Trennen-Bestaetigung]]
|
||||
|
||||
---
|
||||
|
||||
## 10. Offene Fragen
|
||||
|
||||
- Zeigt der Katalog auch noch nicht verfügbare/kommende Apps als Teaser (mit Schloss, analog Abo-Gating)? → David/Dev
|
||||
- Genaue App-Liste v1 (welche Karten sind zum Start drin) → Dev
|
||||
|
||||
## Handoff-Check
|
||||
|
||||
- [x] Jeder Screen ist mit Umsetzung markiert.
|
||||
- [x] Meldungs-/Error-State-Matrix ist ausgefüllt.
|
||||
- [ ] Subframe-Link ist eingetragen. *(Subframe erst nach explizitem OK)*
|
||||
@@ -35,6 +35,11 @@ Diese Datei ist der erste Ort, um zu sehen:
|
||||
| WF-P2 Admin RBAC | D-P2 | Auth/Admin | In Subframe | [MD](<P2 Auth/WF-P2 Admin RBAC/WF-P2 Admin RBAC.md>) | [Canvas](<P2 Auth/WF-P2 Admin RBAC/WF-P2 Admin RBAC.canvas>) | [Subframe](<https://app.subframe.com/f023064a5ca0/flow/42c54a17-9c08-4db3-9306-1449f5b874e4/edit>) | Review | Neue Seiten erstellt; Permission-Bundles als Arbeitsgeruest; Gruppen/Reassign raus |
|
||||
| WF-P2 Konto loeschen | D-P2 | Auth/Settings | Backlog | [MD](<P2 Auth/WF-P2 Konto loeschen/WF-P2 Konto loeschen.md>) | [Canvas](<P2 Auth/WF-P2 Konto loeschen/WF-P2 Konto loeschen.canvas>) | [Subframe](<https://app.subframe.com/f023064a5ca0/flow/6fec2ec6-eab5-4e25-9c9a-90da47a5047a/edit>) | Backlog | Gesamter Account/Konto-Loeschflow geparkt; bestehende Screens nur Referenz |
|
||||
| WF-P2 Workspace loeschen | D-P2 | Auth/Settings | Backlog | [MD](<P2 Auth/WF-P2 Workspace loeschen/WF-P2 Workspace loeschen.md>) | [Canvas](<P2 Auth/WF-P2 Workspace loeschen/WF-P2 Workspace loeschen.canvas>) | - | Backlog | Eigener Workflow; erst planen, wenn Workspace Settings gebaut/validiert sind |
|
||||
| WF-P3 Benachrichtigungen | D-P3 | Querschnitt | Validiert | [MD](<P3 Querschnitt/WF-P3 Benachrichtigungen/WF-P3 Benachrichtigungen.md>) | [Canvas](<P3 Querschnitt/WF-P3 Benachrichtigungen/WF-P3 Benachrichtigungen.canvas>) | - | Subframe nach explizitem OK | Screens validiert 2026-07-08; Drawer wird Muster fuer Topbar-Drawer |
|
||||
| WF-P3 Audit Log | D-P3 | Querschnitt | Validiert | [MD](<P3 Querschnitt/WF-P3 Audit Log/WF-P3 Audit Log.md>) | [Canvas](<P3 Querschnitt/WF-P3 Audit Log/WF-P3 Audit Log.canvas>) | - | Subframe nach explizitem OK | Screens validiert 2026-07-08; Export als Reiter; M03 = wiederverwendbares Verlauf-Muster |
|
||||
| WF-P4 Aufgaben | D-P4 | Aufgaben & Dateien | Validiert | [MD](<P4 Aufgaben und Dateien/WF-P4 Aufgaben/WF-P4 Aufgaben.md>) | [Canvas](<P4 Aufgaben und Dateien/WF-P4 Aufgaben/WF-P4 Aufgaben.canvas>) | - | Subframe nach explizitem OK | Screens validiert 2026-07-08; inkl. Davids Delta: Topbar-Button + Aufgaben-Drawer |
|
||||
| WF-P4 Dateien | D-P4 | Aufgaben & Dateien | Validiert | [MD](<P4 Aufgaben und Dateien/WF-P4 Dateien/WF-P4 Dateien.md>) | [Canvas](<P4 Aufgaben und Dateien/WF-P4 Dateien/WF-P4 Dateien.canvas>) | - | Subframe nach explizitem OK | Screens validiert 2026-07-08; Teilen/Ordner/Versionen sichtbar als Backlog v2 |
|
||||
| WF-P5 Integrationen | D-P5 | Integrationen | Validiert | [MD](<P5 Integrationen/WF-P5 Integrationen/WF-P5 Integrationen.md>) | [Canvas](<P5 Integrationen/WF-P5 Integrationen/WF-P5 Integrationen.canvas>) | - | Subframe nach explizitem OK | Screens validiert 2026-07-08; Sync-Verlauf als eigene Seiten; Connection-Card = Muster fuer P14/P15/P16 |
|
||||
|
||||
---
|
||||
|
||||
@@ -100,6 +105,31 @@ Diese Datei ist der erste Ort, um zu sehen:
|
||||
| M01 | Loeschung anfragen | WF-P2 Konto loeschen | Modal | Spaeter | Backlog | von zukuenftigem Settings-Einstieg | [MD](<P2 Auth/WF-P2 Konto loeschen/Screens/M01 Loeschung anfragen.md>) | [Subframe](<https://app.subframe.com/f023064a5ca0/design/e8454b77-b5bc-4c80-b035-bde4318793e7/edit>) | [Canvas](<P2 Auth/WF-P2 Konto loeschen/WF-P2 Konto loeschen.canvas>) |
|
||||
| D01 | Anfrage gesendet | WF-P2 Konto loeschen | Toast/Status | Nur dokumentieren | Backlog | nach M01 | [MD](<P2 Auth/WF-P2 Konto loeschen/Screens/S01 Settings Workspaces Loeschbereich.md>) | - | [Canvas](<P2 Auth/WF-P2 Konto loeschen/WF-P2 Konto loeschen.canvas>) |
|
||||
| D02 | Keine Berechtigung | WF-P2 Konto loeschen | Permission State | Nur dokumentieren | Backlog | in S01 | [MD](<P2 Auth/WF-P2 Konto loeschen/Screens/S01 Settings Workspaces Loeschbereich.md>) | - | [Canvas](<P2 Auth/WF-P2 Konto loeschen/WF-P2 Konto loeschen.canvas>) |
|
||||
| S01 | Glocken-Drawer | WF-P3 Benachrichtigungen | Drawer | Bauen | Validiert | Topbar, global | [MD](<P3 Querschnitt/WF-P3 Benachrichtigungen/Screens/S01 Glocken-Drawer.md>) | - | [Canvas](<P3 Querschnitt/WF-P3 Benachrichtigungen/WF-P3 Benachrichtigungen.canvas>) |
|
||||
| S02 | Benachrichtigungen Seite | WF-P3 Benachrichtigungen | Liste | Bauen | Validiert | `/notifications` | [MD](<P3 Querschnitt/WF-P3 Benachrichtigungen/Screens/S02 Benachrichtigungen Seite.md>) | - | [Canvas](<P3 Querschnitt/WF-P3 Benachrichtigungen/WF-P3 Benachrichtigungen.canvas>) |
|
||||
| S03 | Benachrichtigungen Einstellungen | WF-P3 Benachrichtigungen | Settings | Bauen | Validiert | `/settings/notifications` | [MD](<P3 Querschnitt/WF-P3 Benachrichtigungen/Screens/S03 Benachrichtigungen Einstellungen.md>) | - | [Canvas](<P3 Querschnitt/WF-P3 Benachrichtigungen/WF-P3 Benachrichtigungen.canvas>) |
|
||||
| D01 | Bounce-Banner (E-Mails kommen nicht an) | WF-P3 Benachrichtigungen | Banner | Nur dokumentieren | Validiert | in S01/S02/S03 | [MD](<P3 Querschnitt/WF-P3 Benachrichtigungen/WF-P3 Benachrichtigungen.md>) | - | - |
|
||||
| S01 | Protokoll-Ansicht | WF-P3 Audit Log | Admin Liste | Bauen | Validiert | `/admin/audit` | [MD](<P3 Querschnitt/WF-P3 Audit Log/Screens/S01 Protokoll-Ansicht.md>) | - | [Canvas](<P3 Querschnitt/WF-P3 Audit Log/WF-P3 Audit Log.canvas>) |
|
||||
| S02 | Exporte (Reiter) | WF-P3 Audit Log | Admin Liste | Bauen | Validiert | `/admin/audit`, Reiter | [MD](<P3 Querschnitt/WF-P3 Audit Log/Screens/S02 Exporte.md>) | - | [Canvas](<P3 Querschnitt/WF-P3 Audit Log/WF-P3 Audit Log.canvas>) |
|
||||
| M01 | Detail-Drawer (Vorher/Nachher) | WF-P3 Audit Log | Drawer | Bauen | Validiert | aus S01 | [MD](<P3 Querschnitt/WF-P3 Audit Log/Screens/M01 Detail-Drawer.md>) | - | [Canvas](<P3 Querschnitt/WF-P3 Audit Log/WF-P3 Audit Log.canvas>) |
|
||||
| M02 | Export anlegen | WF-P3 Audit Log | Modal | Bauen | Validiert | aus S01/S02 | [MD](<P3 Querschnitt/WF-P3 Audit Log/Screens/M02 Export anlegen.md>) | - | [Canvas](<P3 Querschnitt/WF-P3 Audit Log/WF-P3 Audit Log.canvas>) |
|
||||
| M03 | Objekt-Verlauf-Drawer (wiederverwendbar) | WF-P3 Audit Log | Drawer | Bauen | Validiert | in jeder Detailseite | [MD](<P3 Querschnitt/WF-P3 Audit Log/Screens/M03 Objekt-Verlauf-Drawer.md>) | - | [Canvas](<P3 Querschnitt/WF-P3 Audit Log/WF-P3 Audit Log.canvas>) |
|
||||
| S01 | Aufgaben-Liste | WF-P4 Aufgaben | Liste | Bauen | Validiert | `/tasks` | [MD](<P4 Aufgaben und Dateien/WF-P4 Aufgaben/Screens/S01 Aufgaben-Liste.md>) | - | [Canvas](<P4 Aufgaben und Dateien/WF-P4 Aufgaben/WF-P4 Aufgaben.canvas>) |
|
||||
| S02 | Aufgaben-Detail | WF-P4 Aufgaben | Detail | Bauen | Validiert | `/tasks/:id` | [MD](<P4 Aufgaben und Dateien/WF-P4 Aufgaben/Screens/S02 Aufgaben-Detail.md>) | - | [Canvas](<P4 Aufgaben und Dateien/WF-P4 Aufgaben/WF-P4 Aufgaben.canvas>) |
|
||||
| S03 | Aufgaben-Drawer (Topbar) | WF-P4 Aufgaben | Drawer | Bauen | Validiert | Topbar, global | [MD](<P4 Aufgaben und Dateien/WF-P4 Aufgaben/Screens/S03 Aufgaben-Drawer.md>) | - | [Canvas](<P4 Aufgaben und Dateien/WF-P4 Aufgaben/WF-P4 Aufgaben.canvas>) |
|
||||
| M01 | Aufgabe anlegen | WF-P4 Aufgaben | Modal | Bauen | Validiert | aus S01/S03/Detailseiten | [MD](<P4 Aufgaben und Dateien/WF-P4 Aufgaben/Screens/M01 Aufgabe anlegen.md>) | - | [Canvas](<P4 Aufgaben und Dateien/WF-P4 Aufgaben/WF-P4 Aufgaben.canvas>) |
|
||||
| V01 | Eingebettete Kompakt-Variante | WF-P4 Aufgaben | Variante | Bauen | Validiert | Reiter in Detailseiten | [MD](<P4 Aufgaben und Dateien/WF-P4 Aufgaben/Screens/V01 Eingebettete Kompakt-Variante.md>) | - | [Canvas](<P4 Aufgaben und Dateien/WF-P4 Aufgaben/WF-P4 Aufgaben.canvas>) |
|
||||
| S01 | Datei-Uebersicht | WF-P4 Dateien | Liste | Bauen | Validiert | `/files` | [MD](<P4 Aufgaben und Dateien/WF-P4 Dateien/Screens/S01 Datei-Uebersicht.md>) | - | [Canvas](<P4 Aufgaben und Dateien/WF-P4 Dateien/WF-P4 Dateien.canvas>) |
|
||||
| S02 | Upload | WF-P4 Dateien | Form/Dropzone | Bauen | Validiert | `/files/upload` | [MD](<P4 Aufgaben und Dateien/WF-P4 Dateien/Screens/S02 Upload.md>) | - | [Canvas](<P4 Aufgaben und Dateien/WF-P4 Dateien/WF-P4 Dateien.canvas>) |
|
||||
| S03 | Datei-Detail | WF-P4 Dateien | Detail | Bauen | Validiert | `/files/:id` | [MD](<P4 Aufgaben und Dateien/WF-P4 Dateien/Screens/S03 Datei-Detail.md>) | - | [Canvas](<P4 Aufgaben und Dateien/WF-P4 Dateien/WF-P4 Dateien.canvas>) |
|
||||
| M01 | Datei freigeben | WF-P4 Dateien | Modal | Bauen | Validiert | aus S01/S03 | [MD](<P4 Aufgaben und Dateien/WF-P4 Dateien/Screens/M01 Datei freigeben.md>) | - | [Canvas](<P4 Aufgaben und Dateien/WF-P4 Dateien/WF-P4 Dateien.canvas>) |
|
||||
| S01 | App-Katalog | WF-P5 Integrationen | Katalog | Bauen | Validiert | `/admin/integrations` | [MD](<P5 Integrationen/WF-P5 Integrationen/Screens/S01 App-Katalog.md>) | - | [Canvas](<P5 Integrationen/WF-P5 Integrationen/WF-P5 Integrationen.canvas>) |
|
||||
| S02 | App-Seite (Verbindungs-Verwaltung) | WF-P5 Integrationen | Verwaltung | Bauen | Validiert | `/admin/integrations/:app` | [MD](<P5 Integrationen/WF-P5 Integrationen/Screens/S02 App-Seite.md>) | - | [Canvas](<P5 Integrationen/WF-P5 Integrationen/WF-P5 Integrationen.canvas>) |
|
||||
| S03 | Sync-Verlauf | WF-P5 Integrationen | Liste | Bauen | Validiert | `.../syncs` | [MD](<P5 Integrationen/WF-P5 Integrationen/Screens/S03 Sync-Verlauf.md>) | - | [Canvas](<P5 Integrationen/WF-P5 Integrationen/WF-P5 Integrationen.canvas>) |
|
||||
| S04 | Lauf-Detail | WF-P5 Integrationen | Detail | Bauen | Validiert | `.../syncs/:id` | [MD](<P5 Integrationen/WF-P5 Integrationen/Screens/S04 Lauf-Detail.md>) | - | [Canvas](<P5 Integrationen/WF-P5 Integrationen/WF-P5 Integrationen.canvas>) |
|
||||
| M01 | Assistent OAuth | WF-P5 Integrationen | Modal/Wizard | Bauen | Validiert | aus S02 | [MD](<P5 Integrationen/WF-P5 Integrationen/Screens/M01 Assistent OAuth.md>) | - | [Canvas](<P5 Integrationen/WF-P5 Integrationen/WF-P5 Integrationen.canvas>) |
|
||||
| M02 | Assistent API-Schluessel | WF-P5 Integrationen | Modal/Wizard | Bauen | Validiert | aus S02 | [MD](<P5 Integrationen/WF-P5 Integrationen/Screens/M02 Assistent API-Schluessel.md>) | - | [Canvas](<P5 Integrationen/WF-P5 Integrationen/WF-P5 Integrationen.canvas>) |
|
||||
| M03 | Trennen-Bestaetigung | WF-P5 Integrationen | Modal | Bauen | Validiert | aus S02 | [MD](<P5 Integrationen/WF-P5 Integrationen/Screens/M03 Trennen-Bestaetigung.md>) | - | [Canvas](<P5 Integrationen/WF-P5 Integrationen/WF-P5 Integrationen.canvas>) |
|
||||
|
||||
---
|
||||
|
||||
@@ -155,6 +185,20 @@ Diese Datei ist der erste Ort, um zu sehen:
|
||||
| WF-P2 Konto loeschen | Gesamter Account/Konto-Loeschflow | Backlog | Account/Konto-Loeschen wird geparkt und nicht als aktueller v1-Flow weitergebaut. | Konto loeschen und Workspace loeschen sind zwei getrennte Workflows |
|
||||
| WF-P2 Workspace loeschen | Eigener Workspace-Loeschflow | Backlog | Workspace/Tenant-Loeschen wird als eigener Workflow vorgemerkt. | Startpunkt spaeter in Workspace Settings; Settings sind noch nicht gebaut |
|
||||
| WF-P2 Konto/Workspace loeschen | Voller Loesch-/Export-Wizard | Backlog | Erklaerung, Datenexport, Reauth, Confirm Phrase, Countdown und operative Bearbeitung spaeter klaeren. | Kein mehrstufiger Wizard jetzt |
|
||||
| WF-P3 Benachrichtigungen | Drawer-Umfang | Genommen | Drawer enthaelt Link zur vollen Seite, Aktualisieren und Wegklicken einzelner Eintraege; Klick springt typ-abhaengig zur Sache. | Validiert 2026-07-08 |
|
||||
| WF-P3 Benachrichtigungen | Wegklicken-Verhalten | Offen | Endgueltig loeschen oder archivieren? | Frage an Dev; UI zeigt erstmal nur Entfernen aus der Liste |
|
||||
| WF-P3 Benachrichtigungen | Drawer-Zahnrad zu Einstellungen | Offen | Direkteinstieg vom Drawer zu den Benachrichtigungs-Einstellungen? | Klein; beim Subframe-Bau entscheiden |
|
||||
| WF-P3 Audit Log | Export-Ort | Genommen | Export-Uebersicht als Reiter im Protokoll-Screen (kein eigener Menuepunkt). | Validiert 2026-07-08 |
|
||||
| WF-P3 Audit Log | Sortierung/Filter | Genommen | Nach Mitarbeiter, Zeitraum, Bereich (Modul) und Aenderungs-Art sortier-/filterbar; Quick-Filter per Klick auf Tabellenwerte. | Davids Ergaenzung 2026-07-08 |
|
||||
| WF-P3 Audit Log | Drawer-Komponente geteilt? | Offen | Teilen Detail-Drawer (M01) und Objekt-Verlauf (M03) eine Komponente? | Beim Subframe-Bau klaeren |
|
||||
| WF-P4 Aufgaben | Topbar-Button + Aufgaben-Drawer | Genommen | Schnellzugriff auf eigene Aufgaben von ueberall; Davids Delta ueber das Ticket hinaus. | In D-P4 Davids Delta nachtragen |
|
||||
| WF-P4 Aufgaben | Kompakt-Variante als eigener Frame | Genommen | Einbett-Muster steht, bevor D-CRM es braucht. | V01 |
|
||||
| WF-P4 Dateien | Presets Meine/Alle Dateien | Genommen | Davids "meine Ablage" ueber den Verantwortlicher-Filter. | Kein neues Datenmodell |
|
||||
| WF-P4 Dateien | Teilen/Freigeben einzelner Dateien | Genommen (v1) | Davids Entscheidung 2026-07-08; Umfang: intern (Personen/Gruppen, ansehen/bearbeiten) + oeffentlicher Link; Preset "Mit mir geteilt". | Change-Request an Dev noetig; Screen M01 |
|
||||
| WF-P4 Dateien | Ordner, Versionen | Backlog | Bleiben v2. | - |
|
||||
| WF-P5 Integrationen | Sync-Verlauf-Ort | Genommen | Verlauf und Lauf-Detail als eigene Seiten (kein Drawer-Muster). | Davids Entscheidung 2026-07-08 |
|
||||
| WF-P5 Integrationen | Assistent-Varianten | Genommen | OAuth-Weg und API-Schluessel-Weg als eigene Frames. | Formular auto-generiert aus App-Schema |
|
||||
| WF-P5 Integrationen | Kommende Apps als Teaser? | Offen | Zeigt der Katalog nicht verfuegbare Apps mit Schloss (analog Abo-Gating)? | David/Dev |
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in new issue
Block a user