diff --git a/02 Wireframes/P3 Querschnitt/WF-P3 Audit Log/Screens/M01 Detail-Drawer.md b/02 Wireframes/P3 Querschnitt/WF-P3 Audit Log/Screens/M01 Detail-Drawer.md new file mode 100644 index 00000000..c5aff50a --- /dev/null +++ b/02 Wireframes/P3 Querschnitt/WF-P3 Audit Log/Screens/M01 Detail-Drawer.md @@ -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. diff --git a/02 Wireframes/P3 Querschnitt/WF-P3 Audit Log/Screens/M02 Export anlegen.md b/02 Wireframes/P3 Querschnitt/WF-P3 Audit Log/Screens/M02 Export anlegen.md new file mode 100644 index 00000000..a436b741 --- /dev/null +++ b/02 Wireframes/P3 Querschnitt/WF-P3 Audit Log/Screens/M02 Export anlegen.md @@ -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. diff --git a/02 Wireframes/P3 Querschnitt/WF-P3 Audit Log/Screens/M03 Objekt-Verlauf-Drawer.md b/02 Wireframes/P3 Querschnitt/WF-P3 Audit Log/Screens/M03 Objekt-Verlauf-Drawer.md new file mode 100644 index 00000000..cbae3953 --- /dev/null +++ b/02 Wireframes/P3 Querschnitt/WF-P3 Audit Log/Screens/M03 Objekt-Verlauf-Drawer.md @@ -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. diff --git a/02 Wireframes/P3 Querschnitt/WF-P3 Audit Log/Screens/S01 Protokoll-Ansicht.md b/02 Wireframes/P3 Querschnitt/WF-P3 Audit Log/Screens/S01 Protokoll-Ansicht.md new file mode 100644 index 00000000..39d70440 --- /dev/null +++ b/02 Wireframes/P3 Querschnitt/WF-P3 Audit Log/Screens/S01 Protokoll-Ansicht.md @@ -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. diff --git a/02 Wireframes/P3 Querschnitt/WF-P3 Audit Log/Screens/S02 Exporte.md b/02 Wireframes/P3 Querschnitt/WF-P3 Audit Log/Screens/S02 Exporte.md new file mode 100644 index 00000000..da1cfcfd --- /dev/null +++ b/02 Wireframes/P3 Querschnitt/WF-P3 Audit Log/Screens/S02 Exporte.md @@ -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". diff --git a/02 Wireframes/P3 Querschnitt/WF-P3 Audit Log/WF-P3 Audit Log.canvas b/02 Wireframes/P3 Querschnitt/WF-P3 Audit Log/WF-P3 Audit Log.canvas new file mode 100644 index 00000000..20f27878 --- /dev/null +++ b/02 Wireframes/P3 Querschnitt/WF-P3 Audit Log/WF-P3 Audit Log.canvas @@ -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" + } + } + ] +} \ No newline at end of file diff --git a/02 Wireframes/P3 Querschnitt/WF-P3 Audit Log/WF-P3 Audit Log.md b/02 Wireframes/P3 Querschnitt/WF-P3 Audit Log/WF-P3 Audit Log.md new file mode 100644 index 00000000..ae95fb50 --- /dev/null +++ b/02 Wireframes/P3 Querschnitt/WF-P3 Audit Log/WF-P3 Audit Log.md @@ -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]() +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)* diff --git a/02 Wireframes/P3 Querschnitt/WF-P3 Benachrichtigungen/Screens/S01 Glocken-Drawer.md b/02 Wireframes/P3 Querschnitt/WF-P3 Benachrichtigungen/Screens/S01 Glocken-Drawer.md new file mode 100644 index 00000000..42953d81 --- /dev/null +++ b/02 Wireframes/P3 Querschnitt/WF-P3 Benachrichtigungen/Screens/S01 Glocken-Drawer.md @@ -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? diff --git a/02 Wireframes/P3 Querschnitt/WF-P3 Benachrichtigungen/Screens/S02 Benachrichtigungen Seite.md b/02 Wireframes/P3 Querschnitt/WF-P3 Benachrichtigungen/Screens/S02 Benachrichtigungen Seite.md new file mode 100644 index 00000000..3dcecede --- /dev/null +++ b/02 Wireframes/P3 Querschnitt/WF-P3 Benachrichtigungen/Screens/S02 Benachrichtigungen Seite.md @@ -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). diff --git a/02 Wireframes/P3 Querschnitt/WF-P3 Benachrichtigungen/Screens/S03 Benachrichtigungen Einstellungen.md b/02 Wireframes/P3 Querschnitt/WF-P3 Benachrichtigungen/Screens/S03 Benachrichtigungen Einstellungen.md new file mode 100644 index 00000000..b7fbc31a --- /dev/null +++ b/02 Wireframes/P3 Querschnitt/WF-P3 Benachrichtigungen/Screens/S03 Benachrichtigungen Einstellungen.md @@ -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). diff --git a/02 Wireframes/P3 Querschnitt/WF-P3 Benachrichtigungen/WF-P3 Benachrichtigungen.canvas b/02 Wireframes/P3 Querschnitt/WF-P3 Benachrichtigungen/WF-P3 Benachrichtigungen.canvas new file mode 100644 index 00000000..36932d96 --- /dev/null +++ b/02 Wireframes/P3 Querschnitt/WF-P3 Benachrichtigungen/WF-P3 Benachrichtigungen.canvas @@ -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" + } + } + ] +} \ No newline at end of file diff --git a/02 Wireframes/P3 Querschnitt/WF-P3 Benachrichtigungen/WF-P3 Benachrichtigungen.md b/02 Wireframes/P3 Querschnitt/WF-P3 Benachrichtigungen/WF-P3 Benachrichtigungen.md new file mode 100644 index 00000000..aa14d7d4 --- /dev/null +++ b/02 Wireframes/P3 Querschnitt/WF-P3 Benachrichtigungen/WF-P3 Benachrichtigungen.md @@ -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]() +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)* diff --git a/02 Wireframes/P4 Aufgaben und Dateien/WF-P4 Aufgaben/Screens/M01 Aufgabe anlegen.md b/02 Wireframes/P4 Aufgaben und Dateien/WF-P4 Aufgaben/Screens/M01 Aufgabe anlegen.md new file mode 100644 index 00000000..a02dd974 --- /dev/null +++ b/02 Wireframes/P4 Aufgaben und Dateien/WF-P4 Aufgaben/Screens/M01 Aufgabe anlegen.md @@ -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) diff --git a/02 Wireframes/P4 Aufgaben und Dateien/WF-P4 Aufgaben/Screens/S01 Aufgaben-Liste.md b/02 Wireframes/P4 Aufgaben und Dateien/WF-P4 Aufgaben/Screens/S01 Aufgaben-Liste.md new file mode 100644 index 00000000..0d876b6b --- /dev/null +++ b/02 Wireframes/P4 Aufgaben und Dateien/WF-P4 Aufgaben/Screens/S01 Aufgaben-Liste.md @@ -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) diff --git a/02 Wireframes/P4 Aufgaben und Dateien/WF-P4 Aufgaben/Screens/S02 Aufgaben-Detail.md b/02 Wireframes/P4 Aufgaben und Dateien/WF-P4 Aufgaben/Screens/S02 Aufgaben-Detail.md new file mode 100644 index 00000000..3adcecdf --- /dev/null +++ b/02 Wireframes/P4 Aufgaben und Dateien/WF-P4 Aufgaben/Screens/S02 Aufgaben-Detail.md @@ -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) diff --git a/02 Wireframes/P4 Aufgaben und Dateien/WF-P4 Aufgaben/Screens/S03 Aufgaben-Drawer.md b/02 Wireframes/P4 Aufgaben und Dateien/WF-P4 Aufgaben/Screens/S03 Aufgaben-Drawer.md new file mode 100644 index 00000000..357e74c6 --- /dev/null +++ b/02 Wireframes/P4 Aufgaben und Dateien/WF-P4 Aufgaben/Screens/S03 Aufgaben-Drawer.md @@ -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 diff --git a/02 Wireframes/P4 Aufgaben und Dateien/WF-P4 Aufgaben/Screens/V01 Eingebettete Kompakt-Variante.md b/02 Wireframes/P4 Aufgaben und Dateien/WF-P4 Aufgaben/Screens/V01 Eingebettete Kompakt-Variante.md new file mode 100644 index 00000000..0d6fda96 --- /dev/null +++ b/02 Wireframes/P4 Aufgaben und Dateien/WF-P4 Aufgaben/Screens/V01 Eingebettete Kompakt-Variante.md @@ -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. diff --git a/02 Wireframes/P4 Aufgaben und Dateien/WF-P4 Aufgaben/WF-P4 Aufgaben.canvas b/02 Wireframes/P4 Aufgaben und Dateien/WF-P4 Aufgaben/WF-P4 Aufgaben.canvas new file mode 100644 index 00000000..1a2f7ef4 --- /dev/null +++ b/02 Wireframes/P4 Aufgaben und Dateien/WF-P4 Aufgaben/WF-P4 Aufgaben.canvas @@ -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" + } + } + ] +} \ No newline at end of file diff --git a/02 Wireframes/P4 Aufgaben und Dateien/WF-P4 Aufgaben/WF-P4 Aufgaben.md b/02 Wireframes/P4 Aufgaben und Dateien/WF-P4 Aufgaben/WF-P4 Aufgaben.md new file mode 100644 index 00000000..f91dbd83 --- /dev/null +++ b/02 Wireframes/P4 Aufgaben und Dateien/WF-P4 Aufgaben/WF-P4 Aufgaben.md @@ -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]() +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)* diff --git a/02 Wireframes/P4 Aufgaben und Dateien/WF-P4 Dateien/Screens/M01 Datei freigeben.md b/02 Wireframes/P4 Aufgaben und Dateien/WF-P4 Dateien/Screens/M01 Datei freigeben.md new file mode 100644 index 00000000..c8f37d8a --- /dev/null +++ b/02 Wireframes/P4 Aufgaben und Dateien/WF-P4 Dateien/Screens/M01 Datei freigeben.md @@ -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. diff --git a/02 Wireframes/P4 Aufgaben und Dateien/WF-P4 Dateien/Screens/S01 Datei-Uebersicht.md b/02 Wireframes/P4 Aufgaben und Dateien/WF-P4 Dateien/Screens/S01 Datei-Uebersicht.md new file mode 100644 index 00000000..568c2237 --- /dev/null +++ b/02 Wireframes/P4 Aufgaben und Dateien/WF-P4 Dateien/Screens/S01 Datei-Uebersicht.md @@ -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). diff --git a/02 Wireframes/P4 Aufgaben und Dateien/WF-P4 Dateien/Screens/S02 Upload.md b/02 Wireframes/P4 Aufgaben und Dateien/WF-P4 Dateien/Screens/S02 Upload.md new file mode 100644 index 00000000..b4fe368d --- /dev/null +++ b/02 Wireframes/P4 Aufgaben und Dateien/WF-P4 Dateien/Screens/S02 Upload.md @@ -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) diff --git a/02 Wireframes/P4 Aufgaben und Dateien/WF-P4 Dateien/Screens/S03 Datei-Detail.md b/02 Wireframes/P4 Aufgaben und Dateien/WF-P4 Dateien/Screens/S03 Datei-Detail.md new file mode 100644 index 00000000..fd34ead3 --- /dev/null +++ b/02 Wireframes/P4 Aufgaben und Dateien/WF-P4 Dateien/Screens/S03 Datei-Detail.md @@ -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. diff --git a/02 Wireframes/P4 Aufgaben und Dateien/WF-P4 Dateien/WF-P4 Dateien.canvas b/02 Wireframes/P4 Aufgaben und Dateien/WF-P4 Dateien/WF-P4 Dateien.canvas new file mode 100644 index 00000000..a763d398 --- /dev/null +++ b/02 Wireframes/P4 Aufgaben und Dateien/WF-P4 Dateien/WF-P4 Dateien.canvas @@ -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" + } + } + ] +} \ No newline at end of file diff --git a/02 Wireframes/P4 Aufgaben und Dateien/WF-P4 Dateien/WF-P4 Dateien.md b/02 Wireframes/P4 Aufgaben und Dateien/WF-P4 Dateien/WF-P4 Dateien.md new file mode 100644 index 00000000..2fd864bd --- /dev/null +++ b/02 Wireframes/P4 Aufgaben und Dateien/WF-P4 Dateien/WF-P4 Dateien.md @@ -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]() +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)* diff --git a/02 Wireframes/P5 Integrationen/WF-P5 Integrationen/Screens/M01 Assistent OAuth.md b/02 Wireframes/P5 Integrationen/WF-P5 Integrationen/Screens/M01 Assistent OAuth.md new file mode 100644 index 00000000..8f48b82d --- /dev/null +++ b/02 Wireframes/P5 Integrationen/WF-P5 Integrationen/Screens/M01 Assistent OAuth.md @@ -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) diff --git a/02 Wireframes/P5 Integrationen/WF-P5 Integrationen/Screens/M02 Assistent API-Schluessel.md b/02 Wireframes/P5 Integrationen/WF-P5 Integrationen/Screens/M02 Assistent API-Schluessel.md new file mode 100644 index 00000000..9e6bf8df --- /dev/null +++ b/02 Wireframes/P5 Integrationen/WF-P5 Integrationen/Screens/M02 Assistent API-Schluessel.md @@ -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. diff --git a/02 Wireframes/P5 Integrationen/WF-P5 Integrationen/Screens/M03 Trennen-Bestaetigung.md b/02 Wireframes/P5 Integrationen/WF-P5 Integrationen/Screens/M03 Trennen-Bestaetigung.md new file mode 100644 index 00000000..9ead31dd --- /dev/null +++ b/02 Wireframes/P5 Integrationen/WF-P5 Integrationen/Screens/M03 Trennen-Bestaetigung.md @@ -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) diff --git a/02 Wireframes/P5 Integrationen/WF-P5 Integrationen/Screens/S01 App-Katalog.md b/02 Wireframes/P5 Integrationen/WF-P5 Integrationen/Screens/S01 App-Katalog.md new file mode 100644 index 00000000..0fd81de9 --- /dev/null +++ b/02 Wireframes/P5 Integrationen/WF-P5 Integrationen/Screens/S01 App-Katalog.md @@ -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) diff --git a/02 Wireframes/P5 Integrationen/WF-P5 Integrationen/Screens/S02 App-Seite.md b/02 Wireframes/P5 Integrationen/WF-P5 Integrationen/Screens/S02 App-Seite.md new file mode 100644 index 00000000..cf3fbf96 --- /dev/null +++ b/02 Wireframes/P5 Integrationen/WF-P5 Integrationen/Screens/S02 App-Seite.md @@ -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) diff --git a/02 Wireframes/P5 Integrationen/WF-P5 Integrationen/Screens/S03 Sync-Verlauf.md b/02 Wireframes/P5 Integrationen/WF-P5 Integrationen/Screens/S03 Sync-Verlauf.md new file mode 100644 index 00000000..9b7e881d --- /dev/null +++ b/02 Wireframes/P5 Integrationen/WF-P5 Integrationen/Screens/S03 Sync-Verlauf.md @@ -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) diff --git a/02 Wireframes/P5 Integrationen/WF-P5 Integrationen/Screens/S04 Lauf-Detail.md b/02 Wireframes/P5 Integrationen/WF-P5 Integrationen/Screens/S04 Lauf-Detail.md new file mode 100644 index 00000000..53fee2bc --- /dev/null +++ b/02 Wireframes/P5 Integrationen/WF-P5 Integrationen/Screens/S04 Lauf-Detail.md @@ -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) diff --git a/02 Wireframes/P5 Integrationen/WF-P5 Integrationen/WF-P5 Integrationen.canvas b/02 Wireframes/P5 Integrationen/WF-P5 Integrationen/WF-P5 Integrationen.canvas new file mode 100644 index 00000000..4662fd7a --- /dev/null +++ b/02 Wireframes/P5 Integrationen/WF-P5 Integrationen/WF-P5 Integrationen.canvas @@ -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"}} + ] +} diff --git a/02 Wireframes/P5 Integrationen/WF-P5 Integrationen/WF-P5 Integrationen.md b/02 Wireframes/P5 Integrationen/WF-P5 Integrationen/WF-P5 Integrationen.md new file mode 100644 index 00000000..a510ca21 --- /dev/null +++ b/02 Wireframes/P5 Integrationen/WF-P5 Integrationen/WF-P5 Integrationen.md @@ -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]() +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)* diff --git a/02 Wireframes/Screen Paket Tracker.md b/02 Wireframes/Screen Paket Tracker.md index c68c3b1f..428ee89a 100644 --- a/02 Wireframes/Screen Paket Tracker.md +++ b/02 Wireframes/Screen Paket Tracker.md @@ -35,6 +35,11 @@ Diese Datei ist der erste Ort, um zu sehen: | WF-P2 Admin RBAC | D-P2 | Auth/Admin | In Subframe | [MD]() | [Canvas]() | [Subframe]() | Review | Neue Seiten erstellt; Permission-Bundles als Arbeitsgeruest; Gruppen/Reassign raus | | WF-P2 Konto loeschen | D-P2 | Auth/Settings | Backlog | [MD]() | [Canvas]() | [Subframe]() | Backlog | Gesamter Account/Konto-Loeschflow geparkt; bestehende Screens nur Referenz | | WF-P2 Workspace loeschen | D-P2 | Auth/Settings | Backlog | [MD]() | [Canvas]() | - | Backlog | Eigener Workflow; erst planen, wenn Workspace Settings gebaut/validiert sind | +| WF-P3 Benachrichtigungen | D-P3 | Querschnitt | Validiert | [MD]() | [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]() | [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]() | [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]() | [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]() | [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]() | [Subframe]() | [Canvas]() | | D01 | Anfrage gesendet | WF-P2 Konto loeschen | Toast/Status | Nur dokumentieren | Backlog | nach M01 | [MD]() | - | [Canvas]() | | D02 | Keine Berechtigung | WF-P2 Konto loeschen | Permission State | Nur dokumentieren | Backlog | in S01 | [MD]() | - | [Canvas]() | +| S01 | Glocken-Drawer | WF-P3 Benachrichtigungen | Drawer | Bauen | Validiert | Topbar, global | [MD]() | - | [Canvas]() | +| S02 | Benachrichtigungen Seite | WF-P3 Benachrichtigungen | Liste | Bauen | Validiert | `/notifications` | [MD]() | - | [Canvas]() | +| S03 | Benachrichtigungen Einstellungen | WF-P3 Benachrichtigungen | Settings | Bauen | Validiert | `/settings/notifications` | [MD]() | - | [Canvas]() | +| D01 | Bounce-Banner (E-Mails kommen nicht an) | WF-P3 Benachrichtigungen | Banner | Nur dokumentieren | Validiert | in S01/S02/S03 | [MD]() | - | - | +| S01 | Protokoll-Ansicht | WF-P3 Audit Log | Admin Liste | Bauen | Validiert | `/admin/audit` | [MD]() | - | [Canvas]() | +| S02 | Exporte (Reiter) | WF-P3 Audit Log | Admin Liste | Bauen | Validiert | `/admin/audit`, Reiter | [MD]() | - | [Canvas]() | +| M01 | Detail-Drawer (Vorher/Nachher) | WF-P3 Audit Log | Drawer | Bauen | Validiert | aus S01 | [MD]() | - | [Canvas]() | +| M02 | Export anlegen | WF-P3 Audit Log | Modal | Bauen | Validiert | aus S01/S02 | [MD]() | - | [Canvas]() | +| M03 | Objekt-Verlauf-Drawer (wiederverwendbar) | WF-P3 Audit Log | Drawer | Bauen | Validiert | in jeder Detailseite | [MD]() | - | [Canvas]() | +| S01 | Aufgaben-Liste | WF-P4 Aufgaben | Liste | Bauen | Validiert | `/tasks` | [MD]() | - | [Canvas]() | +| S02 | Aufgaben-Detail | WF-P4 Aufgaben | Detail | Bauen | Validiert | `/tasks/:id` | [MD]() | - | [Canvas]() | +| S03 | Aufgaben-Drawer (Topbar) | WF-P4 Aufgaben | Drawer | Bauen | Validiert | Topbar, global | [MD]() | - | [Canvas]() | +| M01 | Aufgabe anlegen | WF-P4 Aufgaben | Modal | Bauen | Validiert | aus S01/S03/Detailseiten | [MD]() | - | [Canvas]() | +| V01 | Eingebettete Kompakt-Variante | WF-P4 Aufgaben | Variante | Bauen | Validiert | Reiter in Detailseiten | [MD]() | - | [Canvas]() | +| S01 | Datei-Uebersicht | WF-P4 Dateien | Liste | Bauen | Validiert | `/files` | [MD]() | - | [Canvas]() | +| S02 | Upload | WF-P4 Dateien | Form/Dropzone | Bauen | Validiert | `/files/upload` | [MD]() | - | [Canvas]() | +| S03 | Datei-Detail | WF-P4 Dateien | Detail | Bauen | Validiert | `/files/:id` | [MD]() | - | [Canvas]() | +| M01 | Datei freigeben | WF-P4 Dateien | Modal | Bauen | Validiert | aus S01/S03 | [MD]() | - | [Canvas]() | +| S01 | App-Katalog | WF-P5 Integrationen | Katalog | Bauen | Validiert | `/admin/integrations` | [MD]() | - | [Canvas]() | +| S02 | App-Seite (Verbindungs-Verwaltung) | WF-P5 Integrationen | Verwaltung | Bauen | Validiert | `/admin/integrations/:app` | [MD]() | - | [Canvas]() | +| S03 | Sync-Verlauf | WF-P5 Integrationen | Liste | Bauen | Validiert | `.../syncs` | [MD]() | - | [Canvas]() | +| S04 | Lauf-Detail | WF-P5 Integrationen | Detail | Bauen | Validiert | `.../syncs/:id` | [MD]() | - | [Canvas]() | +| M01 | Assistent OAuth | WF-P5 Integrationen | Modal/Wizard | Bauen | Validiert | aus S02 | [MD]() | - | [Canvas]() | +| M02 | Assistent API-Schluessel | WF-P5 Integrationen | Modal/Wizard | Bauen | Validiert | aus S02 | [MD]() | - | [Canvas]() | +| M03 | Trennen-Bestaetigung | WF-P5 Integrationen | Modal | Bauen | Validiert | aus S02 | [MD]() | - | [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 | --- diff --git a/05 HiveGrid Map/HiveGrid Map.canvas b/05 HiveGrid Map/HiveGrid Map.canvas index ea65399d..08bb5bd4 100644 --- a/05 HiveGrid Map/HiveGrid Map.canvas +++ b/05 HiveGrid Map/HiveGrid Map.canvas @@ -1,691 +1,290 @@ { - "nodes": [ - { - "id": "d5d3db1765287eef", - "type": "text", - "x": 0, - "y": -460, - "width": 1140, - "height": 380, - "text": "# 🗺 HiveGrid Feature Map (v1)\nJede Karte = **ein Feature**. Das Ticket steht nur als Referenz dran. Übergreifende Sachen (App-Gerüst, UI-Baukasten, Feinschliff) liegen unter **Basis**.\n\n**Farben:**\n🟢 fertig/validiert · 🔴 Sonder-UI, wird von Hand designt (Tage) · 🔵 wird aus dem UI-Baukasten zusammengesteckt (Stunden) · 🟠 Mischung aus beidem · 🟣 Basis · 🟡 Feinschliff\n\n**Marker:** 🌐 öffentlich sichtbar (höchster Anspruch) · 📱 Monteur-Handy, teils offline\n\n**Pfeile:** orange = Hauptkette (Anfrage → Auftrag → Geld) · grau = klare Querverbindung. Gilt etwas für **alle** Features (Automationen, Aufgaben/Dateien, Benachrichtigungen, Verbindungs-Gerüst), steht es als Text auf der Karte statt als Pfeil.\n\nAbhaklisten & Details: [[HiveGrid Map]]" - }, - { - "id": "41b8d85d3bb8d47d", - "type": "group", - "x": 0, - "y": 0, - "width": 1540, - "height": 480, - "label": "BASIS — gilt für alle Features", - "color": "6" - }, - { - "id": "b3cad562971d30a5", - "type": "text", - "x": 40, - "y": 80, - "width": 460, - "height": 360, - "text": "## App-Gerüst (Sidebar, Topbar & Design)\n**Ticket:** `D-D0a` · **Status:** ⬜ offen\n**Wo:** überall in der App\n\n**Was drin ist:** Sidebar (Module ein-/ausblendbar je Abo, Handy-Variante 📱), Topbar (Workspace-Wechsler, Suche, Glocke, Profil-Menü), Breadcrumb, Warn-Banner (z. B. »Zahlung offen«), Erfolgs-/Fehlermeldungen\n\n**Warum wichtig:** Der Rahmen, in dem jedes Feature steckt — inkl. Farben, Schriften, Hell/Dunkel. **Ohne das geht fast nichts anderes.**", - "color": "6" - }, - { - "id": "d53e7ea48a9b1e6c", - "type": "text", - "x": 540, - "y": 80, - "width": 460, - "height": 360, - "text": "## UI-Baukasten (Listen, Formulare, Modals …)\n**Ticket:** `D-D0b` · **Status:** ✅ validiert\n**Wo:** überall in der App\n\n**Was drin ist:** Fertige Bausteine: Listen mit Filter, Detail-Seiten, Formular-Felder (12 Typen), Dialoge/Wizards, Settings-Seiten, Leer-/Lade-/Fehler-Zustände + Kleinteile (Buttons, Tags, Charts, Unterschriften-Feld …)\n\n**Warum wichtig:** Einmal designen, überall wiederverwenden. Layout-Standards liegen in `04 Standards`. ✅ Bereits erledigt.", - "color": "4" - }, - { - "id": "c02969250252a3ab", - "type": "text", - "x": 1040, - "y": 80, - "width": 460, - "height": 360, - "text": "## Feinschliff vor Launch\n**Ticket:** `D-POLISH` · **Status:** ⬜ offen\n**Wo:** 🌐 alles öffentlich Sichtbare\n\n**Was drin ist:** Letzter Polier-Durchgang: Terminbuchungs-Seite, öffentliche Formulare, Marketing-Mails · danach Screenshots als »So muss es aussehen«-Referenz einfrieren\n\n**Warum wichtig:** Kommt ganz am Ende, direkt vor dem Launch. Braucht Terminbuchung + Dashboard fertig.", - "color": "3" - }, - { - "id": "7a26f88c260892eb", - "type": "group", - "x": 1700, - "y": 0, - "width": 540, - "height": 480, - "label": "WEBSITE 🌐", - "color": "3" - }, - { - "id": "ce5632682989a6ca", - "type": "text", - "x": 1740, - "y": 80, - "width": 460, - "height": 360, - "text": "## Website (Landing & Demo-Anfrage)\n**Ticket:** `D-WEB` · **Status:** ⬜ offen\n**Wo:** 🌐 hivegrid.de\n\n**Was drin ist:** Startseite, Features-Seite, Preise-Teaser, Demo-Anfrage-Formular\n\n**Warum wichtig:** Der erste Eindruck nach außen. Farben/Schriften sind dieselben wie in der App. Demo-Anfragen landen im Lead-Eingang.", - "color": "2" - }, - { - "id": "2025c7621bb63c98", - "type": "group", - "x": 2400, - "y": 0, - "width": 540, - "height": 480, - "label": "LOGIN & ZUGÄNGE", - "color": "4" - }, - { - "id": "3e27875daca5713d", - "type": "text", - "x": 2440, - "y": 80, - "width": 460, - "height": 360, - "text": "## Login, Registrierung & Workspace\n**Ticket:** `D-P2` · **Status:** ✅ validiert / in Subframe\n**Wo:** Login-Seiten + Einstellungen\n\n**Was drin ist:** Registrierung, Login + 2FA, Passwort vergessen/ändern, Workspace-Auswahl + neuer Workspace, Profil & Sicherheit, Mitarbeiter & Rollen (Admin)\n\n**Stand:** 9 Wireframe-Pakete fertig gebaut. Konto/Workspace löschen bewusst geparkt. → `02 Wireframes/P2 Auth/`", - "color": "4" - }, - { - "id": "db7d9db3cd7939b0", - "type": "group", - "x": 3100, - "y": 0, - "width": 1040, - "height": 480, - "label": "SUCHE & DASHBOARD" - }, - { - "id": "89c0813f7e139a88", - "type": "text", - "x": 3140, - "y": 80, - "width": 460, - "height": 360, - "text": "## Dashboard (Startseite)\n**Ticket:** `D-DASH` (Teil) · **Status:** ⬜ offen\n**Wo:** `/dashboard`\n\n**Was drin ist:** 3 feste Ansichten je Rolle: Chef (Umsatz, Projekte, Auslastung) · Büro (Projekte, Aufgaben, Anrufe) · Monteur 📱 (meine Termine, Projekte, Aufgaben)\n\n**So funktioniert's:** Kacheln mit Zahlen, Listen und Trend-Charts, live aktualisiert. Kein freies Umbauen in v1 — nur Filter/Zeitraum einstellbar.", - "color": "2" - }, - { - "id": "4a4e5be847a54e5f", - "type": "text", - "x": 3640, - "y": 80, - "width": 460, - "height": 360, - "text": "## Suche (Cmd+K)\n**Ticket:** `D-DASH` (Teil) · **Status:** ⬜ offen\n**Wo:** überall + `/search`\n\n**Was drin ist:** Such-Fenster per Tastenkürzel: tippen, Treffer nach Typ gruppiert, mit Pfeiltasten navigieren · dazu große Such-Seite mit Filtern\n\n**So funktioniert's:** Findet Kontakte, Projekte, Dateien usw. — zeigt nur, was man sehen darf.", - "color": "1" - }, - { - "id": "88792c50986c93db", - "type": "group", - "x": 1700, - "y": 680, - "width": 1540, - "height": 480, - "label": "VERTRIEB — vom Anruf zum Auftrag", - "color": "2" - }, - { - "id": "8272764aa65537b0", - "type": "text", - "x": 1740, - "y": 760, - "width": 460, - "height": 360, - "text": "## Lead-Eingang (Anfragen)\n**Ticket:** `D-P7` · **Status:** ⬜ offen\n**Wo:** `/leads`\n\n**Was drin ist:** Eingangs-Liste aller Anfragen (mit Quelle, Spam-Verdacht, Duplikat-Hinweis), Anfrage-Detail, »Zu Projekt machen«, Statistiken, Quellen-Verwaltung, Spam-Schutz-Einstellungen\n\n**So funktioniert's:** Alle Anfragen (Website, Formulare, Anrufe, Buchungen) landen hier. Wer sie bearbeiten darf (Freigabe = ja), macht daraus ein Projekt und hängt den Kontakt dran.", - "color": "5" - }, - { - "id": "d9868dadb782f253", - "type": "text", - "x": 2240, - "y": 760, - "width": 460, - "height": 360, - "text": "## Kontakte & Organisationen\n**Ticket:** `D-CRM` · **Status:** ⬜ offen\n**Wo:** `/contacts`\n\n**Was drin ist:** Kontakt-Liste, Organisations-Liste, Kontakt-Detailseite (die Vorlage für ALLE Detailseiten), eigene Felder, Tags, Duplikate zusammenführen\n\n**So funktioniert's:** Ein Kontakt ist Privatperson oder Organisation und hat einen Status (Kontakt → Kunde → Bestandskunde). Auf der Detailseite sieht man alles: Projekte, Mails, Anrufe, Aufgaben, Dateien, Notizen.", - "color": "5" - }, - { - "id": "e10a35560a461111", - "type": "text", - "x": 2740, - "y": 760, - "width": 460, - "height": 360, - "text": "## Kanban-Board & Pipelines (Projekte)\n**Ticket:** `D-P8` + `D-KANBAN` · **Status:** ⬜ offen\n**Wo:** `/projects` + Admin\n\n**Was drin ist:** Kanban-Board mit Spalten je Status (Karten ziehen = Status wechseln), Projekt-Liste, Projekt-Detailseite, Pipeline-Einstellungen (Spalten, Rechte, Pflichtfelder), Verlust-Gründe\n\n**So funktioniert's:** Ein Projekt wandert durch Boards — »Vertrieb« und »Auftrag« sind nur zwei Boards für denselben Datensatz. Gewonnen = wechselt aufs Auftrags-Board. Wer welche Felder sieht (z. B. Umsatz), ist einstellbar.", - "color": "2" - }, - { - "id": "77c19412215a977c", - "type": "group", - "x": 3500, - "y": 680, - "width": 1540, - "height": 480, - "label": "AUFTRAG & BAUSTELLE", - "color": "2" - }, - { - "id": "4bb807ef5e3c8dee", - "type": "text", - "x": 3540, - "y": 760, - "width": 460, - "height": 360, - "text": "## Projekt-Akte (Auftrag) 📱\n**Ticket:** `D-P9` · **Status:** ⬜ offen\n**Wo:** im Projekt-Detail\n\n**Was drin ist:** Reiter am Projekt: Team-Mitglieder, Termine, **Rechnungen (neu in v1)**, Checklisten & Mängel, Aufgaben, Dateien, Abnahmen · dazu Projekt-Vorlagen und Abnahme-Formular-Vorlagen\n\n**So funktioniert's:** Alles zum Auftrag an einem Ort. Am Handy reduziert: Stammdaten, heutige Aufgaben, Abnahme-Knopf, Foto direkt hochladen.", - "color": "2" - }, - { - "id": "3f83fa1a16ae69df", - "type": "text", - "x": 4040, - "y": 760, - "width": 460, - "height": 360, - "text": "## Plantafel (Einsatzplanung) 📱\n**Ticket:** `D-PLAN` · **Status:** ⬜ offen\n**Wo:** `/projects/plantafel`\n\n**Was drin ist:** Planungs-Raster: Zeilen = Mitarbeiter, Spalten = Zeit. Einsätze per Ziehen verschieben/verlängern, Klick auf freien Slot = neuer Einsatz\n\n**So funktioniert's:** Warnt bei Konflikten (doppelt verplant, Urlaub/krank, außerhalb Arbeitszeit) — zuweisen geht trotzdem. Monteure sehen am Handy »Meine Termine heute« mit Adresse + Navi, auch offline.", - "color": "1" - }, - { - "id": "d9ad572ae83b4d0a", - "type": "text", - "x": 4540, - "y": 760, - "width": 460, - "height": 360, - "text": "## Abnahme (Baustellen-Protokoll) 📱\n**Ticket:** `D-ABN` · **Status:** ⬜ offen\n**Wo:** im Projekt-Detail\n\n**Was drin ist:** Abnahme-Formular (Druckprobe, Funktionsprüfung, Zählerstände, übergebene Dokumente), Mängel mit Foto festhalten, Unterschrift Kunde + Monteur direkt am Handy, Liste aller Abnahmen je Projekt\n\n**So funktioniert's:** Nach dem Speichern unveränderbar (6 Jahre Aufbewahrung), PDF geht automatisch per Mail an den Kunden. Funktioniert offline, lädt später hoch. Mängel werden automatisch Aufgaben.", - "color": "1" - }, - { - "id": "00d6b92d3845c185", - "type": "group", - "x": 0, - "y": 1400, - "width": 1040, - "height": 480, - "label": "E-MAIL-MARKETING" - }, - { - "id": "ab16fe58ff28c0ac", - "type": "text", - "x": 40, - "y": 1480, - "width": 460, - "height": 360, - "text": "## Kampagnen & Empfängerlisten\n**Ticket:** `D-KAMP` · **Status:** ⬜ offen\n**Wo:** `/email-marketing`\n\n**Was drin ist:** Kampagne erstellen in 6 Schritten (Absender → Inhalt → Empfänger → Test-Mail → Zeitpunkt → Check) · Empfängerlisten (Segmente) mit Filtern bauen\n\n**So funktioniert's:** Vor dem Versand prüft eine Checkliste alles Rechtliche (Domain bestätigt? Abmelde-Link? Impressum?) — bei Rot wird nicht gesendet.", - "color": "2" - }, - { - "id": "4cce52e2e3bd8823", - "type": "text", - "x": 540, - "y": 1480, - "width": 460, - "height": 360, - "text": "## Versand-Technik & Statistiken 🌐\n**Ticket:** `D-P14` · **Status:** ⬜ offen\n**Wo:** `/email-marketing` + Einstellungen\n\n**Was drin ist:** Eigene Absender-Domain einrichten (mit Copy-Paste-Anleitung), Kampagnen-Übersicht + Statistiken (zugestellt/geöffnet/geklickt), gesperrte Empfänger, Vorlagen, 🌐 Abmelde-Seite\n\n**So funktioniert's:** Mails an Kunden tauchen automatisch am Kontakt auf (BCC-Trick, kein Postfach-Anschluss nötig — der kommt in v2).", - "color": "2" - }, - { - "id": "ca7223940f6e1d29", - "type": "group", - "x": 1700, - "y": 1400, - "width": 2040, - "height": 480, - "label": "TERMINE & FORMULARE" - }, - { - "id": "6b8c7d3bc3ee7449", - "type": "text", - "x": 1740, - "y": 1480, - "width": 460, - "height": 360, - "text": "## Formulare (Baukasten) 🌐\n**Ticket:** `D-FORM` + `D-P16` (Teil) · **Status:** ⬜ offen\n**Wo:** `/forms` + öffentlicher Link\n\n**Was drin ist:** Formular-Baukasten (Felder per Ziehen anordnen, Wenn-Dann-Logik »zeige Feld X wenn …«, Live-Vorschau), 🌐 öffentliches Formular zum Teilen (Link, QR-Code, Einbetten), Antworten-Übersicht\n\n**So funktioniert's:** Was nach dem Absenden passiert, ist einstellbar: Anfrage/Aufgabe anlegen, Mail senden, Automation starten. Dieselben Formulare stecken auch in HR-Anträgen und der Terminbuchung.", - "color": "1" - }, - { - "id": "77ebfde5a3a05b8a", - "type": "text", - "x": 2240, - "y": 1480, - "width": 460, - "height": 360, - "text": "## Online-Terminbuchung 🌐\n**Ticket:** `D-BOOK` + `D-P16` (Teil) · **Status:** ⬜ offen\n**Wo:** 🌐 Buchungslink + `/bookings`\n\n**Was drin ist:** 🌐 Buchungs-Seite für Kunden (freien Termin wählen → Formular → Bestätigung mit Kalender-Datei), intern: Buchungs-Liste (verschieben, stornieren, No-Show), Buchungsseiten-Editor, Verfügbarkeits-Zeiten\n\n**So funktioniert's:** Kunde bucht selbst, der erste freie Mitarbeiter bekommt den Termin, die Anfrage landet im Lead-Eingang. Muss am schönsten aussehen — ist öffentlich.", - "color": "2" - }, - { - "id": "28bd46ecb4eaa069", - "type": "text", - "x": 2740, - "y": 1480, - "width": 460, - "height": 360, - "text": "## Kalender\n**Ticket:** `D-BOOK` + `D-P16` (Teil) · **Status:** ⬜ offen\n**Wo:** `/calendar` + Einstellungen\n\n**Was drin ist:** Monats-/Wochen-Ansicht mit allen Terminen (Google-Kalender + Buchungen + Plantafel, je mit Herkunfts-Marker), Google-Kalender verbinden, Konflikt-Übersicht\n\n**So funktioniert's:** Läuft in beide Richtungen mit Google (Outlook kommt in v2). Fremde private Termine erscheinen nur als »belegt«.", - "color": "2" - }, - { - "id": "b789fc765f833f45", - "type": "text", - "x": 3240, - "y": 1480, - "width": 460, - "height": 360, - "text": "## Digital unterschreiben (E-Signatur)\n**Ticket:** `D-P16` (Teil) · **Status:** ⬜ offen\n**Wo:** im Projekt-Detail\n\n**Was drin ist:** Angebot als PDF hochladen → Unterzeichner festlegen → Kunde unterschreibt per Link (mit SMS/Mail-Code) oder direkt auf dem Gerät → Status je Unterzeichner, Erinnerung, Widerruf\n\n**So funktioniert's:** Hängt direkt am Projekt (»Angebot zur Signatur senden«). Eigene Lösung, kein Pflicht-Drittanbieter.", - "color": "5" - }, - { - "id": "e97e13901e405fcd", - "type": "group", - "x": 4200, - "y": 1400, - "width": 1540, - "height": 480, - "label": "KOMMUNIKATION" - }, - { - "id": "401d8270854bebac", - "type": "text", - "x": 4240, - "y": 1480, - "width": 460, - "height": 360, - "text": "## Team-Chat 📱\n**Ticket:** `D-CHAT` · **Status:** ⬜ offen\n**Wo:** `/chat`\n\n**Was drin ist:** Channel-Liste, Chat-Verlauf (Antwort-Threads, Emoji-Reaktionen, gelesen-von, Anhänge), Erwähnungen mit @, angepinnte Nachrichten, Suche, Direktnachrichten\n\n**So funktioniert's:** Jedes Projekt kann seinen eigenen Channel haben (Team wird automatisch synchron gehalten). Monteure: vereinfachte Handy-Ansicht mit Foto-Direktupload. Admin kann DMs nur mit Begründung einsehen.", - "color": "2" - }, - { - "id": "29ca06733a9b243b", - "type": "text", - "x": 4740, - "y": 1480, - "width": 460, - "height": 360, - "text": "## Telefonie (Anrufe)\n**Ticket:** `D-P15` · **Status:** ⬜ offen\n**Wo:** `/calls` + Einstellungen\n\n**Was drin ist:** AirCall verbinden (Telefon-Nutzer zuordnen), Anruf-Liste + Detail (Notiz, Aufnahme), Anruf-Knopf direkt an Kontakt/Anfrage/Projekt\n\n**So funktioniert's:** Anrufe werden automatisch dem richtigen Kontakt zugeordnet. Unbekannte Nummer ruft an → wird automatisch eine Anfrage im Lead-Eingang.", - "color": "5" - }, - { - "id": "50945ed6e43505ce", - "type": "text", - "x": 5240, - "y": 1480, - "width": 460, - "height": 360, - "text": "## Benachrichtigungen\n**Ticket:** `D-P3` (Teil) · **Status:** ⬜ offen\n**Wo:** Glocke oben + Einstellungen\n\n**Was drin ist:** Glocke mit Ungelesen-Zähler + aufklappbare Liste (Klick springt zur Sache), eigene Seite mit allen Meldungen, Einstellungen: pro Ereignis-Typ wählen ob In-App und/oder E-Mail\n\n**So funktioniert's:** Wird von allen Features gespeist (neue Anfrage, Aufgabe fällig, Antrag genehmigt …). Master-Schalter »alle E-Mails aus«.", - "color": "5" - }, - { - "id": "070f258760fab4e9", - "type": "group", - "x": 0, - "y": 2120, - "width": 1040, - "height": 480, - "label": "AUFGABEN & DATEIEN — stecken in jedem Feature" - }, - { - "id": "e21930b7073823f8", - "type": "text", - "x": 40, - "y": 2200, - "width": 460, - "height": 360, - "text": "## Aufgaben\n**Ticket:** `D-P4` (Teil) · **Status:** ⬜ offen\n**Wo:** `/tasks` + überall als Reiter\n\n**Was drin ist:** Aufgaben-Liste (Meine / von mir erstellt / Alle), Aufgabe mit Frist, Priorität, Zuständigem (Person oder Gruppe), Beobachtern und Verknüpfung (Kontakt/Projekt/…)\n\n**So funktioniert's:** Einmal gebaut, überall eingebettet — jede Detailseite hat einen Aufgaben-Reiter. Aufgaben können auch aus Chat, Formularen oder Automationen entstehen (Herkunft sichtbar). Erinnerung vor/nach Frist.", - "color": "5" - }, - { - "id": "036e2a807223753d", - "type": "text", - "x": 540, - "y": 2200, - "width": 460, - "height": 360, - "text": "## Dateien\n**Ticket:** `D-P4` (Teil) · **Status:** ⬜ offen\n**Wo:** `/files` + überall als Reiter\n\n**Was drin ist:** Datei-Übersicht (Tabelle oder Kacheln, Filter, Mehrfach-Aktionen inkl. ZIP), Upload per Drag&Drop (mehrere gleichzeitig, mit Fortschritt), Datei-Detail mit Vorschau\n\n**So funktioniert's:** Dateien hängen an Kontakten/Projekten/… mit Rolle (z. B. »Angebot«). iPhone-Fotos (HEIC) werden automatisch zu JPG. Versionen kommen in v2.", - "color": "5" - }, - { - "id": "8acc5d7d61317076", - "type": "group", - "x": 1200, - "y": 2120, - "width": 1040, - "height": 480, - "label": "AUTOMATIONEN" - }, - { - "id": "8f3127f03a5bab96", - "type": "text", - "x": 1240, - "y": 2200, - "width": 460, - "height": 360, - "text": "## Automations-Baukasten (Flow-Editor)\n**Ticket:** `D-FLOW` · **Status:** ⬜ offen\n**Wo:** `/automations/:id/edit`\n\n**Was drin ist:** Zeichenfläche mit Bausteinen: Auslöser (neue Anfrage, Formular abgeschickt, Zeitplan …) und Aktionen (Aufgabe anlegen, Mail senden, Wenn-Dann, Warten …) per Ziehen verbinden\n\n**So funktioniert's:** Alles in verständlichem Deutsch beschriftet. Vor dem Aktivieren zeigt eine Probe-Vorschau »trifft X Datensätze« — erst bestätigen, dann läuft's. Warnt vor Endlos-Schleifen. **Aufwendigste UI der ganzen App.**", - "color": "1" - }, - { - "id": "e6d8c36a0f89d954", - "type": "text", - "x": 1740, - "y": 2200, - "width": 460, - "height": 360, - "text": "## Automationen: Übersicht & Verläufe\n**Ticket:** `D-P12` · **Status:** ⬜ offen\n**Wo:** `/automations`\n\n**Was drin ist:** Liste aller Automationen (aktiv/pausiert/Entwurf), Lauf-Protokolle Schritt für Schritt in Klartext, Vorlagen-Katalog (SHK-Vorlagen + eigene)\n\n**So funktioniert's:** Jeder Lauf ist nachvollziehbar; 24 h lang rückgängig machbar (Countdown-Knopf), fehlgeschlagene Schritte neu anstoßen.", - "color": "2" - }, - { - "id": "3c6e5b1ea4a27913", - "type": "group", - "x": 3700, - "y": 2120, - "width": 540, - "height": 480, - "label": "HR (MITARBEITER)" - }, - { - "id": "03e8e03ef11606a0", - "type": "text", - "x": 3740, - "y": 2200, - "width": 460, - "height": 360, - "text": "## HR-Bereich 📱\n**Ticket:** `D-HR` · **Status:** ⬜ offen\n**Wo:** `/hr` + HR-Admin\n\n**Was drin ist:** Startseite (Ankündigungen, offene Anträge, wer ist heute da), Urlaub & Krankmeldung (mit Genehmigung), Lohnabrechnungen, Anträge (Spesen, Hardware …), Passwort-Safe, Umfragen, Mitarbeiter-Verzeichnis, Standorte, eigene Dokumente\n\n**So funktioniert's:** Mitarbeiter-Sicht und HR-Verwaltung sind strikt getrennt; sensible Daten verschlüsselt, jedes Aufdecken protokolliert. Urlaub/krank fließt direkt in die Plantafel-Konflikte.", - "color": "5" - }, - { - "id": "904c5ece127e2e4c", - "type": "group", - "x": 4400, - "y": 2120, - "width": 1540, - "height": 880, - "label": "VERWALTUNG (WORKSPACE-EINSTELLUNGEN)" - }, - { - "id": "5c72e7b04059503a", - "type": "text", - "x": 4440, - "y": 2200, - "width": 460, - "height": 360, - "text": "## Integrationen (Apps verbinden)\n**Ticket:** `D-P5` · **Status:** ⬜ offen\n**Wo:** `/admin/integrations`\n\n**Was drin ist:** App-Katalog (nach Kategorie, mit Status-Ampel), Verbindung einrichten per Schritt-für-Schritt-Assistent, Verbindungs-Zustand + Sync-Verlauf in Klartext\n\n**So funktioniert's:** Das gemeinsame Gerüst für alle Anbindungen — E-Mail, Telefonie, Kalender, Signatur nutzen alle dieselben Verbindungs-Karten.", - "color": "5" - }, - { - "id": "0f6acf7087283c0c", - "type": "text", - "x": 4940, - "y": 2200, - "width": 460, - "height": 360, - "text": "## Aktivitäts-Protokoll (Audit-Log)\n**Ticket:** `D-P3` (Teil) · **Status:** ⬜ offen\n**Wo:** `/admin/audit`\n\n**Was drin ist:** Wer hat wann was geändert — als deutscher Klartext-Satz, mit Filter und Vorher/Nachher-Vergleich, Export mit Zweck-Angabe\n\n**So funktioniert's:** Der gleiche Verlauf ist auch an jedem Datensatz einblendbar (»Verlauf dieses Objekts«). Unterscheidet Mensch / Automation / Agent / Admin.", - "color": "5" - }, - { - "id": "6b3c0929759a607b", - "type": "text", - "x": 5440, - "y": 2200, - "width": 460, - "height": 360, - "text": "## Abo & Rechnungen (für HiveGrid)\n**Ticket:** `D-P20` (Teil) · **Status:** ⚠️ Ticket braucht Recut\n**Wo:** `/admin/subscription`\n\n**Was drin ist:** Abo-Übersicht (Plan, Plätze, gebuchte Module, Test-Countdown), Verbrauchs-Balken (Automations-Läufe, Speicher), Rechnungen + Zahlungsstatus\n\n**Achtung:** Das Ticket wird gerade umgeschnitten (neuer Abrechnungs-Unterbau) — erst planen, wenn der Brief neu steht. Kein Selbst-Upgrade in v1.", - "color": "5" - }, - { - "id": "b334f15bdd19d9ad", - "type": "text", - "x": 4440, - "y": 2600, - "width": 460, - "height": 360, - "text": "## Erste Schritte & Demo-Daten\n**Ticket:** `D-P20` (Teil) · **Status:** ⬜ offen\n**Wo:** `/onboarding` + Admin\n\n**Was drin ist:** Erste-Schritte-Checkliste (mit Direkt-Links, abhakbar, ausblendbar), Beispieldaten-Knopf (anlegen, zählen, wieder löschen, »Demo ausblenden«-Filter), Hell/Dunkel-Umschalter\n\n**So funktioniert's:** Kein Einrichtungs-Assistent — beim Registrieren wird alles SHK-typisch vorbefüllt, die Checkliste führt danach durch.", - "color": "5" - }, - { - "id": "6533d410b309a48f", - "type": "text", - "x": 4940, - "y": 2600, - "width": 460, - "height": 360, - "text": "## Datenschutz (Export & Löschung)\n**Ticket:** `D-P21` (Teil) · **Status:** ⬜ offen\n**Wo:** `/admin/privacy` + Einstellungen\n\n**Was drin ist:** Daten-Export als ZIP (für einen Nutzer oder den ganzen Workspace), Workspace-Löschung (mehrstufig, 30 Tage Schonfrist, Passwort + 2FA), Konto-Löschung, Liste der Unterauftragsverarbeiter, AVV-Vertrag\n\n**So funktioniert's:** Letzter Baustein vor dem Launch. DSGVO-Auskunftsanfragen laufen in v1 als manuelle Anleitung, ohne eigenen Assistenten.", - "color": "5" - }, - { - "id": "db76161d24fb0c1d", - "type": "text", - "x": 5440, - "y": 2600, - "width": 460, - "height": 360, - "text": "## Feedback & Hilfe\n**Ticket:** `D-P21` (Teil) · **Status:** ⬜ offen\n**Wo:** überall + `/help`\n\n**Was drin ist:** Schwebender Feedback-Knopf (Fehler melden / Idee / Frage, optional mit Screenshot), kleine FAQ-Seite\n\n**So funktioniert's:** Meldungen landen direkt in unserer Support-Inbox im Plattform-Admin.", - "color": "5" - }, - { - "id": "c3172228336521df", - "type": "group", - "x": 6100, - "y": 2120, - "width": 540, - "height": 880, - "label": "PLATTFORM-ADMIN — unsere interne Verwaltung" - }, - { - "id": "c8d8914e45e1497e", - "type": "text", - "x": 6140, - "y": 2200, - "width": 460, - "height": 360, - "text": "## Plattform-Admin\n**Ticket:** `D-ADMIN` · **Status:** ⬜ offen\n**Wo:** admin.hivegrid.de\n\n**Was drin ist:** Eigener Login (2FA Pflicht), Übersichts-Dashboard (Kunden, Nutzer, Umsatz, System-Zustand), Kunden-Verwaltung (Module freischalten = Abo-Baukasten, Test verlängern, »als Kunde einloggen« mit Begründung), Nutzer-Hilfen (2FA-Reset), Feature-Schalter, Warteschlangen-Monitor, Support-Inbox, Protokoll\n\n**So funktioniert's:** Komplett eigene Welt für uns als Betreiber — Kunden sehen davon nichts. Muss funktionieren, nicht hübsch sein.", - "color": "5" - }, - { - "id": "abf5f779c1463715", - "type": "text", - "x": 6140, - "y": 2600, - "width": 460, - "height": 360, - "color": "5", - "text": "## Hinweis\nDieses eine Ticket enthält viele kleine Features (Kunden, Schalter, Support …).\n\nBeim atomaren Durchgehen behandeln wir es als eigenen Bereich und teilen es bei Bedarf in Unter-Pakete auf. Priorität liegt aber hinter der Vertriebs-/Auftrags-Kette." - } - ], - "edges": [ - { - "id": "4ab78034e8253353", - "fromNode": "b3cad562971d30a5", - "fromSide": "right", - "toNode": "d53e7ea48a9b1e6c", - "toSide": "left", - "toEnd": "arrow", - "label": "Design-Grundlage" - }, - { - "id": "493a2823934c45bb", - "fromNode": "3e27875daca5713d", - "fromSide": "right", - "toNode": "89c0813f7e139a88", - "toSide": "left", - "toEnd": "arrow", - "label": "nach dem Login" - }, - { - "id": "ec751d558a1aef74", - "fromNode": "8272764aa65537b0", - "fromSide": "right", - "toNode": "d9868dadb782f253", - "toSide": "left", - "toEnd": "arrow", - "label": "Kontakt anlegen/verknüpfen", - "color": "2" - }, - { - "id": "154e632b2e5a645b", - "fromNode": "d9868dadb782f253", - "fromSide": "right", - "toNode": "e10a35560a461111", - "toSide": "left", - "toEnd": "arrow", - "label": "Kontakt hängt am Projekt", - "color": "2" - }, - { - "id": "0c0d0ba4b21da4ee", - "fromNode": "e10a35560a461111", - "fromSide": "right", - "toNode": "4bb807ef5e3c8dee", - "toSide": "left", - "toEnd": "arrow", - "label": "gewonnen → Auftrags-Board", - "color": "2" - }, - { - "id": "b43edef178d41dd6", - "fromNode": "4bb807ef5e3c8dee", - "fromSide": "right", - "toNode": "3f83fa1a16ae69df", - "toSide": "left", - "toEnd": "arrow", - "label": "Termine einplanen", - "color": "2" - }, - { - "id": "c45adb9c0c551e38", - "fromNode": "3f83fa1a16ae69df", - "fromSide": "right", - "toNode": "d9ad572ae83b4d0a", - "toSide": "left", - "toEnd": "arrow", - "label": "Ausführung → Abnahme", - "color": "2" - }, - { - "id": "47be96e20dcfa86a", - "fromNode": "d9ad572ae83b4d0a", - "fromSide": "bottom", - "toNode": "4bb807ef5e3c8dee", - "toSide": "bottom", - "toEnd": "arrow", - "label": "Mängel → Aufgaben · dann Rechnung", - "color": "2" - }, - { - "id": "2ec97abebcf1dcce", - "fromNode": "ce5632682989a6ca", - "fromSide": "bottom", - "toNode": "8272764aa65537b0", - "toSide": "top", - "toEnd": "arrow", - "label": "Demo-Anfrage" - }, - { - "id": "4b89b1105393e48f", - "fromNode": "6b8c7d3bc3ee7449", - "fromSide": "top", - "toNode": "8272764aa65537b0", - "toSide": "bottom", - "toEnd": "arrow", - "label": "Formular → Anfrage" - }, - { - "id": "bc139947ce483198", - "fromNode": "77ebfde5a3a05b8a", - "fromSide": "top", - "toNode": "8272764aa65537b0", - "toSide": "bottom", - "toEnd": "arrow", - "label": "Buchung → Anfrage/Termin" - }, - { - "id": "57a256b64d1a2d76", - "fromNode": "29ca06733a9b243b", - "fromSide": "top", - "toNode": "8272764aa65537b0", - "toSide": "bottom", - "toEnd": "arrow", - "label": "Anruf von unbekannt → Anfrage" - }, - { - "id": "78fca84da3e723b6", - "fromNode": "ab16fe58ff28c0ac", - "fromSide": "top", - "toNode": "d9868dadb782f253", - "toSide": "bottom", - "toEnd": "arrow", - "label": "Mails am Kontakt sichtbar" - }, - { - "id": "8792d0c809babff2", - "fromNode": "03e8e03ef11606a0", - "fromSide": "top", - "toNode": "3f83fa1a16ae69df", - "toSide": "bottom", - "toEnd": "arrow", - "label": "Urlaub/krank → Konflikt-Warnung" - }, - { - "id": "ce4441bfdc6a11cc", - "fromNode": "28bd46ecb4eaa069", - "fromSide": "top", - "toNode": "3f83fa1a16ae69df", - "toSide": "bottom", - "toEnd": "arrow", - "label": "Kalender-Abgleich" - }, - { - "id": "77081523e546eebe", - "fromNode": "b789fc765f833f45", - "fromSide": "top", - "toNode": "4bb807ef5e3c8dee", - "toSide": "bottom", - "toEnd": "arrow", - "label": "hängt an der Projekt-Akte" - }, - { - "id": "e6c0f9dda77f8d85", - "fromNode": "401d8270854bebac", - "fromSide": "top", - "toNode": "4bb807ef5e3c8dee", - "toSide": "bottom", - "toEnd": "arrow", - "label": "Projekt-Channel im Projekt" - }, - { - "id": "65bd180bf263096e", - "fromNode": "e10a35560a461111", - "fromSide": "top", - "toNode": "89c0813f7e139a88", - "toSide": "bottom", - "toEnd": "arrow", - "label": "Zahlen fürs Dashboard" - }, - { - "id": "0bb07aa23fe6a9f2", - "fromNode": "28bd46ecb4eaa069", - "fromSide": "left", - "toNode": "77ebfde5a3a05b8a", - "toSide": "right", - "toEnd": "arrow", - "label": "freie Zeiten" - }, - { - "id": "cc8ccd69ae4f9435", - "fromNode": "8f3127f03a5bab96", - "fromSide": "right", - "toNode": "e6d8c36a0f89d954", - "toSide": "left", - "toEnd": "arrow", - "label": "Baukasten ↔ Übersicht" - }, - { - "id": "dc15b80a5a4410c9", - "fromNode": "db76161d24fb0c1d", - "fromSide": "right", - "toNode": "c8d8914e45e1497e", - "toSide": "left", - "toEnd": "arrow", - "label": "Feedback → Support-Inbox" - } - ] + "nodes":[ + {"id":"904c5ece127e2e4c","type":"group","x":5497,"y":3020,"width":1540,"height":1400,"label":"VERWALTUNG (WORKSPACE-EINSTELLUNGEN)"}, + {"id":"88792c50986c93db","type":"group","x":1950,"y":960,"width":2587,"height":740,"color":"2","label":"VERTRIEB — vom Anruf zum Auftrag"}, + {"id":"77c19412215a977c","type":"group","x":5037,"y":960,"width":2260,"height":740,"color":"2","label":"AUFTRAG & BAUSTELLE"}, + {"id":"41b8d85d3bb8d47d","type":"group","x":-160,"y":0,"width":1850,"height":740,"color":"6","label":"BASIS — gilt für alle Features"}, + {"id":"ca7223940f6e1d29","type":"group","x":2520,"y":2080,"width":2317,"height":520,"label":"TERMINE & FORMULARE"}, + {"id":"e97e13901e405fcd","type":"group","x":5037,"y":2080,"width":1540,"height":740,"label":"KOMMUNIKATION"}, + {"id":"8acc5d7d61317076","type":"group","x":2110,"y":3020,"width":1450,"height":740,"label":"AUTOMATIONEN"}, + {"id":"070f258760fab4e9","type":"group","x":760,"y":3020,"width":1190,"height":740,"label":"AUFGABEN & DATEIEN — stecken in jedem Feature"}, + {"id":"db7d9db3cd7939b0","type":"group","x":3997,"y":0,"width":1040,"height":740,"label":"SUCHE & DASHBOARD"}, + {"id":"c3172228336521df","type":"group","x":7197,"y":3020,"width":540,"height":1400,"label":"PLATTFORM-ADMIN — unsere interne Verwaltung"}, + {"id":"00d6b92d3845c185","type":"group","x":1160,"y":2080,"width":1190,"height":520,"label":"E-MAIL-MARKETING"}, + {"id":"7a26f88c260892eb","type":"group","x":1950,"y":0,"width":557,"height":740,"color":"3","label":"WEBSITE 🌐"}, + {"id":"2025c7621bb63c98","type":"group","x":2737,"y":0,"width":540,"height":740,"color":"4","label":"LOGIN & ZUGÄNGE"}, + {"id":"3c6e5b1ea4a27913","type":"group","x":7977,"y":3020,"width":540,"height":740,"label":"HR (MITARBEITER)"}, + {"id":"d5d3db1765287eef","type":"text","text":"# 🗺 HiveGrid Feature Map (v1)\nJede Karte = **ein Feature**. Das Ticket steht nur als Referenz dran. Übergreifende Sachen (App-Gerüst, UI-Baukasten, Feinschliff) liegen unter **Basis**.\n\n**Farben:**\n🟢 fertig/validiert · 🔴 Sonder-UI, wird von Hand designt (Tage) · 🔵 wird aus dem UI-Baukasten zusammengesteckt (Stunden) · 🟠 Mischung aus beidem · 🟣 Basis · 🟡 Feinschliff\n\n**Marker:** 🌐 öffentlich sichtbar (höchster Anspruch) · 📱 Monteur-Handy, teils offline\n\n**Unter jeder Karte:** Slot für die verknüpften Paket-Canvases (Detail-Flows aus `02 Wireframes`) — Karte anklicken öffnet den Flow.\n\n**Pfeile:** orange = Hauptkette (Anfrage → Auftrag → Geld) · grau = klare Querverbindung. Gilt etwas für **alle** Features (Automationen, Aufgaben/Dateien, Benachrichtigungen, Verbindungs-Gerüst), steht es als Text auf der Karte statt als Pfeil.\n\nAbhaklisten & Details: [[HiveGrid Map]]","x":0,"y":-460,"width":1140,"height":380}, + {"id":"3e27875daca5713d","type":"text","text":"## Login, Registrierung & Workspace\n**Ticket:** `D-P2` · **Status:** ✅ validiert / in Subframe\n**Wo:** Login-Seiten + Einstellungen\n\n**Was drin ist:** Registrierung, Login + 2FA, Passwort vergessen/ändern, Workspace-Auswahl + neuer Workspace, Profil & Sicherheit, Mitarbeiter & Rollen (Admin)\n\n**Stand:** 9 Wireframe-Pakete fertig gebaut. Konto/Workspace löschen bewusst geparkt. → `02 Wireframes/P2 Auth/`","x":2777,"y":80,"width":460,"height":360,"color":"4"}, + {"id":"d53e7ea48a9b1e6c","type":"text","text":"## UI-Baukasten (Listen, Formulare, Modals …)\n**Ticket:** `D-D0b` · **Status:** ✅ validiert\n**Wo:** überall in der App\n\n**Was drin ist:** Fertige Bausteine: Listen mit Filter, Detail-Seiten, Formular-Felder (12 Typen), Dialoge/Wizards, Settings-Seiten, Leer-/Lade-/Fehler-Zustände + Kleinteile (Buttons, Tags, Charts, Unterschriften-Feld …)\n\n**Warum wichtig:** Einmal designen, überall wiederverwenden. Layout-Standards liegen in `04 Standards`. ✅ Bereits erledigt.","x":690,"y":80,"width":460,"height":360,"color":"4"}, + {"id":"c02969250252a3ab","type":"text","text":"## Feinschliff vor Launch\n**Ticket:** `D-POLISH` · **Status:** ⬜ offen\n**Wo:** 🌐 alles öffentlich Sichtbare\n\n**Was drin ist:** Letzter Polier-Durchgang: Terminbuchungs-Seite, öffentliche Formulare, Marketing-Mails · danach Screenshots als »So muss es aussehen«-Referenz einfrieren\n\n**Warum wichtig:** Kommt ganz am Ende, direkt vor dem Launch. Braucht Terminbuchung + Dashboard fertig.","x":1190,"y":80,"width":460,"height":360,"color":"3"}, + {"id":"903e3384b0a5e623","type":"text","text":"**Detail-Flows:** 9 Wireframe-Pakete mit eigenen Canvases in `02 Wireframes/P2 Auth/` (Login, Signup, Reset, Set Password, 2FA, RBAC …) — siehe Tracker","x":2777,"y":480,"width":460,"height":220}, + {"id":"d48196ed3e229be5","type":"text","text":"**Standards:** `04 Standards/Subframe UI Standards/` — validierte Layout-Regeln","x":690,"y":480,"width":460,"height":220}, + { + "id":"a4f86f7bfc24194b", + "type":"text", + "styleAttributes":{"border":"dashed"}, + "text":"# 📏 Canvas-Regelwerk\n**Karten:** 1 Karte = 1 Feature · Farbe = Aufwand/Status (siehe Legende links) · unter der Karte hängen die Paket-Canvases (Detail-Flows).\n\n**Verbindungen:**\n- 🟠 **durchgezogen** — Hauptkette: so fließt ein Auftrag durchs System\n- 🔵 **durchgezogen** — erzeugt Anfrage/Termin (Wege in den Lead-Eingang)\n- **grau, lang gestrichelt** — speist/beeinflusst (Daten fließen rüber)\n- **grau, kurz gestrichelt** — Werkzeug-Paar (gehört fachlich zusammen)\n- 🟣 **gepunktet** — Basis/Einstieg (Design-Grundlage, nach dem Login)\n- **kein Pfeil** — gilt für ALLE Features (steht als Text auf der Karte)\n\n**Pfadführung:** nur gerade (direkt) oder Standard-Kurve — keine verwinkelten Wege. Wenn ein ganzer Bereich zu einem anderen gehört, wird Gruppe↔Gruppe (oder Gruppe↔Karte) verbunden statt vieler Einzel-Pfeile.\n\n**Label-Regel:** Zwischen verbundenen Karten bleibt mindestens Label-Breite Platz (≈ 8 px pro Zeichen + Rand), sonst wird der Text abgeschnitten.", + "x":1350, + "y":-500, + "width":820, + "height":420 + }, + {"id":"md-hivegrid-map","type":"file","file":"05 HiveGrid Map/HiveGrid Map.md","x":-520,"y":-460,"width":460,"height":300}, + {"id":"8272764aa65537b0","type":"text","text":"## Lead-Eingang (Anfragen)\n**Ticket:** `D-P7` · **Status:** ⬜ offen\n**Wo:** `/leads`\n\n**Was drin ist:** Eingangs-Liste aller Anfragen (mit Quelle, Spam-Verdacht, Duplikat-Hinweis), Anfrage-Detail, »Zu Projekt machen«, Statistiken, Quellen-Verwaltung, Spam-Schutz-Einstellungen\n\n**So funktioniert's:** Alle Anfragen (Website, Formulare, Anrufe, Buchungen) landen hier. Wer sie bearbeiten darf (Freigabe = ja), macht daraus ein Projekt und hängt den Kontakt dran.","x":1990,"y":1040,"width":460,"height":360,"color":"5"}, + {"id":"d9868dadb782f253","type":"text","text":"## Kontakte & Organisationen\n**Ticket:** `D-CRM` · **Status:** ⬜ offen\n**Wo:** `/contacts`\n\n**Was drin ist:** Kontakt-Liste, Organisations-Liste, Kontakt-Detailseite (die Vorlage für ALLE Detailseiten), eigene Felder, Tags, Duplikate zusammenführen\n\n**So funktioniert's:** Ein Kontakt ist Privatperson oder Organisation und hat einen Status (Kontakt → Kunde → Bestandskunde). Auf der Detailseite sieht man alles: Projekte, Mails, Anrufe, Aufgaben, Dateien, Notizen.","x":3077,"y":1040,"width":460,"height":360,"color":"5"}, + {"id":"e10a35560a461111","type":"text","text":"## Kanban-Board & Pipelines (Projekte)\n**Ticket:** `D-P8` + `D-KANBAN` · **Status:** ⬜ offen\n**Wo:** `/projects` + Admin\n\n**Was drin ist:** Kanban-Board mit Spalten je Status (Karten ziehen = Status wechseln), Projekt-Liste, Projekt-Detailseite, Pipeline-Einstellungen (Spalten, Rechte, Pflichtfelder), Verlust-Gründe\n\n**So funktioniert's:** Ein Projekt wandert durch Boards — »Vertrieb« und »Auftrag« sind nur zwei Boards für denselben Datensatz. Gewonnen = wechselt aufs Auftrags-Board. Wer welche Felder sieht (z. B. Umsatz), ist einstellbar.","x":4037,"y":1040,"width":460,"height":360,"color":"2"}, + {"id":"4bb807ef5e3c8dee","type":"text","text":"## Projekt-Akte (Auftrag) 📱\n**Ticket:** `D-P9` · **Status:** ⬜ offen\n**Wo:** im Projekt-Detail\n\n**Was drin ist:** Reiter am Projekt: Team-Mitglieder, Termine, **Rechnungen (neu in v1)**, Checklisten & Mängel, Aufgaben, Dateien, Abnahmen · dazu Projekt-Vorlagen und Abnahme-Formular-Vorlagen\n\n**So funktioniert's:** Alles zum Auftrag an einem Ort. Am Handy reduziert: Stammdaten, heutige Aufgaben, Abnahme-Knopf, Foto direkt hochladen.","x":5077,"y":1040,"width":460,"height":360,"color":"2"}, + {"id":"3f83fa1a16ae69df","type":"text","text":"## Plantafel (Einsatzplanung) 📱\n**Ticket:** `D-PLAN` · **Status:** ⬜ offen\n**Wo:** `/projects/plantafel`\n\n**Was drin ist:** Planungs-Raster: Zeilen = Mitarbeiter, Spalten = Zeit. Einsätze per Ziehen verschieben/verlängern, Klick auf freien Slot = neuer Einsatz\n\n**So funktioniert's:** Warnt bei Konflikten (doppelt verplant, Urlaub/krank, außerhalb Arbeitszeit) — zuweisen geht trotzdem. Monteure sehen am Handy »Meine Termine heute« mit Adresse + Navi, auch offline.","x":5897,"y":1040,"width":460,"height":360,"color":"1"}, + {"id":"d9ad572ae83b4d0a","type":"text","text":"## Abnahme (Baustellen-Protokoll) 📱\n**Ticket:** `D-ABN` · **Status:** ⬜ offen\n**Wo:** im Projekt-Detail\n\n**Was drin ist:** Abnahme-Formular (Druckprobe, Funktionsprüfung, Zählerstände, übergebene Dokumente), Mängel mit Foto festhalten, Unterschrift Kunde + Monteur direkt am Handy, Liste aller Abnahmen je Projekt\n\n**So funktioniert's:** Nach dem Speichern unveränderbar (6 Jahre Aufbewahrung), PDF geht automatisch per Mail an den Kunden. Funktioniert offline, lädt später hoch. Mängel werden automatisch Aufgaben.","x":6767,"y":1040,"width":460,"height":360,"color":"1"}, + {"id":"e21930b7073823f8","type":"text","text":"## Aufgaben\n**Ticket:** `D-P4` (Teil) · **Status:** 🟡 vorgeplant (Screens validiert, Subframe offen)\n**Wo:** `/tasks` + überall als Reiter\n\n**Was drin ist:** Aufgaben-Liste (Meine / von mir erstellt / Alle), Aufgabe mit Frist, Priorität, Zuständigem (Person oder Gruppe), Beobachtern und Verknüpfung (Kontakt/Projekt/…)\n\n**So funktioniert's:** Einmal gebaut, überall eingebettet — jede Detailseite hat einen Aufgaben-Reiter. Aufgaben können auch aus Chat, Formularen oder Automationen entstehen (Herkunft sichtbar). Erinnerung vor/nach Frist.","x":800,"y":3100,"width":460,"height":360,"color":"5"}, + {"id":"98798c9044c1d4bc","type":"file","file":"02 Wireframes/P4 Aufgaben und Dateien/WF-P4 Aufgaben/WF-P4 Aufgaben.canvas","x":800,"y":3500,"width":460,"height":220}, + {"id":"036e2a807223753d","type":"text","text":"## Dateien\n**Ticket:** `D-P4` (Teil) · **Status:** 🟡 vorgeplant (Screens validiert, Subframe offen)\n**Wo:** `/files` + überall als Reiter\n\n**Was drin ist:** Datei-Übersicht (Tabelle oder Kacheln, Filter, Mehrfach-Aktionen inkl. ZIP), Upload per Drag&Drop (mehrere gleichzeitig, mit Fortschritt), Datei-Detail mit Vorschau\n\n**So funktioniert's:** Dateien hängen an Kontakten/Projekten/… mit Rolle (z. B. »Angebot«). iPhone-Fotos (HEIC) werden automatisch zu JPG. Versionen kommen in v2.","x":1450,"y":3100,"width":460,"height":360,"color":"5"}, + {"id":"a1328943a7cef3b2","type":"file","file":"02 Wireframes/P4 Aufgaben und Dateien/WF-P4 Dateien/WF-P4 Dateien.canvas","x":1450,"y":3500,"width":460,"height":220}, + {"id":"5c72e7b04059503a","type":"text","text":"## Integrationen (Apps verbinden)\n**Ticket:** `D-P5` · **Status:** 🟡 vorgeplant (Screens validiert, Subframe offen)\n**Wo:** `/admin/integrations`\n\n**Was drin ist:** App-Katalog (nach Kategorie, mit Status-Ampel), Verbindung einrichten per Schritt-für-Schritt-Assistent, Verbindungs-Zustand + Sync-Verlauf in Klartext\n\n**So funktioniert's:** Das gemeinsame Gerüst für alle Anbindungen — E-Mail, Telefonie, Kalender, Signatur nutzen alle dieselben Verbindungs-Karten.","x":5537,"y":3100,"width":460,"height":360,"color":"5"}, + {"id":"b334f15bdd19d9ad","type":"text","text":"## Erste Schritte & Demo-Daten\n**Ticket:** `D-P20` (Teil) · **Status:** ⬜ offen\n**Wo:** `/onboarding` + Admin\n\n**Was drin ist:** Erste-Schritte-Checkliste (mit Direkt-Links, abhakbar, ausblendbar), Beispieldaten-Knopf (anlegen, zählen, wieder löschen, »Demo ausblenden«-Filter), Hell/Dunkel-Umschalter\n\n**So funktioniert's:** Kein Einrichtungs-Assistent — beim Registrieren wird alles SHK-typisch vorbefüllt, die Checkliste führt danach durch.","x":5537,"y":3760,"width":460,"height":360,"color":"5"}, + {"id":"0f6acf7087283c0c","type":"text","text":"## Aktivitäts-Protokoll (Audit-Log)\n**Ticket:** `D-P3` (Teil) · **Status:** 🟡 vorgeplant (Screens validiert, Subframe offen)\n**Wo:** `/admin/audit`\n\n**Was drin ist:** Wer hat wann was geändert — als deutscher Klartext-Satz, mit Filter und Vorher/Nachher-Vergleich, Export mit Zweck-Angabe\n\n**So funktioniert's:** Der gleiche Verlauf ist auch an jedem Datensatz einblendbar (»Verlauf dieses Objekts«). Unterscheidet Mensch / Automation / Agent / Admin.","x":6037,"y":3100,"width":460,"height":360,"color":"5"}, + {"id":"3864f1b74d665e1a","type":"file","file":"02 Wireframes/P3 Querschnitt/WF-P3 Audit Log/WF-P3 Audit Log.canvas","x":6037,"y":3500,"width":460,"height":220}, + {"id":"6b3c0929759a607b","type":"text","text":"## Abo & Rechnungen (für HiveGrid)\n**Ticket:** `D-P20` (Teil) · **Status:** ⚠️ Ticket braucht Recut\n**Wo:** `/admin/subscription`\n\n**Was drin ist:** Abo-Übersicht (Plan, Plätze, gebuchte Module, Test-Countdown), Verbrauchs-Balken (Automations-Läufe, Speicher), Rechnungen + Zahlungsstatus\n\n**Achtung:** Das Ticket wird gerade umgeschnitten (neuer Abrechnungs-Unterbau) — erst planen, wenn der Brief neu steht. Kein Selbst-Upgrade in v1.","x":6537,"y":3100,"width":460,"height":360,"color":"5"}, + {"id":"6533d410b309a48f","type":"text","text":"## Datenschutz (Export & Löschung)\n**Ticket:** `D-P21` (Teil) · **Status:** ⬜ offen\n**Wo:** `/admin/privacy` + Einstellungen\n\n**Was drin ist:** Daten-Export als ZIP (für einen Nutzer oder den ganzen Workspace), Workspace-Löschung (mehrstufig, 30 Tage Schonfrist, Passwort + 2FA), Konto-Löschung, Liste der Unterauftragsverarbeiter, AVV-Vertrag\n\n**So funktioniert's:** Letzter Baustein vor dem Launch. DSGVO-Auskunftsanfragen laufen in v1 als manuelle Anleitung, ohne eigenen Assistenten.","x":6037,"y":3760,"width":460,"height":360,"color":"5"}, + {"id":"db76161d24fb0c1d","type":"text","text":"## Feedback & Hilfe\n**Ticket:** `D-P21` (Teil) · **Status:** ⬜ offen\n**Wo:** überall + `/help`\n\n**Was drin ist:** Schwebender Feedback-Knopf (Fehler melden / Idee / Frage, optional mit Screenshot), kleine FAQ-Seite\n\n**So funktioniert's:** Meldungen landen direkt in unserer Support-Inbox im Plattform-Admin.","x":6537,"y":3760,"width":460,"height":360,"color":"5"}, + {"id":"c8d8914e45e1497e","type":"text","text":"## Plattform-Admin\n**Ticket:** `D-ADMIN` · **Status:** ⬜ offen\n**Wo:** admin.hivegrid.de\n\n**Was drin ist:** Eigener Login (2FA Pflicht), Übersichts-Dashboard (Kunden, Nutzer, Umsatz, System-Zustand), Kunden-Verwaltung (Module freischalten = Abo-Baukasten, Test verlängern, »als Kunde einloggen« mit Begründung), Nutzer-Hilfen (2FA-Reset), Feature-Schalter, Warteschlangen-Monitor, Support-Inbox, Protokoll\n\n**So funktioniert's:** Komplett eigene Welt für uns als Betreiber — Kunden sehen davon nichts. Muss funktionieren, nicht hübsch sein.","x":7237,"y":3100,"width":460,"height":360,"color":"5"}, + {"id":"abf5f779c1463715","type":"text","text":"## Hinweis\nDieses eine Ticket enthält viele kleine Features (Kunden, Schalter, Support …).\n\nBeim atomaren Durchgehen behandeln wir es als eigenen Bereich und teilen es bei Bedarf in Unter-Pakete auf. Priorität liegt aber hinter der Vertriebs-/Auftrags-Kette.","x":7237,"y":3760,"width":460,"height":360,"color":"5"}, + {"id":"03e8e03ef11606a0","type":"text","text":"## HR-Bereich 📱\n**Ticket:** `D-HR` · **Status:** ⬜ offen\n**Wo:** `/hr` + HR-Admin\n\n**Was drin ist:** Startseite (Ankündigungen, offene Anträge, wer ist heute da), Urlaub & Krankmeldung (mit Genehmigung), Lohnabrechnungen, Anträge (Spesen, Hardware …), Passwort-Safe, Umfragen, Mitarbeiter-Verzeichnis, Standorte, eigene Dokumente\n\n**So funktioniert's:** Mitarbeiter-Sicht und HR-Verwaltung sind strikt getrennt; sensible Daten verschlüsselt, jedes Aufdecken protokolliert. Urlaub/krank fließt direkt in die Plantafel-Konflikte.","x":8017,"y":3100,"width":460,"height":360,"color":"5"}, + {"id":"77ebfde5a3a05b8a","type":"text","text":"## Online-Terminbuchung 🌐\n**Ticket:** `D-BOOK` + `D-P16` (Teil) · **Status:** ⬜ offen\n**Wo:** 🌐 Buchungslink + `/bookings`\n\n**Was drin ist:** 🌐 Buchungs-Seite für Kunden (freien Termin wählen → Formular → Bestätigung mit Kalender-Datei), intern: Buchungs-Liste (verschieben, stornieren, No-Show), Buchungsseiten-Editor, Verfügbarkeits-Zeiten\n\n**So funktioniert's:** Kunde bucht selbst, der erste freie Mitarbeiter bekommt den Termin, die Anfrage landet im Lead-Eingang. Muss am schönsten aussehen — ist öffentlich.","x":3067,"y":2160,"width":460,"height":360,"color":"2"}, + {"id":"28bd46ecb4eaa069","type":"text","text":"## Kalender\n**Ticket:** `D-BOOK` + `D-P16` (Teil) · **Status:** ⬜ offen\n**Wo:** `/calendar` + Einstellungen\n\n**Was drin ist:** Monats-/Wochen-Ansicht mit allen Terminen (Google-Kalender + Buchungen + Plantafel, je mit Herkunfts-Marker), Google-Kalender verbinden, Konflikt-Übersicht\n\n**So funktioniert's:** Läuft in beide Richtungen mit Google (Outlook kommt in v2). Fremde private Termine erscheinen nur als »belegt«.","x":3837,"y":2160,"width":460,"height":360,"color":"2"}, + {"id":"b789fc765f833f45","type":"text","text":"## Digital unterschreiben (E-Signatur)\n**Ticket:** `D-P16` (Teil) · **Status:** ⬜ offen\n**Wo:** im Projekt-Detail\n\n**Was drin ist:** Angebot als PDF hochladen → Unterzeichner festlegen → Kunde unterschreibt per Link (mit SMS/Mail-Code) oder direkt auf dem Gerät → Status je Unterzeichner, Erinnerung, Widerruf\n\n**So funktioniert's:** Hängt direkt am Projekt (»Angebot zur Signatur senden«). Eigene Lösung, kein Pflicht-Drittanbieter.","x":4337,"y":2160,"width":460,"height":360,"color":"5"}, + {"id":"8f3127f03a5bab96","type":"text","text":"## Automations-Baukasten (Flow-Editor)\n**Ticket:** `D-FLOW` · **Status:** ⬜ offen\n**Wo:** `/automations/:id/edit`\n\n**Was drin ist:** Zeichenfläche mit Bausteinen: Auslöser (neue Anfrage, Formular abgeschickt, Zeitplan …) und Aktionen (Aufgabe anlegen, Mail senden, Wenn-Dann, Warten …) per Ziehen verbinden\n\n**So funktioniert's:** Alles in verständlichem Deutsch beschriftet. Vor dem Aktivieren zeigt eine Probe-Vorschau »trifft X Datensätze« — erst bestätigen, dann läuft's. Warnt vor Endlos-Schleifen. **Aufwendigste UI der ganzen App.**","x":2150,"y":3100,"width":460,"height":360,"color":"1"}, + {"id":"6b8c7d3bc3ee7449","type":"text","text":"## Formulare (Baukasten) 🌐\n**Ticket:** `D-FORM` + `D-P16` (Teil) · **Status:** ⬜ offen\n**Wo:** `/forms` + öffentlicher Link\n\n**Was drin ist:** Formular-Baukasten (Felder per Ziehen anordnen, Wenn-Dann-Logik »zeige Feld X wenn …«, Live-Vorschau), 🌐 öffentliches Formular zum Teilen (Link, QR-Code, Einbetten), Antworten-Übersicht\n\n**So funktioniert's:** Was nach dem Absenden passiert, ist einstellbar: Anfrage/Aufgabe anlegen, Mail senden, Automation starten. Dieselben Formulare stecken auch in HR-Anträgen und der Terminbuchung.","x":2560,"y":2160,"width":460,"height":360,"color":"1"}, + {"id":"ab16fe58ff28c0ac","type":"text","text":"## Kampagnen & Empfängerlisten\n**Ticket:** `D-KAMP` · **Status:** ⬜ offen\n**Wo:** `/email-marketing`\n\n**Was drin ist:** Kampagne erstellen in 6 Schritten (Absender → Inhalt → Empfänger → Test-Mail → Zeitpunkt → Check) · Empfängerlisten (Segmente) mit Filtern bauen\n\n**So funktioniert's:** Vor dem Versand prüft eine Checkliste alles Rechtliche (Domain bestätigt? Abmelde-Link? Impressum?) — bei Rot wird nicht gesendet.","x":1200,"y":2160,"width":460,"height":360,"color":"2"}, + {"id":"4cce52e2e3bd8823","type":"text","text":"## Versand-Technik & Statistiken 🌐\n**Ticket:** `D-P14` · **Status:** ⬜ offen\n**Wo:** `/email-marketing` + Einstellungen\n\n**Was drin ist:** Eigene Absender-Domain einrichten (mit Copy-Paste-Anleitung), Kampagnen-Übersicht + Statistiken (zugestellt/geöffnet/geklickt), gesperrte Empfänger, Vorlagen, 🌐 Abmelde-Seite\n\n**So funktioniert's:** Mails an Kunden tauchen automatisch am Kontakt auf (BCC-Trick, kein Postfach-Anschluss nötig — der kommt in v2).","x":1850,"y":2160,"width":460,"height":360,"color":"2"}, + {"id":"401d8270854bebac","type":"text","text":"## Team-Chat 📱\n**Ticket:** `D-CHAT` · **Status:** ⬜ offen\n**Wo:** `/chat`\n\n**Was drin ist:** Channel-Liste, Chat-Verlauf (Antwort-Threads, Emoji-Reaktionen, gelesen-von, Anhänge), Erwähnungen mit @, angepinnte Nachrichten, Suche, Direktnachrichten\n\n**So funktioniert's:** Jedes Projekt kann seinen eigenen Channel haben (Team wird automatisch synchron gehalten). Monteure: vereinfachte Handy-Ansicht mit Foto-Direktupload. Admin kann DMs nur mit Begründung einsehen.","x":5077,"y":2160,"width":460,"height":360,"color":"2"}, + {"id":"29ca06733a9b243b","type":"text","text":"## Telefonie (Anrufe)\n**Ticket:** `D-P15` · **Status:** ⬜ offen\n**Wo:** `/calls` + Einstellungen\n\n**Was drin ist:** AirCall verbinden (Telefon-Nutzer zuordnen), Anruf-Liste + Detail (Notiz, Aufnahme), Anruf-Knopf direkt an Kontakt/Anfrage/Projekt\n\n**So funktioniert's:** Anrufe werden automatisch dem richtigen Kontakt zugeordnet. Unbekannte Nummer ruft an → wird automatisch eine Anfrage im Lead-Eingang.","x":5577,"y":2160,"width":460,"height":360,"color":"5"}, + {"id":"50945ed6e43505ce","type":"text","text":"## Benachrichtigungen\n**Ticket:** `D-P3` (Teil) · **Status:** 🟡 vorgeplant (Screens validiert, Subframe offen)\n**Wo:** Glocke oben + Einstellungen\n\n**Was drin ist:** Glocke mit Ungelesen-Zähler + aufklappbare Liste (Klick springt zur Sache), eigene Seite mit allen Meldungen, Einstellungen: pro Ereignis-Typ wählen ob In-App und/oder E-Mail\n\n**So funktioniert's:** Wird von allen Features gespeist (neue Anfrage, Aufgabe fällig, Antrag genehmigt …). Master-Schalter »alle E-Mails aus«.","x":6077,"y":2160,"width":460,"height":360,"color":"5"}, + {"id":"43a26561f03f72da","type":"file","file":"02 Wireframes/P3 Querschnitt/WF-P3 Benachrichtigungen/WF-P3 Benachrichtigungen.canvas","x":6077,"y":2560,"width":460,"height":220}, + {"id":"b3cad562971d30a5","type":"text","text":"## App-Gerüst (Sidebar, Topbar & Design)\n**Ticket:** `D-D0a` · **Status:** ✅ gebaut (David, in Subframe)\n**Wo:** überall in der App\n\n**Was drin ist:** Sidebar (Module ein-/ausblendbar je Abo, Handy-Variante 📱), Topbar (Workspace-Wechsler, Suche, Glocke, Profil-Menü), Breadcrumb, Warn-Banner (z. B. »Zahlung offen«), Erfolgs-/Fehlermeldungen\n\n**Stand:** Bereits gebaut und validiert. Der Rahmen, in dem jedes Feature steckt — inkl. Farben, Schriften, Hell/Dunkel.","x":-100,"y":80,"width":460,"height":360,"color":"4"}, + {"id":"ce5632682989a6ca","type":"text","text":"## Website (Landing & Demo-Anfrage)\n**Ticket:** `D-WEB` · **Status:** ⬜ offen\n**Wo:** 🌐 hivegrid.de\n\n**Was drin ist:** Startseite, Features-Seite, Preise-Teaser, Demo-Anfrage-Formular\n\n**Warum wichtig:** Der erste Eindruck nach außen. Farben/Schriften sind dieselben wie in der App. Demo-Anfragen landen im Lead-Eingang.","x":2007,"y":80,"width":460,"height":360,"color":"2"}, + {"id":"e6d8c36a0f89d954","type":"text","text":"## Automationen: Übersicht & Verläufe\n**Ticket:** `D-P12` · **Status:** ⬜ offen\n**Wo:** `/automations`\n\n**Was drin ist:** Liste aller Automationen (aktiv/pausiert/Entwurf), Lauf-Protokolle Schritt für Schritt in Klartext, Vorlagen-Katalog (SHK-Vorlagen + eigene)\n\n**So funktioniert's:** Jeder Lauf ist nachvollziehbar; 24 h lang rückgängig machbar (Countdown-Knopf), fehlgeschlagene Schritte neu anstoßen.","x":3067,"y":3100,"width":460,"height":360,"color":"2"}, + {"id":"89c0813f7e139a88","type":"text","text":"## Dashboard (Startseite)\n**Ticket:** `D-DASH` (Teil) · **Status:** ⬜ offen\n**Wo:** `/dashboard`\n\n**Was drin ist:** 3 feste Ansichten je Rolle: Chef (Umsatz, Projekte, Auslastung) · Büro (Projekte, Aufgaben, Anrufe) · Monteur 📱 (meine Termine, Projekte, Aufgaben)\n\n**So funktioniert's:** Kacheln mit Zahlen, Listen und Trend-Charts, live aktualisiert. Kein freies Umbauen in v1 — nur Filter/Zeitraum einstellbar.","x":4037,"y":80,"width":460,"height":360,"color":"2"}, + {"id":"4a4e5be847a54e5f","type":"text","text":"## Suche (Cmd+K)\n**Ticket:** `D-DASH` (Teil) · **Status:** ⬜ offen\n**Wo:** überall + `/search`\n\n**Was drin ist:** Such-Fenster per Tastenkürzel: tippen, Treffer nach Typ gruppiert, mit Pfeiltasten navigieren · dazu große Such-Seite mit Filtern\n\n**So funktioniert's:** Findet Kontakte, Projekte, Dateien usw. — zeigt nur, was man sehen darf.","x":4537,"y":80,"width":460,"height":360,"color":"1"}, + {"id":"a-integrationen-pkg","type":"file","file":"02 Wireframes/P5 Integrationen/WF-P5 Integrationen/WF-P5 Integrationen.canvas","x":5537,"y":3500,"width":460,"height":220} + ], + "edges":[ + { + "id":"4ab78034e8253353", + "styleAttributes":{"path":"dotted","pathfindingMethod":"direct"}, + "fromNode":"b3cad562971d30a5", + "fromSide":"right", + "toNode":"d53e7ea48a9b1e6c", + "toSide":"left", + "color":"6", + "label":"Design-Grundlage" + }, + { + "id":"493a2823934c45bb", + "styleAttributes":{"path":"dotted","pathfindingMethod":"direct"}, + "fromNode":"3e27875daca5713d", + "fromSide":"right", + "toNode":"89c0813f7e139a88", + "toSide":"left", + "color":"6", + "label":"nach dem Login" + }, + { + "id":"ec751d558a1aef74", + "styleAttributes":{"pathfindingMethod":"direct"}, + "fromNode":"8272764aa65537b0", + "fromSide":"right", + "toNode":"d9868dadb782f253", + "toSide":"left", + "color":"2", + "label":"Kontakt anlegen/verknüpfen" + }, + { + "id":"154e632b2e5a645b", + "styleAttributes":{"pathfindingMethod":"direct"}, + "fromNode":"d9868dadb782f253", + "fromSide":"right", + "toNode":"e10a35560a461111", + "toSide":"left", + "color":"2", + "label":"Kontakt hängt am Projekt" + }, + { + "id":"0c0d0ba4b21da4ee", + "styleAttributes":{"pathfindingMethod":"direct"}, + "fromNode":"e10a35560a461111", + "fromSide":"right", + "toNode":"4bb807ef5e3c8dee", + "toSide":"left", + "color":"2", + "label":"gewonnen → Auftrags-Board" + }, + { + "id":"b43edef178d41dd6", + "styleAttributes":{"pathfindingMethod":"direct"}, + "fromNode":"4bb807ef5e3c8dee", + "fromSide":"right", + "toNode":"3f83fa1a16ae69df", + "toSide":"left", + "color":"2", + "label":"Termine einplanen" + }, + { + "id":"c45adb9c0c551e38", + "styleAttributes":{"pathfindingMethod":"direct"}, + "fromNode":"3f83fa1a16ae69df", + "fromSide":"right", + "toNode":"d9ad572ae83b4d0a", + "toSide":"left", + "color":"2", + "label":"Ausführung → Abnahme" + }, + { + "id":"47be96e20dcfa86a", + "styleAttributes":{ + "pathfindingMethod":null + }, + "fromFloating":false, + "fromNode":"d9ad572ae83b4d0a", + "fromSide":"bottom", + "toNode":"4bb807ef5e3c8dee", + "toSide":"bottom", + "color":"2", + "label":"Mängel → Aufgaben · dann Rechnung" + }, + { + "id":"2ec97abebcf1dcce", + "styleAttributes":{"pathfindingMethod":"direct"}, + "fromNode":"ce5632682989a6ca", + "fromSide":"bottom", + "toNode":"8272764aa65537b0", + "toSide":"top", + "color":"5", + "label":"Demo-Anfrage" + }, + { + "id":"4b89b1105393e48f", + "styleAttributes":{"pathfindingMethod":"direct"}, + "toFloating":false, + "fromNode":"6b8c7d3bc3ee7449", + "fromSide":"top", + "toNode":"8272764aa65537b0", + "toSide":"bottom", + "color":"5", + "label":"Formular → Anfrage" + }, + { + "id":"bc139947ce483198", + "styleAttributes":{"pathfindingMethod":"direct"}, + "fromNode":"77ebfde5a3a05b8a", + "fromSide":"top", + "toNode":"8272764aa65537b0", + "toSide":"bottom", + "color":"5", + "label":"Buchung → Anfrage/Termin" + }, + { + "id":"57a256b64d1a2d76", + "styleAttributes":{"pathfindingMethod":"direct"}, + "fromFloating":false, + "fromNode":"29ca06733a9b243b", + "fromSide":"top", + "toNode":"8272764aa65537b0", + "toSide":"bottom", + "color":"5", + "label":"Anruf von unbekannt → Anfrage" + }, + { + "id":"78fca84da3e723b6", + "styleAttributes":{"path":"long-dashed","pathfindingMethod":"direct"}, + "fromNode":"00d6b92d3845c185", + "fromSide":"top", + "toNode":"d9868dadb782f253", + "toSide":"bottom", + "label":"E-Mails am Kontakt sichtbar (ganzer Bereich)" + }, + { + "id":"8792d0c809babff2", + "styleAttributes":{ + "path":"long-dashed", + "pathfindingMethod":null + }, + "fromFloating":false, + "fromNode":"03e8e03ef11606a0", + "fromSide":"top", + "toNode":"3f83fa1a16ae69df", + "toSide":"bottom", + "label":"Urlaub/krank → Konflikt-Warnung" + }, + { + "id":"ce4441bfdc6a11cc", + "styleAttributes":{"path":"long-dashed","pathfindingMethod":"direct"}, + "fromNode":"28bd46ecb4eaa069", + "fromSide":"top", + "toNode":"3f83fa1a16ae69df", + "toSide":"bottom", + "label":"Kalender-Abgleich" + }, + { + "id":"77081523e546eebe", + "styleAttributes":{"path":"long-dashed","pathfindingMethod":"direct"}, + "fromFloating":false, + "fromNode":"b789fc765f833f45", + "fromSide":"top", + "toNode":"4bb807ef5e3c8dee", + "toSide":"bottom", + "label":"hängt an der Projekt-Akte" + }, + { + "id":"e6c0f9dda77f8d85", + "styleAttributes":{"path":"long-dashed","pathfindingMethod":"direct"}, + "fromNode":"401d8270854bebac", + "fromSide":"top", + "toNode":"4bb807ef5e3c8dee", + "toSide":"bottom", + "label":"Projekt-Channel im Projekt" + }, + { + "id":"65bd180bf263096e", + "styleAttributes":{"path":"long-dashed","pathfindingMethod":"direct"}, + "fromNode":"e10a35560a461111", + "fromSide":"top", + "toNode":"89c0813f7e139a88", + "toSide":"bottom", + "label":"Zahlen fürs Dashboard" + }, + { + "id":"dc15b80a5a4410c9", + "styleAttributes":{"path":"long-dashed","pathfindingMethod":"direct"}, + "fromFloating":false, + "fromNode":"db76161d24fb0c1d", + "fromSide":"right", + "toNode":"c8d8914e45e1497e", + "toSide":"left", + "label":"Feedback → Support-Inbox" + }, + { + "id":"0bb07aa23fe6a9f2", + "styleAttributes":{"path":"short-dashed","pathfindingMethod":"direct"}, + "fromNode":"28bd46ecb4eaa069", + "fromSide":"left", + "toNode":"77ebfde5a3a05b8a", + "toSide":"right", + "label":"freie Zeiten" + }, + { + "id":"cc8ccd69ae4f9435", + "styleAttributes":{"path":"short-dashed","pathfindingMethod":"direct"}, + "fromNode":"8f3127f03a5bab96", + "fromSide":"right", + "toNode":"e6d8c36a0f89d954", + "toSide":"left", + "label":"Baukasten ↔ Übersicht" + } + ], + "metadata":{ + "version":"1.0-1.0", + "frontmatter":{} + } } \ No newline at end of file diff --git a/05 HiveGrid Map/HiveGrid Map.md b/05 HiveGrid Map/HiveGrid Map.md index 7fb16a08..f622d0da 100644 --- a/05 HiveGrid Map/HiveGrid Map.md +++ b/05 HiveGrid Map/HiveGrid Map.md @@ -36,7 +36,7 @@ Gesamtkarte aller HiveGrid-v1-Features. Eine Karte = **ein Feature** (so benannt | Feature | Bereich | Ticket(s) | Aufwand | Status | |---|---|---|---|---| -| App-Gerüst (Sidebar, Topbar & Design) | Basis | D-D0a | 🔴 | ⬜ offen | +| App-Gerüst (Sidebar, Topbar & Design) | Basis | D-D0a | 🔴 | ✅ gebaut | | UI-Baukasten (Listen, Formulare, Modals …) | Basis | D-D0b | 🔴 | ✅ validiert | | Feinschliff vor Launch | Basis | D-POLISH | 🟡 Politur | ⬜ offen | | Website (Landing & Demo-Anfrage) 🌐 | Website | D-WEB | 🟠 | ⬜ offen | @@ -57,14 +57,14 @@ Gesamtkarte aller HiveGrid-v1-Features. Eine Karte = **ein Feature** (so benannt | Digital unterschreiben (E-Signatur) | Termine & Formulare | D-P16 (Teil) | 🔵 | ⬜ offen | | Team-Chat 📱 | Kommunikation | D-CHAT | 🟠 | ⬜ offen | | Telefonie (Anrufe) | Kommunikation | D-P15 | 🔵 | ⬜ offen | -| Benachrichtigungen | Kommunikation | D-P3 (Teil) | 🔵 | ⬜ offen | -| Aufgaben | Aufgaben & Dateien | D-P4 (Teil) | 🔵 | ⬜ offen | -| Dateien | Aufgaben & Dateien | D-P4 (Teil) | 🔵 | ⬜ offen | +| Benachrichtigungen | Kommunikation | D-P3 (Teil) | 🔵 | 🟡 vorgeplant | +| Aufgaben | Aufgaben & Dateien | D-P4 (Teil) | 🔵 | 🟡 vorgeplant | +| Dateien | Aufgaben & Dateien | D-P4 (Teil) | 🔵 | 🟡 vorgeplant | | Automations-Baukasten (Flow-Editor) | Automationen | D-FLOW | 🔴 schwerste UI | ⬜ offen | | Automationen: Übersicht & Verläufe | Automationen | D-P12 | 🟠 | ⬜ offen | | HR-Bereich 📱 | HR | D-HR | 🔵 breit | ⬜ offen | -| Integrationen (Apps verbinden) | Verwaltung | D-P5 | 🔵 | ⬜ offen | -| Aktivitäts-Protokoll (Audit-Log) | Verwaltung | D-P3 (Teil) | 🔵 | ⬜ offen | +| Integrationen (Apps verbinden) | Verwaltung | D-P5 | 🔵 | 🟡 vorgeplant | +| Aktivitäts-Protokoll (Audit-Log) | Verwaltung | D-P3 (Teil) | 🔵 | 🟡 vorgeplant | | Abo & Rechnungen (für HiveGrid) | Verwaltung | D-P20 (Teil) | 🔵 | ⚠️ Recut | | Erste Schritte & Demo-Daten | Verwaltung | D-P20 (Teil) | 🔵 | ⬜ offen | | Datenschutz (Export & Löschung) | Verwaltung | D-P21 (Teil) | 🔵 | ⬜ offen | @@ -138,13 +138,14 @@ Abhaken = in der groben Planung berücksichtigt (Screens/Flow verortet). Quelle: ### Basis -#### App-Gerüst (Sidebar, Topbar & Design) — `D-D0a` — ⬜ offen -- [ ] Design-Grundlagen: Farben, Schriften, Abstände, Hell/Dunkel ohne Aufblitzen -- [ ] Sidebar: Module je Abo ein-/ausblendbar, Bereiche »Arbeit« + »Verwaltung«, einklappbar, Handy-Variante 📱 -- [ ] Topbar: Workspace-Wechsler, Such-Knopf (Cmd+K), Benachrichtigungs-Glocke, Profil-Menü -- [ ] Breadcrumb (Pfad-Anzeige bis zum Datensatz) -- [ ] Warn-Banner-System (Zahlung offen / eingefroren / Löschung geplant / gesperrt — stapelbar) -- [ ] Erfolgs-/Fehlermeldungen in Klartext mit Lösungs-Knopf +#### App-Gerüst (Sidebar, Topbar & Design) — `D-D0a` — ✅ gebaut (David, in Subframe) +- [x] Design-Grundlagen: Farben, Schriften, Abstände, Hell/Dunkel ohne Aufblitzen +- [x] Sidebar: Module je Abo ein-/ausblendbar, Bereiche »Arbeit« + »Verwaltung«, einklappbar, Handy-Variante 📱 +- [x] Topbar: Workspace-Wechsler, Such-Knopf (Cmd+K), Benachrichtigungs-Glocke, Profil-Menü +- [x] Breadcrumb (Pfad-Anzeige bis zum Datensatz) +- [x] Warn-Banner-System (Zahlung offen / eingefroren / Löschung geplant / gesperrt — stapelbar) +- [x] Erfolgs-/Fehlermeldungen in Klartext mit Lösungs-Knopf +- Stand 2026-07-08: von David gebaut und für passend erklärt; finale Sidebar-Belegung (welche Punkte, welche Gruppierung) wird in der Infrastruktur-Runde festgezurrt. #### UI-Baukasten (Listen, Formulare, Modals …) — `D-D0b` — ✅ validiert - [x] Bausteine: Liste, Detailseite (mit Aktivitäts-Verlauf), Formular-Felder (12 Typen), Dialog/Wizard, Settings-Seite, Zustands-Set (leer/laden/Fehler/kein Zugriff/offline) @@ -320,29 +321,35 @@ Abhaken = in der groben Planung berücksichtigt (Screens/Flow verortet). Quelle: - [ ] Meldung bei eingehendem Anruf; unbekannte Nummer → automatisch neue Anfrage - v2: HalloPetra (KI-Telefonassistent). -#### Benachrichtigungen — `D-P3` (Teil) — ⬜ offen -- [ ] Glocke mit Ungelesen-Zähler + Aufklapp-Liste (Klick springt direkt zur Sache) -- [ ] Eigene Seite mit allen Meldungen (Reiter Alle/Ungelesen, als gelesen markieren, aufräumen) -- [ ] Einstellungen: je Ereignis-Typ wählbar In-App und/oder E-Mail, Master-Schalter »alle E-Mails aus« -- [ ] Klartext-Hinweis, wenn Mails nicht ankommen +#### Benachrichtigungen — `D-P3` (Teil) — 🟡 vorgeplant (2026-07-08) +- [x] Glocke mit Ungelesen-Zähler + Aufklapp-Liste (Klick springt direkt zur Sache) +- [x] Eigene Seite mit allen Meldungen (Reiter Alle/Ungelesen, als gelesen markieren, aufräumen) +- [x] Einstellungen: je Ereignis-Typ wählbar In-App und/oder E-Mail, Master-Schalter »alle E-Mails aus« +- [x] Klartext-Hinweis, wenn Mails nicht ankommen +- Davids Ergänzungen: Drawer mit »Alle anzeigen«, Aktualisieren, Wegklicken einzelner Einträge, Typ-Icons je Quelle - v2: Ruhezeiten, Zusammenfassen, Push. +- Paket: `02 Wireframes/P3 Querschnitt/WF-P3 Benachrichtigungen/` (Screens validiert; Subframe steht aus) ### Aufgaben & Dateien -#### Aufgaben — `D-P4` (Teil) — ⬜ offen -- [ ] Aufgaben-Liste (Meine / von mir erstellt / Alle, Filter, Mehrfach-Aktionen, Schnell-Aktionen in der Zeile) -- [ ] Aufgabe: Frist (überfällig = rot), Priorität, zuständig Person ODER Gruppe, Beobachter, Verknüpfung zu Kontakt/Projekt/… -- [ ] Herkunft sichtbar: von Hand / aus Chat / aus Formular / aus Automation — mit Link zur Quelle -- [ ] Neue Aufgabe als Dialog (auch vorbefüllt aus einer Detailseite heraus) -- [ ] Als Reiter in jeder Detailseite eingebettet (»Aufgabe anlegen« direkt dort) -- [ ] Erinnerungs-Hinweise (vor / bei / nach Frist), Auto-Archiv nach 30 Tagen +#### Aufgaben — `D-P4` (Teil) — 🟡 vorgeplant (2026-07-08) +- [x] Aufgaben-Liste (Meine / von mir erstellt / Alle, Filter, Mehrfach-Aktionen, Schnell-Aktionen in der Zeile) +- [x] Aufgabe: Frist (überfällig = rot), Priorität, zuständig Person ODER Gruppe, Beobachter, Verknüpfung zu Kontakt/Projekt/… +- [x] Herkunft sichtbar: von Hand / aus Chat / aus Formular / aus Automation — mit Link zur Quelle +- [x] Neue Aufgabe als Dialog (auch vorbefüllt aus einer Detailseite heraus) +- [x] Als Reiter in jeder Detailseite eingebettet — als eigener Frame V01 (Einbett-Muster) +- [x] Erinnerungs-Hinweise (vor / bei / nach Frist), Auto-Archiv nach 30 Tagen +- Davids Ergänzung (Delta): Topbar-Button »Meine Aufgaben« + Aufgaben-Drawer rechts (Schnellzugriff) +- Paket: `02 Wireframes/P4 Aufgaben und Dateien/WF-P4 Aufgaben/` (Screens validiert; Subframe steht aus) -#### Dateien — `D-P4` (Teil) — ⬜ offen -- [ ] Datei-Übersicht (Tabelle/Kacheln, Filter nach Verknüpfung/Typ/Tags, Mehrfach-Aktionen inkl. ZIP-Download) -- [ ] Upload per Drag&Drop (mehrere gleichzeitig, Fortschritt je Datei, Fehler + erneut versuchen) -- [ ] Datei-Detail (Vorschau Bild/PDF, iPhone-Fotos werden automatisch JPG, Tags, Notizen, Verknüpfungen mit Rolle) -- [ ] Als vorgefilterte Sektion in jeder Detailseite eingebettet -- v2: Datei-Versionen, Office-/Video-Vorschau, Texterkennung. +#### Dateien — `D-P4` (Teil) — 🟡 vorgeplant (2026-07-08) +- [x] Datei-Übersicht (Tabelle/Kacheln, Filter nach Verknüpfung/Typ/Tags, Mehrfach-Aktionen inkl. ZIP-Download) + Presets »Meine Dateien / Alle« +- [x] Upload per Drag&Drop (mehrere gleichzeitig, Fortschritt je Datei, Fehler + erneut versuchen) +- [x] Datei-Detail (Vorschau Bild/PDF, iPhone-Fotos werden automatisch JPG, Tags, Notizen, Verknüpfungen mit Rolle) +- [x] Als vorgefilterte Sektion in jeder Detailseite eingebettet +- **Teilen/Freigeben einzelner Dateien = v1** (Davids Entscheidung 2026-07-08) → Change-Request an Dev, UI wird im Paket mitgeplant. Ordner + Versionen bleiben v2. +- v2: Ordner, Datei-Versionen, Office-/Video-Vorschau, Texterkennung. +- Paket: `02 Wireframes/P4 Aufgaben und Dateien/WF-P4 Dateien/` (Screens validiert; Subframe steht aus) ### Automationen @@ -376,20 +383,24 @@ Abhaken = in der groben Planung berücksichtigt (Screens/Flow verortet). Quelle: ### Verwaltung -#### Integrationen (Apps verbinden) — `D-P5` — ⬜ offen -- [ ] App-Katalog (nach Kategorie, Logo, Status-Ampel, aktive Verbindungen) -- [ ] Verbindung einrichten: Schritt-für-Schritt (Voraussetzungen → Zugangsdaten → Test → erster Abgleich) -- [ ] Verbindungs-Verwaltung (mehrere je App, neu verbinden, trennen mit Nachfrage) -- [ ] Abgleich-Verlauf in Klartext (»32 Kontakte aktualisiert, 2 Fehler«) mit Detail-Ansicht -- [ ] Zustands-Ampel (läuft / hakt / kaputt / getrennt) mit Lösungs-Hinweisen +#### Integrationen (Apps verbinden) — `D-P5` — 🟡 vorgeplant (2026-07-08) +- [x] App-Katalog (nach Kategorie inkl. KI/MCP, Logo, Status-Ampel, aktive Verbindungen, Suche + Filter) +- [x] Verbindung einrichten: Schritt-für-Schritt (Voraussetzungen → Zugangsdaten → Test → erster Abgleich) — beide Wege als Frames: OAuth + API-Schlüssel +- [x] Verbindungs-Verwaltung (mehrere je App mit Namens-Label, neu verbinden, trennen mit mehrstufiger Nachfrage, kein Hard-Delete) +- [x] Abgleich-Verlauf in Klartext (»32 Kontakte aktualisiert, 2 Fehler«) mit Lauf-Detail — als **eigene Seiten** (Davids Entscheidung) +- [x] Zustands-Ampel (läuft / hakt / kaputt / getrennt) mit Lösungs-Hinweisen +- Offen: kommende Apps als Teaser mit Schloss im Katalog? (David/Dev) - Gemeinsames Gerüst für: E-Mail, Telefonie, Kalender, Signatur. KWP-Oberfläche → v2. +- Paket: `02 Wireframes/P5 Integrationen/WF-P5 Integrationen/` (Screens validiert; Subframe steht aus) -#### Aktivitäts-Protokoll (Audit-Log) — `D-P3` (Teil) — ⬜ offen -- [ ] Protokoll-Liste: wer (Mensch/Automation/Agent/Admin), wann, was — als deutscher Klartext-Satz, mit Filtern -- [ ] Detail-Ansicht mit Vorher/Nachher-Vergleich Feld für Feld -- [ ] Export mit Pflicht-Angabe des Zwecks (Jobs mit Status + Download) -- [ ] »Verlauf dieses Objekts« als einblendbare Leiste an jeder Detailseite +#### Aktivitäts-Protokoll (Audit-Log) — `D-P3` (Teil) — 🟡 vorgeplant (2026-07-08) +- [x] Protokoll-Liste: wer (Mensch/Automation/Agent/Admin), wann, was — als deutscher Klartext-Satz, mit Filtern +- [x] Detail-Ansicht mit Vorher/Nachher-Vergleich Feld für Feld +- [x] Export mit Pflicht-Angabe des Zwecks (Jobs mit Status + Download) — als Reiter im Protokoll-Screen +- [x] »Verlauf dieses Objekts« als wiederverwendbarer Drawer für jede Detailseite +- Davids Ergänzung: sortier-/filterbar nach Mitarbeiter, Zeitraum, Bereich (Modul) und Änderungs-Art - v2: Aufbewahrungs-Regeln, gespeicherte Ansichten. +- Paket: `02 Wireframes/P3 Querschnitt/WF-P3 Audit Log/` (Screens validiert; Subframe steht aus) #### Abo & Rechnungen (für HiveGrid) — `D-P20` (Teil) — ⚠️ Ticket braucht Recut (AD-27) - [ ] Abo-Übersicht nur lesend (Plan, Plätze, gebuchte Module, Test-Countdown) @@ -441,4 +452,4 @@ Abhaken = in der groben Planung berücksichtigt (Screens/Flow verortet). Quelle: | 1 | Dashboard: nur 3 Rollen-Ansichten beschlossen (Spec nennt 7) — Rest v2 oder nachschieben? | offen (Raffael) | | 2 | Benachrichtigungs-Test-Knopf für Admins (Mini-Feature für Demos) — drin lassen? | offen | | 3 | »Abo & Rechnungen«-Brief nach Billing-Umbau (AD-27) neu schneiden | offen | -| 4 | D-D0a (App-Gerüst) offiziell abschließen? Layout-Standards sind validiert, das Shell-Ticket steht noch auf »geplant« | offen (David) | +| 4 | ~~D-D0a (App-Gerüst) offiziell abschließen?~~ → Von David gebaut und abgenommen (2026-07-08). Ticket-Handoff-Datei noch anlegen. | erledigt | diff --git a/05 HiveGrid Map/Infrastruktur und Navigation.md b/05 HiveGrid Map/Infrastruktur und Navigation.md new file mode 100644 index 00000000..7010499e --- /dev/null +++ b/05 HiveGrid Map/Infrastruktur und Navigation.md @@ -0,0 +1,116 @@ +--- +kind: decisions +project: HiveGrid Screen Project +area: HiveGrid Map +topic: Infrastruktur & Navigation +status: in Arbeit +stand: 2026-07-08 +--- + +# Infrastruktur & Navigation + +High-Level-Entscheidungen: wo Tools in der UI sitzen, wie sie heißen, wie man zu Einstellungen kommt. Grundsatz: **Wir weichen nicht vom Repo ab** — welche Tools es gibt und was sie können, ist fix. Hier geht es nur um Platzierung, Benennung und Navigation. Echte Repo-Fehler werden markiert und gefixt. + +## 1. Sidebar — Ist-Stand (von David gebaut, 2026-07-08) + +| Gruppe | Punkte | +|---|---| +| 1 | Dashboard · Kontakte · Leads · Pipelines · Aufgaben | +| 2 | Kalender · Terminbuchung · Dateien · Formulare | +| 3 | Chat · Telefonie · Marketing | +| 4 | Automation · KI | +| 5 | Integrationen · Einstellungen | + +Die Gruppierung mit Trennlinien ist validiert und bleibt. + +## 2. Abgleich mit dem Repo — nötige Anpassungen + +Alle Punkte am 2026-07-08 mit David entschieden: + +| # | Punkt | Befund | Entscheidung | +|---|---|---|---| +| 1 | „Dashbord" | Tippfehler | ✅ → „Dashboard" (David fixt in Subframe) | +| 2 | „KI"-Punkt | Kein KI-Layer in v1 (AD-26); HiveGrid wird von außen per MCP angesteuert | ✅ Punkt wird zu **„MCP"** umbenannt (MCP-Server-Anbindung). Achtung: Feature selbst ist v2 (VR-MCP) — Punkt in v1 als gesperrter „bald"-Platzhalter behandeln | +| 3 | Plantafel fehlt | Kern-Werkzeug, eigene Route `/projects/plantafel` | ✅ rein — Gruppe 2 (Planung), neben Kalender | +| 4 | HR fehlt | Eigenes Modul `/hr` | ✅ rein — unterste Arbeits-Gruppe (Abo-Modul, ggf. mit Schloss) | +| 5 | „Pipelines" als Label | UI-Label ist Davids Freiheit | ✅ bleibt **„Pipelines"** | +| 6 | „Leads" als Label | UI-Label ist Davids Freiheit | ✅ bleibt **„Leads"** | +| 7 | „Automation" | Spec-Sidebar hatte Automationen vergessen — Davids Sidebar hat es richtig drin | ✅ bleibt | +| 8 | „Integrationen" als Top-Punkt | Repo-Route `/admin/integrations` | ✅ bleibt eigener Punkt — Default für Admin; Sichtbarkeit für andere später über Rollen/Rechte | + +**Ziel-Sidebar v1** (Änderungen fett): + +| Gruppe | Punkte | +|---|---| +| 1 | Dashboard · Kontakte · Leads · Pipelines · Aufgaben | +| 2 | Kalender · Terminbuchung · **Plantafel** · Dateien · Formulare | +| 3 | Chat · Telefonie · Marketing | +| 4 | Automation · **MCP** (v1 gesperrt) · **HR** | +| 5 | Integrationen · Einstellungen | + +## 3. Einstellungen — ein Hub, kein separater Admin-Tab ✅ (Empfehlung, zu bestätigen) + +Frage war: „Einstellungen" und zusätzlich ein eigener „Admin"-Tab? Entscheidung Vorschlag: + +**EIN Punkt „Einstellungen"**, innen getrennt durch die Seitennavigation. Begründung: +- SHK-Betriebe sind klein — der Chef IST der Admin. Zwei Orte („wo war das nochmal — Einstellungen oder Admin?") erzeugen genau die Verwirrung, die wir vermeiden wollen. +- P2 hat das Muster schon validiert und gebaut: „Einstellungen → Mitarbeiter" mit Tabs. Mitarbeiter & Rollen gehören also in die Einstellungen. ✅ +- Was man nicht darf, sieht man nicht (Permission-Gate blendet Workspace-Sektionen für Nicht-Admins aus) — die Trennung passiert über Rechte, nicht über zwei Menüpunkte. + +Grobe Innen-Gliederung (Detail kommt beim jeweiligen Feature): +- **Persönlich:** Profil · Sicherheit · Benachrichtigungen +- **Team:** Mitarbeiter & Rollen *(gebaut, P2)* +- **Daten:** Eigene Felder · Tags · Duplikate +- **Verbindungen:** Integrationen · E-Mail-Domain · Telefonie · Kalender +- **Workspace:** Abo & Rechnungen · Aktivitäts-Protokoll · Datenschutz · Demo-Daten & Erste Schritte + +## 4. Zentral vs. atomar — die Unterscheidungsregel ✅ + +Davids Anforderung: klare Trennung, damit niemand rätselt, wo eine Einstellung lebt. + +**Faustregel:** +- **Im Tool (atomar):** alles, was verändert, wie DIESES Tool aussieht und arbeitet — oft pro Nutzer oder pro Board. Beispiele: Kanban — welche Felder auf der Karte sichtbar sind, wo sie sitzen, Feld-Verschieben; Listen-Spalten konfigurieren; Filter; Plantafel-Ansicht; Formular-Builder selbst; Buchungsseiten + Verfügbarkeit im Terminbuchungs-Tool. +- **In den Einstellungen (zentral):** alles, was Struktur, Menschen, Rechte, Geld, Daten oder Verbindungen betrifft und workspace-weit gilt. Beispiele: Mitarbeiter & Rollen, Pipeline-Struktur (welche Boards existieren, Spalten, Pflichtfelder, wer sie sieht), eigene Felder, Tags, Integrationen, Abo, Datenschutz. +- **Brücke:** Tools mit zentralen Einstellungen bekommen einen klar beschrifteten Einstieg im Tool-Header (z. B. „Board verwalten" im Kanban) — der springt in die Einstellungen (gleiche Seite, kein Duplikat). Beschriftet, nicht nur ein Zahnrad-Icon, damit klar ist: Das führt woanders hin. + +Merksatz: **„Ansicht & Arbeitsweise = im Tool. Struktur & Rechte = in den Einstellungen."** + +## 5. Mobile ✅ + +- v1 mobil = **responsive PWA-Version der Web-App** (kein eigenes App-Design), Monteur-Flächen (Plantafel „Heute", Abnahme, Chat) sind mobile-first designt. +- Bottom-Nav (Handy): **Heute (meine Termine) · Projekte · Aufgaben · Chat · Mehr** — Chat wird mitgeplant, auch wenn er zum Start evtl. noch nicht fertig ist. +- Monteur landet nach Login auf seinem Monteur-Dashboard (= genau diese „Heute"-Inhalte laut Spec). + +## 6. Abo-Gating: Schloss statt unsichtbar ✅ + +Nicht gebuchte Module bleiben **sichtbar mit Schloss + „Freischalten"-Hinweis** — Luft nach oben soll offensichtlich sein. Der Admin kann sie zusätzlich aktiv ausblenden. (Repo unterstützt beides: „ausgeblendet/gesperrt".) + +## 7. Rollen-Ansichten: erst am Ende ✅ + +Wir designen jetzt überall die **Maximalansicht (Admin sieht alles)**. Rollen-/Persona-Sichten (Chef/Büro/Monteur) werden ganz am Ende als eigener Durchgang geplant. Ausnahme: Monteur-Mobil-Flächen, die per Spec mobile-first sind (Plantafel, Abnahme), werden direkt mitgedacht. + +## 8. Bearbeitungs-Reihenfolge: nach Abhängigkeiten ✅ + +Gemäß blocked-by der Tickets — erst Querschnitt (wird überall eingebettet), dann die Kern-Kette, dann Zubringer: + +| # | Feature | Ticket | Warum an dieser Stelle | +|---|---|---|---| +| 1 | Benachrichtigungen + Aktivitäts-Protokoll | D-P3 | Querschnitt: Glocke + Verlaufs-Drawer stecken in jedem Feature | +| 2 | Aufgaben + Dateien | D-P4 | Querschnitt: Reiter in jeder Detailseite | +| 3 | Integrationen | D-P5 | Framework für alle Verbindungs-Karten (E-Mail, Telefonie, Kalender, Signatur) | +| 4 | Kontakte & Organisationen | D-CRM | Detailseite = Vorlage für ALLE Detailseiten | +| 5 | Lead-Eingang | D-P7 | Start der Kette | +| 6 | Kanban-Board & Pipelines | D-P8 + D-KANBAN | Kern der Kette | +| 7 | Projekt-Akte / Plantafel / Abnahme | D-P9, D-PLAN, D-ABN | Auftrags-Kette | +| 8 | danach | Zubringer + Rest | Formulare, Terminbuchung, Kalender, Chat, Telefonie, Marketing, Automationen, HR, Dashboard/Suche, Verwaltung | + +Langläufer-Hinweis: Der **Automations-Baukasten (D-FLOW)** ist die schwerste UI und sollte parallel früh angerissen werden, sobald die Querschnitts-Runde durch ist. + +## Offene Punkte aus dieser Runde + +- [x] KI-Punkt → wird „MCP" (v1 gesperrter Platzhalter) — entschieden 2026-07-08 +- [x] Plantafel + HR in die Sidebar — entschieden: beide rein +- [x] Labels „Pipelines" und „Leads" — bleiben wie gebaut +- [x] „Integrationen" — bleibt eigener Top-Punkt (Admin-Default, Sichtbarkeit via Rollen) +- [ ] David: Sidebar in Subframe nachziehen (Dashboard-Tippfehler, MCP-Label, + Plantafel, + HR) +- [ ] Einstellungen-Innen-Gliederung (Abschnitt 3) im Detail — wird beim jeweiligen Feature festgezurrt