Plan Querschnitt-Pakete P3-P5 und Infrastruktur-Entscheidungen
- Feature Map: Regelwerk, Kanten-System, Paket-Canvas-Verknuepfungen, MD-Links - Infrastruktur & Navigation: Sidebar-Abgleich, Einstellungen-Modell, Mobile, Gating - WF-P3 Benachrichtigungen + Audit Log (validiert) - WF-P4 Aufgaben (inkl. Topbar-Drawer-Delta) + Dateien (inkl. Teilen v1, CR an Dev) - WF-P5 Integrationen (Sync-Verlauf als eigene Seiten) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
1363933387
commit
e48a5a46e8
38 files changed
+3147
-732
No files matched your search
@@ -0,0 +1,41 @@
|
||||
---
|
||||
kind: screen
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-P5
|
||||
package: WF-P5 Integrationen
|
||||
id: M01
|
||||
screen: Assistent OAuth
|
||||
typ: Modal/Wizard
|
||||
umsetzung: Bauen
|
||||
status: Validiert
|
||||
route: "aus S02, Verbinden"
|
||||
subframe: ""
|
||||
---
|
||||
|
||||
# M01 — Assistent (OAuth-Weg)
|
||||
|
||||
## Ziel
|
||||
|
||||
Dienst per »Bei … anmelden«-Knopf verbinden — der bequeme Weg (z. B. Google, AirCall).
|
||||
|
||||
## Pattern / Archetyp
|
||||
|
||||
A5 mehrstufiger Wizard mit Fortschritts-Anzeige (echtes Modal: DialogLayout → Dialog → Dialog.Content).
|
||||
|
||||
## Schritte
|
||||
|
||||
1. **Voraussetzungen** — Klartext: was man braucht, was passiert
|
||||
2. **Anmelden** — Namens-Label vergeben + »Bei [Dienst] anmelden«-Knopf → externe Weiterleitung → zurück
|
||||
3. **Verbindungs-Test** — automatisch, mit ✓/✗ und Klartext
|
||||
4. **Erster Abgleich** (optional) — jetzt starten oder später
|
||||
|
||||
## Meldungsentscheidung
|
||||
|
||||
| Ereignis | UI-Form | Blockiert? | Umsetzung | Copy/Notiz |
|
||||
|---|---|---|---|---|
|
||||
| Anmeldung abgebrochen/fehlgeschlagen | Schritt-Fehler + erneut versuchen | ja (Schritt) | Nur dokumentieren | Klartext-Grund |
|
||||
| Verbindungs-Test fehlgeschlagen | Schritt-Fehler + zurück | ja (Schritt) | Nur dokumentieren | Lösungs-Hinweis |
|
||||
|
||||
## Subframe
|
||||
|
||||
- (erst nach explizitem OK)
|
||||
+45
@@ -0,0 +1,45 @@
|
||||
---
|
||||
kind: screen
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-P5
|
||||
package: WF-P5 Integrationen
|
||||
id: M02
|
||||
screen: Assistent API-Schluessel
|
||||
typ: Modal/Wizard
|
||||
umsetzung: Bauen
|
||||
status: Validiert
|
||||
route: "aus S02, Verbinden"
|
||||
subframe: ""
|
||||
---
|
||||
|
||||
# M02 — Assistent (API-Schlüssel-Weg)
|
||||
|
||||
## Ziel
|
||||
|
||||
Dienst per kopiertem Schlüssel verbinden (z. B. KWP, Dienste ohne OAuth).
|
||||
|
||||
## Pattern / Archetyp
|
||||
|
||||
A5 mehrstufiger Wizard — gleiche Schritte wie [[M01 Assistent OAuth]], nur der Zugangsdaten-Schritt unterscheidet sich.
|
||||
|
||||
## Schritte
|
||||
|
||||
1. **Voraussetzungen** — Klartext inkl. »wo finde ich den Schlüssel« (Kurz-Anleitung je App)
|
||||
2. **Zugangsdaten** — Namens-Label + **auto-generiertes Formular** aus dem App-Schema (Text-/Schlüssel-/Geheimnis-Felder mit Anzeigen-Toggle)
|
||||
3. **Verbindungs-Test** — automatisch, ✓/✗ mit Klartext
|
||||
4. **Erster Abgleich** (optional)
|
||||
|
||||
## Meldungsentscheidung
|
||||
|
||||
| Ereignis | UI-Form | Blockiert? | Umsetzung | Copy/Notiz |
|
||||
|---|---|---|---|---|
|
||||
| Pflichtfeld leer / Format falsch | Inline-Validierung | ja (Feld) | Nur dokumentieren | — |
|
||||
| Verbindungs-Test fehlgeschlagen | Schritt-Fehler + zurück | ja (Schritt) | Nur dokumentieren | »Schlüssel prüfen« |
|
||||
|
||||
## Subframe
|
||||
|
||||
- (erst nach explizitem OK)
|
||||
|
||||
## Notizen
|
||||
|
||||
- Das Formular kommt aus dem `connection_schema` der jeweiligen App — wir designen die Feld-Typen, nicht die konkreten Felder.
|
||||
+43
@@ -0,0 +1,43 @@
|
||||
---
|
||||
kind: screen
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-P5
|
||||
package: WF-P5 Integrationen
|
||||
id: M03
|
||||
screen: Trennen-Bestaetigung
|
||||
typ: Modal (mehrstufig)
|
||||
umsetzung: Bauen
|
||||
status: Validiert
|
||||
route: "aus S02, Trennen"
|
||||
subframe: ""
|
||||
---
|
||||
|
||||
# M03 — Trennen-Bestätigung
|
||||
|
||||
## Ziel
|
||||
|
||||
Verbindung bewusst und informiert trennen — nichts geht versehentlich kaputt.
|
||||
|
||||
## Pattern / Archetyp
|
||||
|
||||
A5 Bestätigungs-Dialog, mehrstufig.
|
||||
|
||||
## Inhalt
|
||||
|
||||
- Klartext, was passiert: »Beim Trennen werden alle Abgleich-Jobs gestoppt. Bereits übertragene Daten bleiben erhalten. Die Verbindung wird als getrennt markiert (kein Löschen).«
|
||||
- Bestätigung (zweiter Schritt / bewusste Aktion)
|
||||
|
||||
## Aktionen
|
||||
|
||||
- »Trennen« → Card wird grau (getrennt), Toast
|
||||
- Abbrechen
|
||||
|
||||
## Meldungsentscheidung
|
||||
|
||||
| Ereignis | UI-Form | Blockiert? | Umsetzung | Copy/Notiz |
|
||||
|---|---|---|---|---|
|
||||
| Trennen fehlgeschlagen | Toast mit Klartext | nein | Wiederverwenden | erneut versuchen |
|
||||
|
||||
## Subframe
|
||||
|
||||
- (erst nach explizitem OK)
|
||||
@@ -0,0 +1,52 @@
|
||||
---
|
||||
kind: screen
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-P5
|
||||
package: WF-P5 Integrationen
|
||||
id: S01
|
||||
screen: App-Katalog
|
||||
typ: Katalog
|
||||
umsetzung: Bauen
|
||||
status: Validiert
|
||||
route: "/admin/integrations"
|
||||
subframe: ""
|
||||
---
|
||||
|
||||
# S01 — App-Katalog
|
||||
|
||||
## Ziel
|
||||
|
||||
Auf einen Blick sehen, welche Dienste es gibt und was verbunden ist — der „App-Store" von HiveGrid.
|
||||
|
||||
## Pattern / Archetyp
|
||||
|
||||
A6 — Karten-Grid, nach Kategorie gruppiert.
|
||||
|
||||
## Daten
|
||||
|
||||
- Kategorien: ERP · Kommunikation · Kalender · Signatur · Payment · KI/MCP
|
||||
- Je App-Karte: Logo · Name · Kurzbeschreibung · Status-Ampel (grün läuft / gelb hakt / rot kaputt / grau nicht verbunden) · Anzahl aktiver Verbindungen
|
||||
- Suche + Filter (Kategorie / Status)
|
||||
|
||||
## Aktionen
|
||||
|
||||
- App-Karte öffnen → [[S02 App-Seite]]
|
||||
|
||||
## Zustände
|
||||
|
||||
| Zustand | Beschreibung | Umsetzung |
|
||||
|---|---|---|
|
||||
| Filter ohne Treffer | Leer-Zustand + zurücksetzen | Nur dokumentieren |
|
||||
| Laden / Fehler / Kein Zugriff | A7 | Wiederverwenden |
|
||||
|
||||
## Permissions / Gates
|
||||
|
||||
`integrations.read`.
|
||||
|
||||
## Subframe
|
||||
|
||||
- (erst nach explizitem OK)
|
||||
|
||||
## Notizen
|
||||
|
||||
- Offen: kommende Apps als Teaser mit Schloss zeigen? (analog Abo-Gating)
|
||||
@@ -0,0 +1,54 @@
|
||||
---
|
||||
kind: screen
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-P5
|
||||
package: WF-P5 Integrationen
|
||||
id: S02
|
||||
screen: App-Seite
|
||||
typ: Verwaltung
|
||||
umsetzung: Bauen
|
||||
status: Validiert
|
||||
route: "/admin/integrations/:app"
|
||||
subframe: ""
|
||||
---
|
||||
|
||||
# S02 — App-Seite (Verbindungs-Verwaltung)
|
||||
|
||||
## Ziel
|
||||
|
||||
Alle Verbindungen einer App verwalten und ihren Zustand in Klartext verstehen.
|
||||
|
||||
## Pattern / Archetyp
|
||||
|
||||
A6 mit **wiederverwendbarer Connection-Card** (das Muster, das P14/P15/P16 später in ihren Settings nutzen).
|
||||
|
||||
## Daten
|
||||
|
||||
- Kopf: App-Logo, Beschreibung, Doku-Link
|
||||
- Je Verbindung eine **Connection-Card**: Namens-Label (z. B. »Büro«) · Status-Ampel · Klartext-Status (»Zugang abgelaufen — neu verbinden«) · letzter Abgleich
|
||||
- Mehrere Verbindungen pro App möglich
|
||||
- Letzte Läufe kompakt (Datum, Klartext-Summary) + »Alle Läufe anzeigen« → [[S03 Sync-Verlauf]]
|
||||
|
||||
## Aktionen
|
||||
|
||||
- »Verbinden« → [[M01 Assistent OAuth]] oder [[M02 Assistent API-Schluessel]] (je nach App)
|
||||
- Je Card: Neu abgleichen (mit Klartext-Fortschritt) · Neu verbinden (bei gelb/rot) · Trennen → [[M03 Trennen-Bestaetigung]]
|
||||
|
||||
## Banner / Hinweise
|
||||
|
||||
- Gelb/Rot/Schema geändert → Klartext-Banner mit Lösungs-Knopf
|
||||
|
||||
## Zustände
|
||||
|
||||
| Zustand | Beschreibung | Umsetzung |
|
||||
|---|---|---|
|
||||
| Keine Verbindung | Leer-Zustand + »Verbinden«-Knopf | Nur dokumentieren |
|
||||
| Laden / Fehler / Kein Zugriff | A7 | Wiederverwenden |
|
||||
|
||||
## Permissions / Gates
|
||||
|
||||
`integrations.connect/.disconnect/.manual_sync` — Knöpfe rechte-abhängig.
|
||||
|
||||
## Subframe
|
||||
|
||||
- (erst nach explizitem OK)
|
||||
@@ -0,0 +1,44 @@
|
||||
---
|
||||
kind: screen
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-P5
|
||||
package: WF-P5 Integrationen
|
||||
id: S03
|
||||
screen: Sync-Verlauf
|
||||
typ: Liste
|
||||
umsetzung: Bauen
|
||||
status: Validiert
|
||||
route: "/admin/integrations/:app/syncs"
|
||||
subframe: ""
|
||||
---
|
||||
|
||||
# S03 — Sync-Verlauf
|
||||
|
||||
## Ziel
|
||||
|
||||
Nachvollziehen, was wann übertragen wurde — jede Zeile in Klartext. **Eigene Seite (Davids Entscheidung, kein Drawer).**
|
||||
|
||||
## Pattern / Archetyp
|
||||
|
||||
A2 Liste.
|
||||
|
||||
## Daten
|
||||
|
||||
- Je Lauf: Datum · Art (holen/senden/Webhook/manuell) · Status · Zähler (gesamt/ok/fehlgeschlagen) · **Klartext-Summary** (»14 Aufträge geholt, 2 fehlgeschlagen«)
|
||||
- Filter: Datum, Status, Art
|
||||
|
||||
## Aktionen
|
||||
|
||||
- Lauf öffnen → [[S04 Lauf-Detail]]
|
||||
- Manueller Abgleich anstoßen
|
||||
|
||||
## Zustände
|
||||
|
||||
| Zustand | Beschreibung | Umsetzung |
|
||||
|---|---|---|
|
||||
| Leer | »Noch keine Abgleiche gelaufen« | Nur dokumentieren |
|
||||
| Laden / Fehler / Kein Zugriff | A7 (`integrations.view_logs`) | Wiederverwenden |
|
||||
|
||||
## Subframe
|
||||
|
||||
- (erst nach explizitem OK)
|
||||
@@ -0,0 +1,44 @@
|
||||
---
|
||||
kind: screen
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-P5
|
||||
package: WF-P5 Integrationen
|
||||
id: S04
|
||||
screen: Lauf-Detail
|
||||
typ: Detail
|
||||
umsetzung: Bauen
|
||||
status: Validiert
|
||||
route: "/admin/integrations/:app/syncs/:id"
|
||||
subframe: ""
|
||||
---
|
||||
|
||||
# S04 — Lauf-Detail
|
||||
|
||||
## Ziel
|
||||
|
||||
Bei Problemen genau sehen, welcher Datensatz warum gescheitert ist. **Eigene Seite (Davids Entscheidung).**
|
||||
|
||||
## Pattern / Archetyp
|
||||
|
||||
A3 Detail mit Tabelle + Log.
|
||||
|
||||
## Daten
|
||||
|
||||
- Kopf: Lauf-Infos (Datum, Art, Status, Klartext-Summary)
|
||||
- Datensatz-Tabelle: HiveGrid-Objekt ↔ externe ID · Vorgang (angelegt/aktualisiert/gelöscht) · Status · **Klartext-Fehler** je gescheitertem Datensatz
|
||||
- Log-Einträge mit Schweregrad (Info/Warnung/Fehler)
|
||||
|
||||
## Aktionen
|
||||
|
||||
- Verknüpftes Objekt öffnen (Sprung zur Detailseite)
|
||||
- Zurück zum Verlauf
|
||||
|
||||
## Zustände
|
||||
|
||||
| Zustand | Beschreibung | Umsetzung |
|
||||
|---|---|---|
|
||||
| Laden / Fehler / Kein Zugriff | A7 | Wiederverwenden |
|
||||
|
||||
## Subframe
|
||||
|
||||
- (erst nach explizitem OK)
|
||||
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"nodes":[
|
||||
{"id":"md-paket","type":"file","file":"02 Wireframes/P5 Integrationen/WF-P5 Integrationen/WF-P5 Integrationen.md","x":-80,"y":-440,"width":460,"height":280},
|
||||
{"id":"group-main","type":"group","x":-80,"y":-100,"width":1720,"height":420,"label":"Hauptflow"},
|
||||
{"id":"group-sync","type":"group","x":1800,"y":-100,"width":1120,"height":420,"label":"Sync-Verlauf (eigene Seiten)"},
|
||||
{"id":"group-wizard","type":"group","x":-80,"y":460,"width":1720,"height":420,"label":"Einrichtungs-Assistent und Trennen"},
|
||||
{"id":"group-notes","type":"group","x":1800,"y":460,"width":1120,"height":420,"label":"Regeln"},
|
||||
{"id":"note-entry","type":"text","text":"# Einstieg\n\nSidebar → Integrationen (`/admin/integrations`).\n\nNur mit Recht `integrations.read`.","x":0,"y":0,"width":360,"height":200},
|
||||
{"id":"s01","type":"file","file":"02 Wireframes/P5 Integrationen/WF-P5 Integrationen/Screens/S01 App-Katalog.md","x":560,"y":0,"width":420,"height":200},
|
||||
{"id":"s02","type":"file","file":"02 Wireframes/P5 Integrationen/WF-P5 Integrationen/Screens/S02 App-Seite.md","x":1180,"y":0,"width":420,"height":200},
|
||||
{"id":"s03","type":"file","file":"02 Wireframes/P5 Integrationen/WF-P5 Integrationen/Screens/S03 Sync-Verlauf.md","x":1840,"y":0,"width":420,"height":200},
|
||||
{"id":"s04","type":"file","file":"02 Wireframes/P5 Integrationen/WF-P5 Integrationen/Screens/S04 Lauf-Detail.md","x":2460,"y":0,"width":420,"height":200},
|
||||
{"id":"m01","type":"file","file":"02 Wireframes/P5 Integrationen/WF-P5 Integrationen/Screens/M01 Assistent OAuth.md","x":40,"y":560,"width":420,"height":200},
|
||||
{"id":"m02","type":"file","file":"02 Wireframes/P5 Integrationen/WF-P5 Integrationen/Screens/M02 Assistent API-Schluessel.md","x":620,"y":560,"width":420,"height":200},
|
||||
{"id":"m03","type":"file","file":"02 Wireframes/P5 Integrationen/WF-P5 Integrationen/Screens/M03 Trennen-Bestaetigung.md","x":1200,"y":560,"width":420,"height":200},
|
||||
{"id":"note-framework","type":"text","text":"# Wiederverwendung\n\nConnection-Card + Assistent + Verlauf sind das **Gerüst für alle App-Verbindungen**: E-Mail (P14), Telefonie (P15), Kalender/Signatur (P16) nutzen dieselben Bausteine in ihren Settings.","x":1840,"y":560,"width":520,"height":260},
|
||||
{"id":"note-banner","type":"text","text":"# Zustände (nur Doku)\n\nAmpel: grün läuft · gelb hakt · rot kaputt · grau getrennt.\n\nGelb/Rot/Schema geändert → Klartext-Banner mit Lösungs-Knopf. Trennen = Status »getrennt«, kein Löschen.","x":2420,"y":560,"width":460,"height":260}
|
||||
],
|
||||
"edges":[
|
||||
{"id":"e-entry","fromNode":"note-entry","fromSide":"right","toNode":"s01","toSide":"left","toEnd":"arrow","styleAttributes":{"path":"dotted","pathfindingMethod":"direct"}},
|
||||
{"id":"e-app","fromNode":"s01","fromSide":"right","toNode":"s02","toSide":"left","toEnd":"arrow","label":"App öffnen","styleAttributes":{"pathfindingMethod":"direct"}},
|
||||
{"id":"e-verlauf","fromNode":"s02","fromSide":"right","toNode":"s03","toSide":"left","toEnd":"arrow","label":"alle Läufe anzeigen","styleAttributes":{"pathfindingMethod":"direct"}},
|
||||
{"id":"e-lauf","fromNode":"s03","fromSide":"right","toNode":"s04","toSide":"left","toEnd":"arrow","label":"Lauf öffnen","styleAttributes":{"pathfindingMethod":"direct"}},
|
||||
{"id":"e-oauth","fromNode":"s02","fromSide":"bottom","toNode":"m01","toSide":"top","toEnd":"arrow","label":"Verbinden (OAuth)","styleAttributes":{"pathfindingMethod":"direct"}},
|
||||
{"id":"e-key","fromNode":"s02","fromSide":"bottom","toNode":"m02","toSide":"top","toEnd":"arrow","label":"Verbinden (API-Schlüssel)","styleAttributes":{"pathfindingMethod":"direct"}},
|
||||
{"id":"e-trennen","fromNode":"s02","fromSide":"bottom","toNode":"m03","toSide":"top","toEnd":"arrow","label":"Trennen","styleAttributes":{"pathfindingMethod":"direct"}}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,132 @@
|
||||
---
|
||||
kind: wireframe-package
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-P5
|
||||
package: WF-P5 Integrationen
|
||||
typ: Flow
|
||||
status: Validiert
|
||||
subframe: ""
|
||||
canvas: "WF-P5 Integrationen.canvas"
|
||||
---
|
||||
|
||||
# WF-P5 Integrationen
|
||||
|
||||
Status: Validiert (Screen-Liste)
|
||||
Subframe-Link: -
|
||||
Canvas: [Canvas](<WF-P5 Integrationen.canvas>)
|
||||
Stand: 2026-07-08
|
||||
|
||||
---
|
||||
|
||||
## 1. Kurzfassung
|
||||
|
||||
Der „App-Store" von HiveGrid: Katalog externer Dienste, Verbindungs-Verwaltung je App (mehrere Verbindungen möglich), Einrichtungs-Assistent (OAuth **und** API-Schlüssel) und Sync-Verlauf mit Klartext. **Das wiederverwendbare Verbindungs-Gerüst** — E-Mail (P14), Telefonie (P15), Kalender/Signatur (P16) nutzen später genau diese Bausteine.
|
||||
|
||||
---
|
||||
|
||||
## 2. Intent Check
|
||||
|
||||
| Frage | Antwort |
|
||||
|---|---|
|
||||
| Welches Ticket/Modul ist betroffen? | D-P5, Dev-Pendant R-P5 (Apps-Engine/Adapter-Layer) |
|
||||
| Was soll der Nutzer am Ende schaffen? | Externen Dienst anschließen, Zustand verstehen (Ampel + Klartext), Probleme selbst lösen (neu verbinden), nachvollziehen, was übertragen wurde |
|
||||
| Flow, Screen, Zustand oder Doku? | Screens + Wizard-Modals |
|
||||
| Welche Planning-Quellen wurden geprüft? | `ticket-docs/D-P5.md`, SCREEN-MAP §2, HiveGrid Map |
|
||||
| Was ist sicher im Scope? | Katalog, App-Seite, Assistent (2 Varianten), Trennen-Dialog, Sync-Verlauf + Lauf-Detail |
|
||||
| Was ist sicher nicht im Scope? | App-spezifische Einrichtungs-Details (→ P14/P15/P16), KWP-Sonder-UI (v2), Windows-Client-Flow (kein UI) |
|
||||
| Admin/Normalrolle-Unterschiede? | Rechte `integrations.read/.connect/.disconnect/.manual_sync/.view_logs/.admin` |
|
||||
| Unsichere Annahmen? | Ob der Katalog auch nicht verfügbare/kommende Apps zeigt (Teaser) — offene Frage |
|
||||
|
||||
---
|
||||
|
||||
## 3. Scope
|
||||
|
||||
| Punkt | Inhalt |
|
||||
|---|---|
|
||||
| Ticket/Modul | D-P5 · Integrationen |
|
||||
| Nutzerrolle | Admin (Maximalansicht) |
|
||||
| Startpunkt | Sidebar »Integrationen« (`/admin/integrations`) |
|
||||
| Ziel | Verbindung läuft grün; Läufe nachvollziehbar |
|
||||
| Haupt-Archetyp | A6 Settings/Connection-Card · A5 Wizard · A2 Liste |
|
||||
| Bespoke-Anteil | Keiner |
|
||||
| Out of scope | App-spezifische Setups, KWP-UI (v2) |
|
||||
|
||||
---
|
||||
|
||||
## 4. Entscheidungen (validiert 2026-07-08)
|
||||
|
||||
| Entscheidung | Status | Notiz |
|
||||
|---|---|---|
|
||||
| Ein Paket für das ganze Framework | genommen | Katalog + App-Seite + Assistent + Verlauf |
|
||||
| **Sync-Verlauf als eigene Seiten** (Liste + Lauf-Detail) | genommen | Davids Entscheidung — KEIN Drawer-Muster wie beim Audit; App-Seite zeigt nur die letzten Läufe + »alle anzeigen« |
|
||||
| Assistent: beide Zugangsdaten-Varianten als eigene Frames | genommen | M01 OAuth-Weg · M02 API-Schlüssel-Weg (Formular auto-generiert aus App-Schema) |
|
||||
| Trennen mehrstufig bestätigt, kein Hard-Delete | genommen | Status wird »getrennt«, Jobs stoppen, Klartext-Warnung |
|
||||
| Mehrere Verbindungen je App mit Namens-Label | genommen | z. B. drei Postfächer »Büro«/»Max«/»Info« |
|
||||
| KI-Kategorie bleibt im Katalog | genommen | Andockpunkt für MCP (Pivot AD-26), passt zum Sidebar-Punkt »MCP« |
|
||||
|
||||
### Happy Path
|
||||
|
||||
1. Sidebar »Integrationen« → Katalog mit App-Karten nach Kategorie, Ampel je App.
|
||||
2. App öffnen → Verbindungs-Karten; »Verbinden« startet den Assistenten.
|
||||
3. Assistent: Voraussetzungen → Zugangsdaten (OAuth-Knopf ODER Schlüssel einfügen) → Verbindungs-Test ✓ → optional erster Abgleich.
|
||||
4. Später: Ampel gelb/rot → Klartext-Banner mit Lösungs-Knopf (»neu verbinden«); Sync-Verlauf zeigt jeden Lauf in Klartext, Lauf-Detail jeden Datensatz.
|
||||
|
||||
### Meldungs-/Error-States (validiert)
|
||||
|
||||
| Ereignis | UI-Form | Blockiert? | Bauen? | Copy/Notiz |
|
||||
|---|---|---|---|---|
|
||||
| Verbindung hakt / kaputt / Schema geändert | Klartext-Banner + Lösungs-Knopf | nein | Nur dokumentieren | auf App-Seite + Katalog-Ampel |
|
||||
| Verbindungs-Test im Assistent fehlgeschlagen | Schritt-Fehler mit Klartext + zurück | ja (Schritt) | Nur dokumentieren | im Wizard |
|
||||
| Lauf fehlgeschlagen | rote Zeile + Fehl-Detail je Datensatz | nein | Nur dokumentieren | in S03/S04 |
|
||||
| Kein Zugriff | A7 »kein Zugriff« | ja | Wiederverwenden | `integrations.read` |
|
||||
| Katalog-Filter ohne Treffer | Leer-Zustand | nein | Nur dokumentieren | Filter zurücksetzen |
|
||||
|
||||
---
|
||||
|
||||
## 7. Validierte Screen-Liste
|
||||
|
||||
| ID | Screen/Zustand | Typ | Umsetzung | Ort | Status |
|
||||
|---|---|---|---|---|---|
|
||||
| S01 | App-Katalog | Screen | Bauen | `/admin/integrations` | Validiert |
|
||||
| S02 | App-Seite (Verbindungs-Verwaltung) | Screen | Bauen | `/admin/integrations/:app` | Validiert |
|
||||
| S03 | Sync-Verlauf (eigene Seite) | Screen | Bauen | `…/syncs` | Validiert |
|
||||
| S04 | Lauf-Detail (eigene Seite) | Screen | Bauen | `…/syncs/:id` | Validiert |
|
||||
| M01 | Assistent — OAuth-Weg | Modal/Wizard | Bauen | aus S02 | Validiert |
|
||||
| M02 | Assistent — API-Schlüssel-Weg | Modal/Wizard | Bauen | aus S02 | Validiert |
|
||||
| M03 | Trennen-Bestätigung | Modal (mehrstufig) | Bauen | aus S02 | Validiert |
|
||||
| D01–D05 | Banner/Fehler-Zustände (s. Tabelle) | Inline/Banner | Nur dokumentieren | — | Validiert |
|
||||
|
||||
---
|
||||
|
||||
## 8. Grid
|
||||
|
||||
```text
|
||||
Sidebar -> S01 -> S02 -> S03 -> S04
|
||||
S02 -> M01 (OAuth) / M02 (API-Schluessel) / M03 (Trennen)
|
||||
Connection-Card + Assistent = wiederverwendbar fuer P14/P15/P16
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 9. Screen-Pakete
|
||||
|
||||
- [[S01 App-Katalog]]
|
||||
- [[S02 App-Seite]]
|
||||
- [[S03 Sync-Verlauf]]
|
||||
- [[S04 Lauf-Detail]]
|
||||
- [[M01 Assistent OAuth]]
|
||||
- [[M02 Assistent API-Schluessel]]
|
||||
- [[M03 Trennen-Bestaetigung]]
|
||||
|
||||
---
|
||||
|
||||
## 10. Offene Fragen
|
||||
|
||||
- Zeigt der Katalog auch noch nicht verfügbare/kommende Apps als Teaser (mit Schloss, analog Abo-Gating)? → David/Dev
|
||||
- Genaue App-Liste v1 (welche Karten sind zum Start drin) → Dev
|
||||
|
||||
## Handoff-Check
|
||||
|
||||
- [x] Jeder Screen ist mit Umsetzung markiert.
|
||||
- [x] Meldungs-/Error-State-Matrix ist ausgefüllt.
|
||||
- [ ] Subframe-Link ist eingetragen. *(Subframe erst nach explizitem OK)*
|
||||
Reference in new issue
Block a user