docs: sync wireframes and finalize calendar
This commit is contained in:
1 parent
586994e28c
commit
e0a963aaab
67 files changed
+1125
-703
No files matched your search
@@ -0,0 +1,48 @@
|
||||
---
|
||||
kind: screen
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-BOOK + D-P16 (Teil)
|
||||
package: WF-P16 Kalender
|
||||
id: M01
|
||||
screen: Quick Create
|
||||
subframe_name: "M01 Quick Create"
|
||||
subframe_page_id: "a4088a8a-fab2-433c-b2ff-46a521640999"
|
||||
typ: Kompakter Dialog / Popover
|
||||
umsetzung: Bauen
|
||||
status: Fertig / Development-Handoff
|
||||
route: "aus S01 (Slot-Klick / + Termin)"
|
||||
subframe: "https://app.subframe.com/f023064a5ca0/design/a4088a8a-fab2-433c-b2ff-46a521640999/edit"
|
||||
source_checked: 2026-08-31
|
||||
---
|
||||
|
||||
# M01 — Quick Create
|
||||
|
||||
## Ziel
|
||||
|
||||
Die meisten Termine direkt in einer kleinen Oberfläche anlegen, ohne den vollständigen Termin-Dialog zu öffnen.
|
||||
|
||||
## Verhalten
|
||||
|
||||
- Klick auf einen freien Kalenderslot oder auf Termin anlegen öffnet M01 mit vorausgefülltem Datum und Zeitraum.
|
||||
- Enthalten sind nur Titel, Zeit, Teilnehmende, Ort und eine kurze Beschreibung.
|
||||
- Klick auf die Datum-/Zeitzeile wechselt in [[M01a Quick Create Edit Mode]].
|
||||
- Speichern legt den neuen Termin direkt an und schließt Quick Create.
|
||||
- Weitere Optionen öffnet [[M01b Termin-Dialog]] und übernimmt alle bereits eingegebenen Werte.
|
||||
- Schließen verwirft den noch nicht gespeicherten Entwurf.
|
||||
|
||||
## Aktueller Subframe-Stand
|
||||
|
||||
- Die Seite ist korrekt als M01 Quick Create benannt.
|
||||
- Sichtbar sind der Zeitraum Donnerstag, 6. August, 12:00–13:00, Gäste, Ort, Beschreibung sowie die beiden Ausgänge Weitere Optionen und Speichern.
|
||||
- Der Dialog bleibt bewusst klein und ist der Standardweg.
|
||||
|
||||
## Development-Hinweise (final)
|
||||
|
||||
- In Development muss Quick Create am gewählten Slot beziehungsweise Auslöser verankert werden.
|
||||
- Serientermine und ein eigener Zeitzonen-Workflow bleiben außerhalb des einfachen v1-Umfangs.
|
||||
- Beim Anlegen eines neuen Termins werden Einladungen regulär verschickt; M03 gilt nur für Änderungen an bereits bestehenden Terminen.
|
||||
|
||||
## Subframe
|
||||
|
||||
- [Quick Create öffnen](https://app.subframe.com/f023064a5ca0/design/a4088a8a-fab2-433c-b2ff-46a521640999/edit)
|
||||
- [Kalender-Flow öffnen](https://app.subframe.com/f023064a5ca0/flow/67196422-e7bc-4a60-9556-17b4edb83246/edit)
|
||||
@@ -1,39 +0,0 @@
|
||||
---
|
||||
kind: screen
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-BOOK + D-P16 (Teil)
|
||||
package: WF-P16 Kalender
|
||||
id: M01
|
||||
screen: Termin anlegen/bearbeiten
|
||||
typ: Modal
|
||||
umsetzung: Bauen
|
||||
status: Validiert
|
||||
route: "aus S01 (Slot-Klick / + Termin)"
|
||||
subframe: ""
|
||||
---
|
||||
|
||||
# M01 — Termin anlegen/bearbeiten
|
||||
|
||||
## Ziel
|
||||
|
||||
Einen Termin planen wie in Google Calendar — mit Teilnehmern, und ohne jemanden doppelt zu verplanen.
|
||||
|
||||
## Was das Tool können muss
|
||||
|
||||
- **Grunddaten:** Titel, Datum + Uhrzeit (von–bis), optional ganztägig, Ort, Beschreibung/Notiz
|
||||
- **Teilnehmer-Feld** (ein Feld, drei Arten):
|
||||
- **Team-Mitglieder** (@-Vorschläge) — sehen den Termin sofort in ihrem HiveGrid-Kalender
|
||||
- **Kontakte** (aus dem CRM) — bekommen E-Mail mit Kalender-Datei (.ics)
|
||||
- **freie E-Mail-Adressen** — ebenfalls Mail + .ics, ohne Kontakt-Anlage
|
||||
- **Verfügbarkeits-Check:** beim Hinzufügen interner Teilnehmer zeigt der Dialog belegt/frei im gewählten Zeitraum (»Max ist 9–12 Uhr belegt«) — Warnung, kein Block; Link »Kalender einblenden« aktiviert das Overlay in S01
|
||||
- Optionale **Projekt-Verknüpfung** (Termin erscheint dann auch in der Projekt-Akte)
|
||||
- Bearbeiten nutzt denselben Dialog (nur bei eigenen Terminen); Änderung informiert Teilnehmer
|
||||
- Speichern → zurück in S01, Termin sichtbar; bei Google-Sync geht der Termin auch extern raus
|
||||
|
||||
## Pattern / Archetyp
|
||||
|
||||
A5 Dialog + A4 Formular-Felder. Teilnehmer-Feld = @-Erwähnungs-Muster aus dem UI-Baukasten.
|
||||
|
||||
## Subframe
|
||||
|
||||
- (erst nach explizitem OK)
|
||||
@@ -0,0 +1,47 @@
|
||||
---
|
||||
kind: screen
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-BOOK + D-P16 (Teil)
|
||||
package: WF-P16 Kalender
|
||||
id: M01a
|
||||
screen: Quick Create Edit Mode
|
||||
subframe_name: "M01a Quick Create Edit Mode"
|
||||
subframe_page_id: "1c0335d4-b6c9-4418-9ee6-f817928720e7"
|
||||
typ: Zustand des kompakten Dialogs
|
||||
umsetzung: Bauen
|
||||
status: Fertig / Development-Handoff
|
||||
route: "aus M01 über Klick auf Datum-/Zeitzeile"
|
||||
subframe: "https://app.subframe.com/f023064a5ca0/design/1c0335d4-b6c9-4418-9ee6-f817928720e7/edit"
|
||||
source_checked: 2026-08-31
|
||||
---
|
||||
|
||||
# M01a — Quick Create Edit Mode
|
||||
|
||||
## Ziel
|
||||
|
||||
Datum und Uhrzeit im kleinen Quick Create korrigieren, ohne in den vollständigen Termin-Dialog wechseln zu müssen.
|
||||
|
||||
## Verhalten
|
||||
|
||||
- Klick auf die Zeitzeile in [[M01 Quick Create]] wechselt in diesen Zustand.
|
||||
- Die kompakte Zusammenfassung wird durch Startdatum, Startzeit, Enddatum und Endzeit ersetzt.
|
||||
- Gäste, Ort, Beschreibung, Weitere Optionen und Speichern bleiben an derselben Stelle.
|
||||
- Nach der Auswahl zeigt M01 wieder den aktualisierten Zeitraum.
|
||||
- Der Zustand ist kein eigener Anlegeweg und kein zusätzliches Kalender-Feature.
|
||||
|
||||
## Aktueller Subframe-Stand
|
||||
|
||||
- Der Edit-Modus ist als eigene Live-Seite vorhanden und verwendet die aktuellen Date-/Time-Picker.
|
||||
- Anders als im früheren Entwurf gibt es kein separates Picker-Popover links neben Quick Create; die vier Felder stehen direkt im Dialog.
|
||||
- Der gesamte Zustand passt in 1440 × 900.
|
||||
|
||||
## Development-Hinweise (final)
|
||||
|
||||
- Die Felder zeigen im aktuellen Design noch Platzhalter. In Development müssen Donnerstag, 6. August, 12:00–13:00 aus M01 vorausgefüllt bleiben.
|
||||
- Für einen Termin am selben Tag darf das Enddatum automatisch dem Startdatum folgen; es soll keine unnötige zweite Entscheidung entstehen.
|
||||
|
||||
## Subframe
|
||||
|
||||
- [Edit-Modus öffnen](https://app.subframe.com/f023064a5ca0/design/1c0335d4-b6c9-4418-9ee6-f817928720e7/edit)
|
||||
- [Normalen Quick-Create-State öffnen](https://app.subframe.com/f023064a5ca0/design/a4088a8a-fab2-433c-b2ff-46a521640999/edit)
|
||||
- [Kalender-Flow öffnen](https://app.subframe.com/f023064a5ca0/flow/67196422-e7bc-4a60-9556-17b4edb83246/edit)
|
||||
@@ -0,0 +1,51 @@
|
||||
---
|
||||
kind: screen
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-BOOK + D-P16 (Teil)
|
||||
package: WF-P16 Kalender
|
||||
id: M01b
|
||||
screen: Termin vollständig anlegen oder bearbeiten
|
||||
subframe_name: "M01 Termin anlegen V4 Zweispaltig"
|
||||
subframe_page_id: "eaf3f0ba-f80f-4ba3-b0a1-16e2695a2122"
|
||||
typ: Modal
|
||||
umsetzung: Bauen
|
||||
status: Fertig / Development-Handoff
|
||||
route: "aus M01 über Weitere Optionen / aus M02 über Bearbeiten"
|
||||
subframe: "https://app.subframe.com/f023064a5ca0/design/eaf3f0ba-f80f-4ba3-b0a1-16e2695a2122/edit"
|
||||
source_checked: 2026-08-31
|
||||
---
|
||||
|
||||
# M01b — Termin vollständig anlegen oder bearbeiten
|
||||
|
||||
## Ziel
|
||||
|
||||
Einen Termin vollständig konfigurieren, wenn Quick Create nicht ausreicht, oder einen bestehenden eigenen Termin bearbeiten.
|
||||
|
||||
## Verhalten
|
||||
|
||||
- Grunddaten: Titel, Datum und Uhrzeit von–bis, optional ganztägig, Ort und Beschreibung.
|
||||
- Teilnehmende können Team-Mitglieder, CRM-Kontakte oder freie E-Mail-Adressen sein.
|
||||
- Interne Personen dürfen direkt einen kleinen, nicht blockierenden Badge Möglicher Konflikt tragen. Es gibt keine weitere Konfliktansicht.
|
||||
- Optional kann ein Projekt verknüpft werden.
|
||||
- Weitere Optionen aus [[M01 Quick Create]] übernehmen alle bisherigen Eingaben.
|
||||
- Beim Speichern eines neuen Termins geht es direkt zurück in den Kalender.
|
||||
- Wird ein bestehender Termin mit Teilnehmenden in relevanten Feldern geändert, öffnet sich vor dem Speichern [[M03 Änderungen per E-Mail senden]].
|
||||
|
||||
## Aktueller Subframe-Stand
|
||||
|
||||
- Nur die zweispaltige Version ist noch live. V2 und V3 wurden gelöscht und sind keine Alternativen mehr.
|
||||
- Kerndaten stehen links, Teilnehmende und Beschreibung rechts; der Dialog passt vollständig in 1440 × 900.
|
||||
- Drei Teilnehmende sind sichtbar. Nur Sandra Koch trägt den kleinen Badge Möglicher Konflikt.
|
||||
- Die Seite nutzt die aktuellen Date-/Time-Picker.
|
||||
|
||||
## Development-Hinweise (final)
|
||||
|
||||
- Datum und Uhrzeit zeigen im Design noch Platzhalter und müssen aus M01 beziehungsweise dem bestehenden Termin vorausgefüllt werden.
|
||||
- Freie, noch unbekannte E-Mail-Adressen sind visuell nicht eindeutig nachgewiesen.
|
||||
- Der Subframe-Seitenname enthält noch den älteren Präfix M01 und V4; die logische Obsidian-Zuordnung ist M01b.
|
||||
|
||||
## Subframe
|
||||
|
||||
- [Vollständigen Termin-Dialog öffnen](https://app.subframe.com/f023064a5ca0/design/eaf3f0ba-f80f-4ba3-b0a1-16e2695a2122/edit)
|
||||
- [Quick Create öffnen](https://app.subframe.com/f023064a5ca0/design/a4088a8a-fab2-433c-b2ff-46a521640999/edit)
|
||||
- [Kalender-Flow öffnen](https://app.subframe.com/f023064a5ca0/flow/67196422-e7bc-4a60-9556-17b4edb83246/edit)
|
||||
@@ -5,11 +5,14 @@ ticket: D-BOOK + D-P16 (Teil)
|
||||
package: WF-P16 Kalender
|
||||
id: M02
|
||||
screen: Termin-Detail
|
||||
subframe_name: "M02 Termindetail Popover V1"
|
||||
subframe_page_id: "99fbcf22-50fd-42de-9243-278d1ef746c1"
|
||||
typ: Popover
|
||||
umsetzung: Bauen
|
||||
status: Validiert
|
||||
status: Fertig / Development-Handoff
|
||||
route: "Termin-Klick in S01"
|
||||
subframe: ""
|
||||
subframe: "https://app.subframe.com/f023064a5ca0/design/99fbcf22-50fd-42de-9243-278d1ef746c1/edit"
|
||||
source_checked: 2026-08-31
|
||||
---
|
||||
|
||||
# M02 — Termin-Detail (Popover)
|
||||
@@ -22,9 +25,26 @@ Schnell sehen, was das für ein Termin ist, wer kommt — und mit einem Klick zu
|
||||
|
||||
- Titel, Zeit, Ort, Beschreibung, **Quelle-Badge** (Google / Buchung / Plantafel / Projekt / eigener Termin)
|
||||
- **Teilnehmer-Liste mit Zu-/Absage-Status** (zugesagt / abgesagt / offen); Bounce-Marker wenn Einladungs-Mail unzustellbar (+ erneut senden)
|
||||
- Optional direkt an einer internen Person ein kleiner Badge `Möglicher Konflikt`; keine weitere Konfliktansicht, kein Verlauf und kein Pop-up.
|
||||
- **Absprung zur Quelle:** Buchung → Buchungs-Detail · Einsatz → Plantafel · Projekt-Termin → Projekt-Akte · Google-Termin → nur lesen (Hinweis »kommt aus Google«)
|
||||
- **Aktionen je nach Quelle:** eigene Termine → Bearbeiten (M01) + Löschen (mit Teilnehmer-Info); fremde Quellen → nur Absprung
|
||||
- **Aktionen je nach Quelle:** eigene Termine → Bearbeiten ([[M01b Termin-Dialog]]) + Löschen; fremde Quellen → nur Absprung
|
||||
- Für eingeladene interne Nutzer: **Zusagen/Absagen** direkt im Popover
|
||||
- Werden beim Bearbeiten teilnehmendenrelevante Daten geändert, führt Speichern zu [[M03 Änderungen per E-Mail senden]].
|
||||
|
||||
## Subframe-Arbeitsstand (Readback 2026-08-31)
|
||||
|
||||
- Der gebaute Beispielzustand ist ein Projekt-Termin mit Titel, Projekt-ID, Datum, Uhrzeit, Dauer, Ort und Beschreibung.
|
||||
- Die Teilnehmendenliste zeigt Organisator, zugesagt, ausstehend und eine unzustellbare Einladung mit erneutem Versand.
|
||||
- Unten stehen `Zusagen`, `Ablehnen` sowie ein Mehr-Menü mit Bearbeiten, Duplizieren, Verschieben und Löschen; `In Projekt öffnen` bildet den Quell-Absprung ab.
|
||||
- Der Versand von Änderungen ist jetzt als eigener kompakter Folge-Zustand M03 dokumentiert und in Subframe gebaut.
|
||||
|
||||
## Development-Hinweise (final)
|
||||
|
||||
- Organisatoren sehen Bearbeiten und Löschen; eingeladene interne Nutzer sehen Zusagen und Ablehnen; fremde Quellen zeigen nur den passenden Absprung.
|
||||
- Duplizieren und Verschieben werden in v1 nicht aus dem statischen Beispiel übernommen.
|
||||
- Löschen verwendet einen kurzen Standard-Confirm mit Hinweis auf Teilnehmende und externe Kalender.
|
||||
- Das Detail wird am angeklickten Termin verankert; die nebeneinander dargestellten Cards sind nur die Subframe-Demonstration.
|
||||
- Der sichtbare Status Bounce heißt in der Nutzeroberfläche Nicht zustellbar.
|
||||
|
||||
## Pattern / Archetyp
|
||||
|
||||
@@ -32,4 +52,5 @@ Popover (leichtgewichtig, kein volles Modal) — Muster: Termin-Klick wie in Goo
|
||||
|
||||
## Subframe
|
||||
|
||||
- (erst nach explizitem OK)
|
||||
- [Screen direkt öffnen](https://app.subframe.com/f023064a5ca0/design/99fbcf22-50fd-42de-9243-278d1ef746c1/edit)
|
||||
- [Kalender-Flow öffnen](https://app.subframe.com/f023064a5ca0/flow/67196422-e7bc-4a60-9556-17b4edb83246/edit)
|
||||
+47
@@ -0,0 +1,47 @@
|
||||
---
|
||||
kind: screen
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-BOOK + D-P16 (Teil)
|
||||
package: WF-P16 Kalender
|
||||
id: M03
|
||||
screen: Änderungen per E-Mail senden
|
||||
subframe_name: "M03 Änderungen per E-Mail senden"
|
||||
subframe_page_id: "3bac63a2-82fe-487a-9a0a-0dab263cc6d0"
|
||||
typ: Bestätigungsmodal
|
||||
umsetzung: Bauen
|
||||
status: Fertig / Development-Handoff
|
||||
route: "nach Speichern eines geänderten bestehenden Termins mit Teilnehmenden"
|
||||
subframe: "https://app.subframe.com/f023064a5ca0/design/3bac63a2-82fe-487a-9a0a-0dab263cc6d0/edit"
|
||||
source_checked: 2026-08-31
|
||||
---
|
||||
|
||||
# M03 — Änderungen per E-Mail senden
|
||||
|
||||
## Ziel
|
||||
|
||||
Wie bei Google entscheiden, ob Teilnehmende nach einer Änderung an einem bestehenden Termin eine Aktualisierung per E-Mail erhalten.
|
||||
|
||||
## Auslöser
|
||||
|
||||
- Der Termin existiert bereits.
|
||||
- Mindestens eine weitere Person nimmt teil.
|
||||
- Eine für Teilnehmende relevante Angabe wurde geändert, etwa Titel, Datum, Uhrzeit, Ort, Beschreibung oder Teilnehmerkreis.
|
||||
- Reine interne Angaben wie eine Projektverknüpfung lösen den Dialog nicht aus.
|
||||
|
||||
## Verhalten
|
||||
|
||||
- Zurück: kehrt zur Terminbearbeitung zurück und speichert noch nichts.
|
||||
- Ohne E-Mail speichern: speichert die Änderung, versendet aber keine E-Mail.
|
||||
- E-Mail senden: speichert die Änderung und sendet die aktualisierten Termindaten per E-Mail an alle Teilnehmenden.
|
||||
- Es gibt kein Nachrichtenfeld, keine Empfängerauswahl und keine Push- oder In-App-Benachrichtigung.
|
||||
|
||||
## Aktueller Subframe-Stand
|
||||
|
||||
- Der Dialog ist kompakt, zentriert und verwendet das bestehende Modal-Muster.
|
||||
- Alle drei Aktionen sind vollständig sichtbar und passen ohne horizontalen Überlauf in 1440 × 900.
|
||||
- Copy: Änderungen per E-Mail senden? sowie der Hinweis, dass drei Teilnehmende informiert werden.
|
||||
|
||||
## Subframe
|
||||
|
||||
- [Bestätigungsmodal öffnen](https://app.subframe.com/f023064a5ca0/design/3bac63a2-82fe-487a-9a0a-0dab263cc6d0/edit)
|
||||
- [Kalender-Flow öffnen](https://app.subframe.com/f023064a5ca0/flow/67196422-e7bc-4a60-9556-17b4edb83246/edit)
|
||||
@@ -5,11 +5,14 @@ ticket: D-BOOK + D-P16 (Teil)
|
||||
package: WF-P16 Kalender
|
||||
id: S01
|
||||
screen: Kalender
|
||||
subframe_name: "S01 Kalender V1"
|
||||
subframe_page_id: "238adab5-a284-4065-91b5-28cd894f6b31"
|
||||
typ: BESPOKE Kalender-Grid
|
||||
umsetzung: Bauen
|
||||
status: Validiert
|
||||
status: Fertig / Development-Handoff
|
||||
route: "/calendar"
|
||||
subframe: ""
|
||||
subframe: "https://app.subframe.com/f023064a5ca0/design/238adab5-a284-4065-91b5-28cd894f6b31/edit"
|
||||
source_checked: 2026-08-31
|
||||
---
|
||||
|
||||
# S01 — Kalender (Monat/Woche) ⭐
|
||||
@@ -23,18 +26,34 @@ Alle Termine an einem Ort — egal ob aus Google, einer Online-Buchung, der Plan
|
||||
- **Monats- und Wochen-Ansicht** mit Umschalter, Heute-Knopf, Zeitraum-Navigation (Pfeile)
|
||||
- **Quell-Marker je Termin** (Farbe/Icon): Google · Buchung · Plantafel-Einsatz · Projekt-Termin · eigener Termin
|
||||
- **Kollegen einblenden (Overlay):** Mitarbeiter-Auswahl (Avatare/Checkboxen) — deren HiveGrid-Termine erscheinen normal, private Google-Termine nur als **»belegt«** ohne Titel/Details
|
||||
- **Termin anlegen:** Klick auf freien Slot oder »+ Termin«-Knopf → M01
|
||||
- **Termin anlegen:** Klick auf freien Slot oder »+ Termin«-Knopf → [[M01 Quick Create]]; Weitere Optionen → [[M01b Termin-Dialog]]
|
||||
- **Termin öffnen:** Klick auf Termin → M02 (Detail-Popover)
|
||||
- **Verbinden-Hinweis** solange kein Google-Konto verbunden ist (dismissbar, mit »Verbinden«-Knopf → S02); Kalender ist auch ohne Verbindung voll nutzbar
|
||||
- **Re-Connect-Banner** bei kaputter Verbindung (Klartext + Lösungs-Knopf)
|
||||
- Dezenter Hinweis bei frischen Sync-Konflikten mit Link zum Konflikt-Verlauf (S02)
|
||||
- Zahnrad → Kalender-Einstellungen (S02)
|
||||
- Zustände: leer (CTA Termin anlegen / Google verbinden), laden, Fehler
|
||||
|
||||
## Subframe-Arbeitsstand (Readback 2026-08-31)
|
||||
|
||||
- Gebaut ist eine dichte Wochenansicht für `3.–9. August 2026` mit Zeitraster `07:00–18:00`, markiertem heutigen Tag und Mini-Monatskalender.
|
||||
- Die linke Leiste enthält Quellenfilter für Google Kalender, Buchungen, Plantafel, Projekte und eigene Termine sowie drei Kolleg:innen als einblendbare Overlays.
|
||||
- Die Beispieldaten zeigen alle fünf Quellen und einen privaten Kollegen-Termin nur als `Belegt`. Der frühere allgemeine Konfliktmarker im Grid wurde am 2026-08-30 entfernt.
|
||||
- Im Kopf stehen Zeitraum-Navigation, Umschalter `Monat / Woche / Tag` und `Termin anlegen`.
|
||||
- Als Fehlerzustand ist ein abgelaufenes Google-Token als Warnbanner sichtbar; unten steht zusätzlich `Kalender verbinden`.
|
||||
|
||||
## Development-Hinweise (final)
|
||||
|
||||
- In v1 werden Monat und Woche umgesetzt; der im Mock sichtbare Tag-Umschalter entfällt.
|
||||
- Heute und der direkte Zugang zu S02 sind Pflichtaktionen.
|
||||
- Der Re-Connect-Banner verwendet die konkrete Aktion Neu verbinden statt Aktion.
|
||||
- Neu verbinden, Verbindungen verwalten und ein weiteres Konto verbinden werden anhand des Verbindungszustands getrennt.
|
||||
- Empty-, Loading-, Permission- und Offline-Zustände folgen den globalen Standards und benötigen keine eigenen Kalender-Screens.
|
||||
|
||||
## Pattern / Archetyp
|
||||
|
||||
BESPOKE (Kalender-Grid, mittlerer Aufwand laut Ticket). Zustands-Set A7.
|
||||
|
||||
## Subframe
|
||||
|
||||
- (erst nach explizitem OK)
|
||||
- [Screen direkt öffnen](https://app.subframe.com/f023064a5ca0/design/238adab5-a284-4065-91b5-28cd894f6b31/edit)
|
||||
- [Kalender-Flow öffnen](https://app.subframe.com/f023064a5ca0/flow/67196422-e7bc-4a60-9556-17b4edb83246/edit)
|
||||
@@ -4,35 +4,57 @@ project: HiveGrid Screen Project
|
||||
ticket: D-BOOK + D-P16 (Teil)
|
||||
package: WF-P16 Kalender
|
||||
id: S02
|
||||
screen: Kalender-Einstellungen & Sync
|
||||
screen: Kalender-Verbindung
|
||||
subframe_name: "S02 Kalender-Verbindungen V2"
|
||||
subframe_page_id: "e95220a1-132a-445d-b785-d292385faa5e"
|
||||
typ: Settings (A6)
|
||||
umsetzung: Bauen
|
||||
status: Validiert
|
||||
route: "/calendar/settings"
|
||||
subframe: ""
|
||||
status: Fertig / Development-Handoff
|
||||
route: "/settings/integrations/calendar"
|
||||
subframe: "https://app.subframe.com/f023064a5ca0/design/e95220a1-132a-445d-b785-d292385faa5e/edit"
|
||||
source_checked: 2026-08-31
|
||||
---
|
||||
|
||||
# S02 — Kalender-Einstellungen & Sync
|
||||
# S02 — Kalender-Verbindung
|
||||
|
||||
## Ziel
|
||||
|
||||
Sein eigenes Google-Konto verbinden und den Abgleich steuern — pro Mitarbeiter, ohne Admin-Umweg. Erreichbar direkt aus dem Kalender (Zahnrad / Verbinden-Hinweis).
|
||||
Sein eigenes Google-Konto verbinden und die verwendeten Kalender auswählen — pro Mitarbeiter, ohne eigenen Einstellungsbereich rund um das Kalender-Feature.
|
||||
|
||||
## Was das Tool können muss
|
||||
|
||||
- **Provider-Auswahl:** Google (aktiv) · Outlook (**ausgegraut, »bald verfügbar«** — v2); UI bleibt provider-neutral
|
||||
- **Verbinden:** startet den OAuth-Assistenten im WF-P5-Muster (M01) → danach Connect-Card mit Status-Ampel, verbundenem Konto (E-Mail), letzter Sync-Zeit
|
||||
- **Kalender-Auswahl:** welche Google-Kalender abgeglichen werden (Checkbox-Liste)
|
||||
- **Sync-Richtung:** beide Richtungen · nur HiveGrid → Google · nur Google → HiveGrid
|
||||
- **Trennen** mit »auch extern entfernen?«-Wahl (Trennen-Modal aus WF-P5 M03, erweitert um die Extern-Wahl) — kein Hard-Delete
|
||||
- **Re-Connect-Banner** bei kaputter Verbindung (Token abgelaufen o. ä.)
|
||||
- **Konflikt-Verlauf-Sektion:** letzte 50 automatische Auflösungen in Klartext — »Termin ›Wartung Müller‹ wurde in Google auf 14:00 verschoben — HiveGrid hat übernommen« (Last-Write-Wins); jede Auflösung erzeugt zusätzlich eine Benachrichtigung
|
||||
- Hinweis: Verbindung ist **pro Mitarbeiter** — jeder verwaltet hier nur sein eigenes Konto; fremde Termin-Inhalte bleiben privat (nur »belegt«)
|
||||
- **Provider-Auswahl:** Google aktiv; Outlook darf als ausgegrauter Teaser `Demnächst` sichtbar bleiben.
|
||||
- **Verbinden:** startet den OAuth-Assistenten im WF-P5-Muster; danach zeigt eine Connection-Card Konto, Status und letzten Sync.
|
||||
- **Kalender-Auswahl:** Checkbox-Liste der Google-Kalender, die in HiveGrid erscheinen sollen.
|
||||
- **Neu verbinden:** klare Fehlerbehebung bei abgelaufener oder getrennter Verbindung.
|
||||
- **Trennen:** kurzer Standard-Confirm; kein eigener Kalender-Unterflow.
|
||||
- Die Verbindung ist **pro Mitarbeiter**. Andere sehen bei privaten Fremdterminen weiterhin nur `Belegt`.
|
||||
- Bewusst nicht enthalten: eigene Ansichts-, Benachrichtigungs- oder Datenschutzseite, Sync-Richtung, Konfliktverlauf und separates Verbindungsdetail.
|
||||
|
||||
## Subframe-Arbeitsstand (Readback 2026-08-31)
|
||||
|
||||
Der Live-Screen wurde am 2026-08-30 als `S02 Kalender-Verbindungen V2` neu aufgebaut. Er verwendet die bestehende `DefaultPageLayoutWithInnerSidebar`-App-Shell und tatsächlich die Subframe-Komponente `SettingsPage` mit `SectionHeader`, zwei `NeutralCard`-Flächen und `Divider`-Elementen.
|
||||
|
||||
Der Inhalt bleibt bewusst kompakt: Google als verbundener Provider, letzter Sync, vier auswählbare Kalender, `Neu verbinden`, `Trennen` sowie Outlook als Teaser. Der mehrdeutige Link `Verbindung hinzufügen` ist entfernt.
|
||||
|
||||
Entfernt wurden die seitliche Unterseiten-Navigation, der zusätzliche Datenschutz-Hinweis sowie die drei separaten Subframe-Seiten `Kalenderansicht`, `Benachrichtigungen` und `Datenschutz`. Die zuvor leere Untitled-Seite war beim Kontrolllauf bereits nicht mehr vorhanden.
|
||||
|
||||
## Audit Einstellungsumfang (2026-08-31)
|
||||
|
||||
Der Eindruck, dass vorher mehr Einstellungen vorhanden waren, ist richtig. Frühere Stände enthielten zusätzlich `Kalenderansicht`, `Benachrichtigungen`, `Datenschutz`, eine `Sync-Richtung` und einen `Konfliktverlauf`.
|
||||
|
||||
Das Fehlen ist kein versehentlicher Verlust beim Komponentenumbau: Die drei Unterseiten wurden nach der Produktvereinfachung vom 2026-08-30 entfernt; Sync-Richtung und Konfliktverlauf widersprechen ebenfalls dem einfachen v1-Scope. S02 bleibt deshalb bewusst der einzige Kalender-Einstellungs-Screen und bündelt nur Verbindung, Status, Kalenderauswahl, Neu verbinden und Trennen.
|
||||
|
||||
## Development-Hinweise (final)
|
||||
|
||||
- **Re-Connect und Zustände fehlen:** Gezeigt wird nur `Verbunden`. Unverbunden, OAuth-Einstieg, abgelaufenes Token, laufender Sync und fehlende Berechtigung sind nicht als S02-Zustände sichtbar.
|
||||
- **Globale Settings-Navigation bleibt Platzhalter:** Die wiederverwendete innere Sidebar zeigt noch `Account` und generische `Platzhalter`. Das ist kein Kalender-Untermenü, muss aber mit der finalen globalen Settings-Informationsarchitektur benannt werden.
|
||||
|
||||
## Pattern / Archetyp
|
||||
|
||||
A6 Settings/Connection — Connection-Card-Muster aus WF-P5 Integrationen; Konflikt-Verlauf analog Abgleich-Verlauf (WF-P5 S03), hier nur als Sektion.
|
||||
A6 Settings/Connection — `DefaultPageLayoutWithInnerSidebar` + echte `SettingsPage`-Komponente mit kompakten Connection-Cards.
|
||||
|
||||
## Subframe
|
||||
|
||||
- (erst nach explizitem OK)
|
||||
- [Verbindungen direkt öffnen](https://app.subframe.com/f023064a5ca0/design/e95220a1-132a-445d-b785-d292385faa5e/edit)
|
||||
- [Kalender-Flow öffnen](https://app.subframe.com/f023064a5ca0/flow/67196422-e7bc-4a60-9556-17b4edb83246/edit)
|
||||
@@ -1,42 +1,235 @@
|
||||
{
|
||||
"nodes":[
|
||||
{"id":"md-paket","type":"file","file":"02 Wireframes/P16 Kalender/WF-P16 Kalender/WF-P16 Kalender.md","x":-80,"y":-440,"width":460,"height":280},
|
||||
{"id":"group-kalender","type":"group","x":-80,"y":-100,"width":1140,"height":380,"label":"Kalender (Desktop, Bespoke)"},
|
||||
{"id":"group-dialoge","type":"group","x":-80,"y":460,"width":1140,"height":380,"label":"Termin-Dialoge"},
|
||||
{"id":"group-sync","type":"group","x":1300,"y":-100,"width":1120,"height":380,"label":"Einstellungen & Sync (pro Nutzer)"},
|
||||
{"id":"note-entry","type":"text","text":"# Einstieg\n\nSidebar → Kalender.\n\nQuellen: Google · Buchung · Plantafel · Projekt · eigene Termine. Kollegen als Overlay einblendbar (fremde private Google-Termine nur »belegt«).","x":0,"y":0,"width":360,"height":200},
|
||||
{"id":"s01","type":"file","file":"02 Wireframes/P16 Kalender/WF-P16 Kalender/Screens/S01 Kalender.md","x":560,"y":0,"width":420,"height":200},
|
||||
{"id":"m01","type":"file","file":"02 Wireframes/P16 Kalender/WF-P16 Kalender/Screens/M01 Termin-Dialog.md","x":0,"y":560,"width":420,"height":200},
|
||||
{"id":"m02","type":"file","file":"02 Wireframes/P16 Kalender/WF-P16 Kalender/Screens/M02 Termin-Detail.md","x":580,"y":560,"width":420,"height":200},
|
||||
{"id":"s02","type":"file","file":"02 Wireframes/P16 Kalender/WF-P16 Kalender/Screens/S02 Kalender-Einstellungen.md","x":1340,"y":0,"width":420,"height":200},
|
||||
{"id":"note-sync","type":"text","text":"# Wiederverwendet aus WF-P5\n\nOAuth-Assistent (M01) + Trennen-Modal (M03, + »auch extern entfernen?«).\n\nOutlook als Teaser »bald verfügbar« (v2). Konflikt-Verlauf als Sektion hier.","x":1900,"y":0,"width":460,"height":200}
|
||||
],
|
||||
"edges":[
|
||||
{
|
||||
"id":"e-entry",
|
||||
"fromNode":"note-entry",
|
||||
"fromSide":"right",
|
||||
"toNode":"s01",
|
||||
"toSide":"left",
|
||||
"toEnd":"arrow",
|
||||
"styleAttributes":{"path":"dotted"}
|
||||
},
|
||||
{"id":"e-new","fromNode":"s01","fromSide":"bottom","toNode":"m01","toSide":"top","toEnd":"arrow","label":"Slot-Klick / + Termin"},
|
||||
{"id":"e-open","fromNode":"s01","fromSide":"bottom","toNode":"m02","toSide":"top","toEnd":"arrow","label":"Termin-Klick"},
|
||||
{"id":"e-edit","fromNode":"m02","fromSide":"left","toNode":"m01","toSide":"right","toEnd":"arrow","label":"Bearbeiten"},
|
||||
{"id":"e-settings","fromNode":"s01","fromSide":"right","toNode":"s02","toSide":"left","toEnd":"arrow","label":"Zahnrad / Verbinden"},
|
||||
{
|
||||
"id":"e-sync-note",
|
||||
"fromNode":"note-sync",
|
||||
"fromSide":"left",
|
||||
"toNode":"s02",
|
||||
"toSide":"right",
|
||||
"toEnd":"arrow",
|
||||
"styleAttributes":{"path":"dotted"}
|
||||
}
|
||||
],
|
||||
"metadata":{
|
||||
"version":"1.0-1.0",
|
||||
"frontmatter":{}
|
||||
}
|
||||
}
|
||||
"nodes": [
|
||||
{
|
||||
"id": "md-paket",
|
||||
"type": "file",
|
||||
"file": "02 Wireframes/P16 Kalender/WF-P16 Kalender/WF-P16 Kalender.md",
|
||||
"x": -80,
|
||||
"y": -440,
|
||||
"width": 460,
|
||||
"height": 280
|
||||
},
|
||||
{
|
||||
"id": "group-kalender",
|
||||
"type": "group",
|
||||
"label": "Kalender (Desktop, Bespoke)",
|
||||
"x": -80,
|
||||
"y": -100,
|
||||
"width": 1140,
|
||||
"height": 380
|
||||
},
|
||||
{
|
||||
"id": "group-dialoge",
|
||||
"type": "group",
|
||||
"label": "Termin anlegen, öffnen und Änderungen senden",
|
||||
"x": -80,
|
||||
"y": 460,
|
||||
"width": 1640,
|
||||
"height": 760
|
||||
},
|
||||
{
|
||||
"id": "group-sync",
|
||||
"type": "group",
|
||||
"label": "Kalender-Verbindung (schlank)",
|
||||
"x": 1800,
|
||||
"y": -100,
|
||||
"width": 1120,
|
||||
"height": 760
|
||||
},
|
||||
{
|
||||
"id": "note-entry",
|
||||
"type": "text",
|
||||
"text": "# Einstieg\n\nSidebar → Kalender.\n\nQuellen: Google · Buchung · Plantafel · Projekt · eigene Termine. Kollegen als Overlay einblendbar; fremde private Google-Termine nur »belegt«.",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"width": 360,
|
||||
"height": 200
|
||||
},
|
||||
{
|
||||
"id": "s01",
|
||||
"type": "file",
|
||||
"file": "02 Wireframes/P16 Kalender/WF-P16 Kalender/Screens/S01 Kalender.md",
|
||||
"x": 560,
|
||||
"y": 0,
|
||||
"width": 420,
|
||||
"height": 200
|
||||
},
|
||||
{
|
||||
"id": "4c8e1a7d3b6f9025",
|
||||
"type": "file",
|
||||
"file": "02 Wireframes/P16 Kalender/WF-P16 Kalender/Screens/M01 Quick Create.md",
|
||||
"x": 0,
|
||||
"y": 560,
|
||||
"width": 420,
|
||||
"height": 200
|
||||
},
|
||||
{
|
||||
"id": "c71a05e48fb293d6",
|
||||
"type": "file",
|
||||
"file": "02 Wireframes/P16 Kalender/WF-P16 Kalender/Screens/M01a Quick Create Edit Mode.md",
|
||||
"x": 0,
|
||||
"y": 900,
|
||||
"width": 420,
|
||||
"height": 200
|
||||
},
|
||||
{
|
||||
"id": "m01",
|
||||
"type": "file",
|
||||
"file": "02 Wireframes/P16 Kalender/WF-P16 Kalender/Screens/M01b Termin-Dialog.md",
|
||||
"x": 560,
|
||||
"y": 560,
|
||||
"width": 420,
|
||||
"height": 200
|
||||
},
|
||||
{
|
||||
"id": "m02",
|
||||
"type": "file",
|
||||
"file": "02 Wireframes/P16 Kalender/WF-P16 Kalender/Screens/M02 Termin-Detail.md",
|
||||
"x": 1120,
|
||||
"y": 560,
|
||||
"width": 420,
|
||||
"height": 200
|
||||
},
|
||||
{
|
||||
"id": "83f1b6d2a9c407e5",
|
||||
"type": "file",
|
||||
"file": "02 Wireframes/P16 Kalender/WF-P16 Kalender/Screens/M03 Änderungen per E-Mail senden.md",
|
||||
"x": 560,
|
||||
"y": 900,
|
||||
"width": 420,
|
||||
"height": 200
|
||||
},
|
||||
{
|
||||
"id": "s02",
|
||||
"type": "file",
|
||||
"file": "02 Wireframes/P16 Kalender/WF-P16 Kalender/Screens/S02 Kalender-Einstellungen.md",
|
||||
"x": 1840,
|
||||
"y": 0,
|
||||
"width": 420,
|
||||
"height": 200
|
||||
},
|
||||
{
|
||||
"id": "note-sync",
|
||||
"type": "text",
|
||||
"text": "# Einheitliches Settings-Muster\n\nDefaultPageLayoutWithInnerSidebar + SettingsPage.\n\nGenau ein Kalender-Einstellungs-Screen: Verbindung, Status, Kalenderauswahl, Neu verbinden und Trennen.\n\nOrt: /settings/integrations/calendar. Kein Verbindungsdetail und kein Sync-Konfliktverlauf.",
|
||||
"x": 2400,
|
||||
"y": 0,
|
||||
"width": 460,
|
||||
"height": 240
|
||||
},
|
||||
{
|
||||
"id": "6a2c0e91d4b8f3a7",
|
||||
"type": "link",
|
||||
"url": "https://app.subframe.com/f023064a5ca0/flow/67196422-e7bc-4a60-9556-17b4edb83246/edit",
|
||||
"x": 1840,
|
||||
"y": 320,
|
||||
"width": 420,
|
||||
"height": 180
|
||||
},
|
||||
{
|
||||
"id": "9d1e5b7c2a4f8063",
|
||||
"type": "text",
|
||||
"text": "# Fertig · Development-Handoff\n\nStand: 2026-08-31\n\n- 7 finale Live-Seiten synchronisiert\n- M01 Quick Create bleibt der Standardweg\n- M01a bearbeitet Datum und Zeit inline\n- nur die zweispaltige Vollansicht bleibt als M01b\n- M03 fragt nach E-Mail-Versand bei Änderungen\n- Einstellungen bleiben genau ein Verbindungs-Screen\n- kein Konfliktfeature; nur kleiner Personen-Badge",
|
||||
"x": 2400,
|
||||
"y": 320,
|
||||
"width": 460,
|
||||
"height": 340
|
||||
}
|
||||
],
|
||||
"edges": [
|
||||
{
|
||||
"id": "e-entry",
|
||||
"fromNode": "note-entry",
|
||||
"fromSide": "right",
|
||||
"toNode": "s01",
|
||||
"toSide": "left",
|
||||
"toEnd": "arrow",
|
||||
"styleAttributes": {
|
||||
"path": "dotted"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "e-new",
|
||||
"fromNode": "s01",
|
||||
"fromSide": "bottom",
|
||||
"toNode": "4c8e1a7d3b6f9025",
|
||||
"toSide": "top",
|
||||
"toEnd": "arrow",
|
||||
"label": "Slot-Klick / + Termin"
|
||||
},
|
||||
{
|
||||
"id": "b2d84f6a1c90e735",
|
||||
"fromNode": "4c8e1a7d3b6f9025",
|
||||
"fromSide": "bottom",
|
||||
"toNode": "c71a05e48fb293d6",
|
||||
"toSide": "top",
|
||||
"toEnd": "arrow",
|
||||
"label": "Datum/Uhrzeit bearbeiten"
|
||||
},
|
||||
{
|
||||
"id": "a7d3c9e1f6048b25",
|
||||
"fromNode": "4c8e1a7d3b6f9025",
|
||||
"fromSide": "right",
|
||||
"toNode": "m01",
|
||||
"toSide": "left",
|
||||
"toEnd": "arrow",
|
||||
"label": "Weitere Optionen"
|
||||
},
|
||||
{
|
||||
"id": "e-open",
|
||||
"fromNode": "s01",
|
||||
"fromSide": "bottom",
|
||||
"toNode": "m02",
|
||||
"toSide": "top",
|
||||
"toEnd": "arrow",
|
||||
"label": "Termin-Klick"
|
||||
},
|
||||
{
|
||||
"id": "e-edit",
|
||||
"fromNode": "m02",
|
||||
"fromSide": "left",
|
||||
"toNode": "m01",
|
||||
"toSide": "right",
|
||||
"toEnd": "arrow",
|
||||
"label": "Bearbeiten"
|
||||
},
|
||||
{
|
||||
"id": "91c4d7e2a6b805f3",
|
||||
"fromNode": "m01",
|
||||
"fromSide": "bottom",
|
||||
"toNode": "83f1b6d2a9c407e5",
|
||||
"toSide": "top",
|
||||
"toEnd": "arrow",
|
||||
"label": "Änderungen speichern"
|
||||
},
|
||||
{
|
||||
"id": "f3a8c1d6e2b90745",
|
||||
"fromNode": "83f1b6d2a9c407e5",
|
||||
"fromSide": "right",
|
||||
"toNode": "m02",
|
||||
"toSide": "bottom",
|
||||
"toEnd": "arrow",
|
||||
"label": "Mit / ohne E-Mail speichern"
|
||||
},
|
||||
{
|
||||
"id": "e-settings",
|
||||
"fromNode": "s01",
|
||||
"fromSide": "right",
|
||||
"toNode": "s02",
|
||||
"toSide": "left",
|
||||
"toEnd": "arrow",
|
||||
"label": "Einstellungen / Verbinden"
|
||||
},
|
||||
{
|
||||
"id": "e-sync-note",
|
||||
"fromNode": "note-sync",
|
||||
"fromSide": "left",
|
||||
"toNode": "s02",
|
||||
"toSide": "right",
|
||||
"toEnd": "arrow",
|
||||
"styleAttributes": {
|
||||
"path": "dotted"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -4,23 +4,24 @@ project: HiveGrid Screen Project
|
||||
ticket: D-BOOK + D-P16 (Teil)
|
||||
package: WF-P16 Kalender
|
||||
typ: Flow
|
||||
status: Validiert
|
||||
subframe: ""
|
||||
status: Fertig / Development-Handoff
|
||||
subframe: "https://app.subframe.com/f023064a5ca0/flow/67196422-e7bc-4a60-9556-17b4edb83246/edit"
|
||||
canvas: "WF-P16 Kalender.canvas"
|
||||
source_checked: 2026-08-31
|
||||
---
|
||||
|
||||
# WF-P16 Kalender
|
||||
|
||||
Status: Validiert (Screen-Liste)
|
||||
Subframe-Link: -
|
||||
Canvas: [Canvas](<WF-P16 Kalender.canvas>)
|
||||
Stand: 2026-07-09
|
||||
Status: Fertig / Development-Handoff
|
||||
Subframe-Link: [Subframe-Flow](https://app.subframe.com/f023064a5ca0/flow/67196422-e7bc-4a60-9556-17b4edb83246/edit)
|
||||
Canvas: [Canvas](<WF-P16 Kalender.canvas>)
|
||||
Stand: 2026-08-31
|
||||
|
||||
---
|
||||
|
||||
## 1. Kurzfassung
|
||||
|
||||
Der HiveGrid-Kalender: Monats-/Wochen-Ansicht mit allen Terminen (Google-Sync, Buchungen, Plantafel, Projekt-Termine — je mit Herkunfts-Marker). **Davids Delta: ein vollwertiger Kalender**, nicht nur eine Lese-Sicht — Termine anlegen, Personen einladen (Team, Kontakte, freie E-Mails), Kollegen-Kalender als Verfügbarkeits-Overlay einblenden. Funktioniert eigenständig ohne Google; Google-Sync ist optional (Outlook → v2, in der UI als »bald verfügbar« sichtbar).
|
||||
Der Kalender bleibt ein bewusst kleines Feature: Termine aus Google, Buchungen, Plantafel, Projekten und HiveGrid in einer Wochen-/Monatsansicht sehen, schnell anlegen, öffnen und bearbeiten. Quick Create ist der Standardweg. Der vollständige Dialog erscheint nur über Weitere Optionen oder beim Bearbeiten. Nach relevanten Änderungen an einem bestehenden Termin entscheidet ein kleines Modal, ob die Teilnehmenden per E-Mail informiert werden.
|
||||
|
||||
---
|
||||
|
||||
@@ -28,12 +29,11 @@ Der HiveGrid-Kalender: Monats-/Wochen-Ansicht mit allen Terminen (Google-Sync, B
|
||||
|
||||
| Frage | Antwort |
|
||||
|---|---|
|
||||
| Ticket/Modul | D-BOOK (Kalender-View) + D-P16 (Kalender-Verbindungen), Dev-Pendant AK-P16a |
|
||||
| Nutzer-Ziel | Alle Termine an einem Ort sehen, neue Termine planen ohne Doppelbelegung, Google bleibt synchron |
|
||||
| Quellen geprüft | `ticket-docs/D-BOOK.md`, `ticket-docs/D-P16.md`, `designer-briefs/P16-…md`, HiveGrid Map |
|
||||
| Sicher im Scope | Kalender-Grid (Monat/Woche), Termin anlegen/bearbeiten + Einladen, Termin-Detail, Sync-Einstellungen inkl. Konflikt-Verlauf |
|
||||
| Sicher nicht im Scope | Buchungsseiten + Verfügbarkeits-Editor (WF-P16 Terminbuchung); Plantafel (WF-P9); Outlook-Sync (v2) |
|
||||
| Unsichere Annahmen | Termin-Objekt + Einladungen sind NICHT im Dev-Ticket — Change-Request nötig (s. Offene Fragen) |
|
||||
| Ticket/Modul | D-BOOK (Kalender-View) + D-P16 (Kalender-Verbindungen) |
|
||||
| Nutzer-Ziel | Termine zentral sehen und die meisten davon mit möglichst wenig Aufwand anlegen |
|
||||
| Sicher im Scope | Kalender-Grid, Quick Create, Quick-Create-Edit-State, vollständiger Termin-Dialog, Termin-Detail, E-Mail-Entscheidung bei Änderungen und eine schlanke Google-Verbindungsseite |
|
||||
| Sicher nicht im Scope | Buchungsseiten, Verfügbarkeits-Editor, Plantafel-Bearbeitung, Outlook-Sync v1, eigenes Konfliktfeature |
|
||||
| Leitlinie | Zustände innerhalb bestehender Oberflächen bevorzugen; keine unnötigen Unterseiten |
|
||||
|
||||
---
|
||||
|
||||
@@ -41,90 +41,131 @@ Der HiveGrid-Kalender: Monats-/Wochen-Ansicht mit allen Terminen (Google-Sync, B
|
||||
|
||||
| Punkt | Inhalt |
|
||||
|---|---|
|
||||
| Startpunkt | Sidebar »Kalender« |
|
||||
| Ziel | Termin geplant (mit Teilnehmern, ohne Kollision) · Google verbunden und synchron |
|
||||
| Haupt-Archetyp | **BESPOKE** (Kalender-Grid) + A6 (Einstellungen) |
|
||||
| Out of scope | Booking-Pages, Plantafel-Einsätze (nur als Quelle sichtbar), Outlook |
|
||||
| Startpunkt | Sidebar Kalender |
|
||||
| Ziel | Termin schnell geplant oder geändert; Teilnehmende bei Bedarf per E-Mail informiert |
|
||||
| Haupt-Archetyp | Bespoke Kalender-Grid + kompakte Dialoge + Settings |
|
||||
| Out of scope | Booking-Pages, Plantafel-Einsätze als Bearbeitungsfläche, Outlook-Sync |
|
||||
|
||||
---
|
||||
|
||||
## 4. Entscheidungen (validiert 2026-07-09)
|
||||
## 4. Entscheidungen
|
||||
|
||||
| Entscheidung | Status | Notiz |
|
||||
|---|---|---|
|
||||
| Vollwertiger Kalender statt reiner Lese-Sicht | genommen (Delta) | Termine anlegen/bearbeiten/löschen, »alles was man für einen Kalender braucht« — **Change-Request an Dev** (Ticket sah nur Grid + Marker vor) |
|
||||
| Einladen: Team + Kontakte + freie E-Mails | genommen (Delta) | Interne sehen den Termin in ihrem HiveGrid-Kalender; Externe bekommen E-Mail mit Kalender-Datei (.ics); Zu-/Absagen sichtbar |
|
||||
| Kollegen-Kalender einblendbar (Overlay) | genommen (Delta) | Vor dem Einladen prüfen, ob jemand Zeit hat; fremde private Google-Termine nur als »belegt« ohne Details |
|
||||
| Eigener + fremde Kalender in einer Ansicht | genommen | Plantafel bleibt die Baustellen-/Einsatz-Sicht — der Kalender ist die Termin-Sicht |
|
||||
| Verbinden-Einstieg direkt im Kalender | genommen | Hinweis-Karte solange nichts verbunden ist; danach über Zahnrad → Einstellungen. Kalender ist auch ohne Google voll nutzbar |
|
||||
| Provider-Auswahl mit Outlook-Teaser | genommen | Google aktiv (v1), Outlook ausgegraut »bald verfügbar« — UI bleibt provider-neutral |
|
||||
| Sync-Konflikt-Verlauf in den Einstellungen | genommen | Kleine Sektion (letzte 50, Klartext: was kollidierte, wie gelöst) — Muster wie Abgleich-Verlauf WF-P5; im Kalender nur dezenter Hinweis bei frischen Konflikten |
|
||||
| OAuth-Assistent + Trennen-Modal aus WF-P5 wiederverwenden | genommen | Trennen mit »auch extern entfernen?«-Wahl |
|
||||
| Vollwertiger Kalender | genommen | Termine können angelegt, geöffnet, bearbeitet und gelöscht werden |
|
||||
| Quick Create als Standardweg | final | Slot-Klick und Termin anlegen öffnen M01; Weitere Optionen führt mit übernommenen Eingaben zu M01b |
|
||||
| Datum/Uhrzeit direkt in Quick Create korrigieren | final | Klick auf die Zeitzeile wechselt in M01a mit Inline-Date-/Time-Pickern |
|
||||
| Vollständiger Termin-Dialog | final | Nur die zweispaltige Version bleibt; V2 und V3 wurden gelöscht |
|
||||
| Einladen: Team, Kontakte und freie E-Mails | genommen | Interne sehen den Termin in HiveGrid; Externe erhalten E-Mail und Kalenderdaten |
|
||||
| Änderungen per E-Mail senden | final | M03 erscheint nach relevanten Änderungen an einem bestehenden Termin mit Teilnehmenden; Zurück, ohne E-Mail speichern oder E-Mail senden |
|
||||
| Kollegen-Kalender als Overlay | genommen | Private Fremdtermine erscheinen nur als Belegt |
|
||||
| Konflikte bewusst schlank | final | Kein eigener Konflikt-Screen oder Pop-up; nur ein kleiner Badge Möglicher Konflikt direkt an einer Person |
|
||||
| Einstellungen auf Verbindung reduzieren | final | Eine Seite für Google-Status, Kalenderauswahl, neu verbinden und trennen |
|
||||
| Outlook | Backlog | In S02 nur als deaktivierter Demnächst-Teaser |
|
||||
|
||||
### Happy Path
|
||||
|
||||
1. Mitarbeiter öffnet Kalender (Woche), sieht eigene Termine quell-farbig (Google / Buchung / Plantafel / Projekt / eigene).
|
||||
2. Klick auf freien Slot → Termin-Dialog: Titel, Zeit, Teilnehmer (Kollege @Max, Kontakt Müller, freie E-Mail) — beim Hinzufügen zeigt der Dialog, wer belegt ist; optional Kollegen-Kalender als Overlay einblenden.
|
||||
3. Speichern → Interne sehen den Termin sofort, Externe bekommen Mail mit .ics; Zu-/Absagen laufen am Termin auf.
|
||||
4. Einmalig: »Google verbinden« → OAuth (P5-Muster) → Kalender auswählen, Sync-Richtung — ab da läuft alles synchron.
|
||||
1. Mitarbeiter öffnet S01 und sieht Termine aus allen Quellen.
|
||||
2. Slot-Klick oder Termin anlegen öffnet M01 Quick Create mit vorausgefüllter Zeit.
|
||||
3. Klick auf die Zeitzeile wechselt bei Bedarf in M01a und danach zurück in den kompakten Zustand.
|
||||
4. Speichern legt einen einfachen Termin direkt an.
|
||||
5. Weitere Optionen öffnet M01b für zusätzliche Angaben.
|
||||
6. Termin-Klick öffnet M02; Bearbeiten führt bei eigenen Terminen zu M01b.
|
||||
7. Wird ein bestehender Termin mit Teilnehmenden relevant geändert, öffnet Speichern M03.
|
||||
8. M03 speichert ohne E-Mail oder speichert und versendet die aktualisierten Termindaten per E-Mail.
|
||||
|
||||
### Meldungs-/Error-States (validiert)
|
||||
### Zustände
|
||||
|
||||
| Ereignis | UI-Form | Blockiert? | Bauen? | Copy/Notiz |
|
||||
| Ereignis | UI-Form | Blockiert? | Status |
|
||||
|---|---|---|---|
|
||||
| Kein Google verbunden | Hinweis in S01 und Verbindungsbereich in S02 | nein | dokumentiert |
|
||||
| Verbindung abgelaufen | Re-Connect-Banner in S01 und Aktion in S02 | nein | in S01 sichtbar |
|
||||
| Person möglicherweise belegt | Kleiner Badge direkt an der Person | nein | in M01b sichtbar |
|
||||
| Fremder privater Google-Termin | Belegt-Block ohne Details | nein | in S01 sichtbar |
|
||||
| Einladungs-Mail unzustellbar | Hinweis am Teilnehmer plus erneut senden | nein | in M02 sichtbar |
|
||||
| Änderungen an bestehendem Termin | M03 E-Mail-Entscheidung | ja, bis Entscheidung | gebaut |
|
||||
| Leerer Kalender | Empty State mit Termin-/Google-CTA | nein | nur dokumentiert |
|
||||
|
||||
---
|
||||
|
||||
## 5. Validierte Screen-Liste
|
||||
|
||||
| ID | Screen/Zustand | Typ | Ort | Status |
|
||||
|---|---|---|---|---|
|
||||
| Kein Google verbunden | Hinweis-Karte in S01 (dismissbar) + Bereich in S02 | nein | Nur dokumentieren | »Verbinde deinen Google-Kalender …« — Kalender funktioniert trotzdem |
|
||||
| Verbindung kaputt (Token abgelaufen) | Re-Connect-Banner in S01 + S02 | nein | Nur dokumentieren | Klartext + »Neu verbinden«-Knopf |
|
||||
| Sync-Konflikt (beidseitige Änderung) | Benachrichtigung (Glocke) + Eintrag im Konflikt-Verlauf (S02) | nein | Nur dokumentieren | »Termin X wurde in Google auf 14:00 verschoben — HiveGrid hat übernommen« (Last-Write-Wins) |
|
||||
| Teilnehmer belegt | Inline-Warnung im Termin-Dialog | nein (bewusst buchbar) | in M01 enthalten | »Max ist 9–12 Uhr belegt« — analog Plantafel-Konflikt, aber ohne Block |
|
||||
| Fremder privater Google-Termin | nur »belegt«-Block ohne Titel/Details | nein | Nur dokumentieren | Datenschutz-Vorgabe aus dem Ticket |
|
||||
| Einladungs-Mail unzustellbar | Hinweis am Teilnehmer in M02 | nein | Nur dokumentieren | Bounce-Marker + erneut senden |
|
||||
| Leerer Kalender | Leer-Zustand + CTA (Termin anlegen / Google verbinden) | nein | Nur dokumentieren | — |
|
||||
| S01 | Kalender | Bespoke Grid | /calendar | Fertig / Development-Handoff |
|
||||
| M01 | Quick Create | Kompakter Dialog | Slot-Klick / Termin anlegen | Fertig / Development-Handoff |
|
||||
| M01a | Quick Create Edit Mode | Zustand von M01 | Klick auf Zeitzeile | Fertig / Development-Handoff |
|
||||
| M01b | Termin vollständig anlegen/bearbeiten | Modal | Weitere Optionen / Bearbeiten | Fertig / Development-Handoff |
|
||||
| M02 | Termin-Detail | Popover | Termin-Klick | Fertig / Development-Handoff |
|
||||
| M03 | Änderungen per E-Mail senden | Bestätigungsmodal | Speichern eines geänderten Termins | Fertig / Development-Handoff |
|
||||
| S02 | Kalender-Verbindungen | Settings | /settings/integrations/calendar | Fertig / Development-Handoff |
|
||||
|
||||
Wiederverwendet werden der OAuth-Assistent und das Trennen-Modal aus WF-P5. Sie sind keine zusätzlichen Kalender-Screens.
|
||||
|
||||
---
|
||||
|
||||
## 7. Validierte Screen-Liste
|
||||
## 6. Flow
|
||||
|
||||
| ID | Screen/Zustand | Typ | Umsetzung | Ort | Status |
|
||||
|---|---|---|---|---|---|
|
||||
| S01 | Kalender (Monat/Woche, Quell-Marker, Kollegen-Overlay) ⭐ | BESPOKE | Bauen | `/calendar` | Validiert |
|
||||
| M01 | Termin anlegen/bearbeiten (Teilnehmer + Verfügbarkeits-Check) | Modal | Bauen | aus S01 (Slot-Klick / + Termin) | Validiert |
|
||||
| M02 | Termin-Detail (Quelle + Absprung, Zu-/Absagen) | Popover | Bauen | Termin-Klick in S01 | Validiert |
|
||||
| S02 | Kalender-Einstellungen & Sync (Provider, Kalender-Auswahl, Richtung, Konflikt-Verlauf) | Settings (A6) | Bauen | `/calendar/settings` | Validiert |
|
||||
| D01 | OAuth-Assistent | Wiederverwenden | Wiederverwenden | WF-P5 M01 | Validiert |
|
||||
| D02 | Trennen-Bestätigung (»auch extern entfernen?«) | Wiederverwenden | Wiederverwenden | WF-P5 M03 (+ Extern-Wahl) | Validiert |
|
||||
| D03–D07 | Verbinden-Hinweis / Re-Connect / Konflikt / »belegt« / Leer (s. Tabelle) | Inline | Nur dokumentieren | — | Validiert |
|
||||
- Sidebar → S01
|
||||
- S01 → M01 über Slot-Klick oder Termin anlegen
|
||||
- M01 → M01a über Klick auf Datum/Uhrzeit
|
||||
- M01a → M01 mit aktualisiertem Zeitraum
|
||||
- M01 → M01b über Weitere Optionen
|
||||
- S01 → M02 über Termin-Klick
|
||||
- M02 → M01b über Bearbeiten
|
||||
- M01b → M03, wenn ein bestehender Termin mit Teilnehmenden relevant geändert wurde
|
||||
- M03 → M01b über Zurück
|
||||
- M03 → Kalender beziehungsweise Termin-Detail über Ohne E-Mail speichern oder E-Mail senden
|
||||
- S01 → S02 über Verbinden beziehungsweise Einstellungen
|
||||
|
||||
---
|
||||
|
||||
## 8. Grid
|
||||
## 7. Screen-Dateien
|
||||
|
||||
```text
|
||||
Sidebar -> S01 (Monat/Woche, Quellen: Google + Buchung + Plantafel + Projekt + eigene)
|
||||
S01 -> M01 (Slot-Klick / »+ Termin«: anlegen mit Teilnehmern + Verfügbarkeits-Check)
|
||||
S01 -> M02 (Termin-Klick: Detail-Popover, Quelle-Absprung, Zu-/Absagen)
|
||||
M02 -> M01 (Bearbeiten, nur bei eigenen Terminen)
|
||||
S01 -> S02 (Zahnrad / Verbinden-Hinweis: Provider, Kalender-Auswahl, Sync-Richtung, Konflikt-Verlauf)
|
||||
S02 nutzt WF-P5: OAuth-Assistent (M01) + Trennen-Modal (M03)
|
||||
Quell-Absprünge: Buchung -> WF-P16 Terminbuchung · Einsatz -> WF-P9 Plantafel · Projekt-Termin -> WF-P9 Projekt-Akte
|
||||
```
|
||||
- [[S01 Kalender]]
|
||||
- [[M01 Quick Create]]
|
||||
- [[M01a Quick Create Edit Mode]]
|
||||
- [[M01b Termin-Dialog]]
|
||||
- [[M02 Termin-Detail]]
|
||||
- [[M03 Änderungen per E-Mail senden]]
|
||||
- [[S02 Kalender-Einstellungen]]
|
||||
|
||||
---
|
||||
|
||||
## 9. Screen-Pakete
|
||||
## 8. Subframe-Vollabgleich
|
||||
|
||||
- [[S01 Kalender]] · [[M01 Termin-Dialog]] · [[M02 Termin-Detail]] · [[S02 Kalender-Einstellungen]]
|
||||
Der Flow enthält aktuell genau sieben Live-Seiten für sieben dokumentierte Screens beziehungsweise Zustände. Die gelöschten Seiten M01 V2, M01 V3 und der frühere Quick-Create-Picker sind nicht mehr Teil des Pakets.
|
||||
|
||||
---
|
||||
| Subframe-Seite | Logische Zuordnung | Befund | Link |
|
||||
|---|---|---|---|
|
||||
| S01 Kalender V1 | S01 | Wochenansicht mit Quellen und Kollegen-Overlay | [Subframe](https://app.subframe.com/f023064a5ca0/design/238adab5-a284-4065-91b5-28cd894f6b31/edit) |
|
||||
| M01 Quick Create | M01 | Kompakter Standardweg | [Subframe](https://app.subframe.com/f023064a5ca0/design/a4088a8a-fab2-433c-b2ff-46a521640999/edit) |
|
||||
| M01a Quick Create Edit Mode | M01a | Inline-Felder für Start und Ende | [Subframe](https://app.subframe.com/f023064a5ca0/design/1c0335d4-b6c9-4418-9ee6-f817928720e7/edit) |
|
||||
| M01 Termin anlegen V4 Zweispaltig | M01b | Einzige verbliebene Vollansicht | [Subframe](https://app.subframe.com/f023064a5ca0/design/eaf3f0ba-f80f-4ba3-b0a1-16e2695a2122/edit) |
|
||||
| M02 Termindetail Popover V1 | M02 | Termin-Detail mit Teilnehmerstatus und Antwortaktionen | [Subframe](https://app.subframe.com/f023064a5ca0/design/99fbcf22-50fd-42de-9243-278d1ef746c1/edit) |
|
||||
| M03 Änderungen per E-Mail senden | M03 | Google-ähnliche Entscheidung mit drei Aktionen | [Subframe](https://app.subframe.com/f023064a5ca0/design/3bac63a2-82fe-487a-9a0a-0dab263cc6d0/edit) |
|
||||
| S02 Kalender-Verbindungen V2 | S02 | Eine schlanke Verbindungsseite | [Subframe](https://app.subframe.com/f023064a5ca0/design/e95220a1-132a-445d-b785-d292385faa5e/edit) |
|
||||
|
||||
## 10. Offene Fragen
|
||||
### High-Level-Bewertung
|
||||
|
||||
- **Change-Request an Dev (groß):** Eigenes Termin-Objekt + Einladungen (Team/Kontakt/freie E-Mail, .ics-Versand, Zu-/Absage-Tracking) + Free/Busy-Overlay — Ticket AK-P16a sah nur Lese-Grid + Sync vor; ENTITY-MODEL Domäne 9 braucht Ergänzung
|
||||
- Zu-/Absage-Tracking bei internen Teilnehmern: eigener Status oder reicht angenommen/abgelehnt wie extern? → Dev
|
||||
- Erinnerungen vor Terminen (Push/Mail)? → v2-Kandidat, mit Benachrichtigungen (P3) klären
|
||||
- Tages-Ansicht zusätzlich zu Monat/Woche? → beim Subframe-Bau entscheiden
|
||||
Der Satz ist für den einfachen Kalender ausreichend. M01a und M03 sind klar begrenzte Zustände, keine eigenen tiefen Features. Zusätzliche Seiten für Konflikte, Datenschutz, Benachrichtigungseinstellungen oder ein Verbindungsdetail sind nicht nötig.
|
||||
|
||||
### Finaler Development-Vertrag
|
||||
|
||||
- S01 implementiert in v1 Monat und Woche. Der im statischen Mock sichtbare Tag-Umschalter wird nicht übernommen.
|
||||
- S01 erhält Heute, einen direkten Zugang zu S02 und im Re-Connect-Banner die konkrete Aktion Neu verbinden.
|
||||
- M01a und M01b übernehmen Datum und Uhrzeit immer aus dem gewählten Slot beziehungsweise bestehenden Termin; die sichtbaren Platzhalter sind nur Design-Daten.
|
||||
- M02 wird rollen- und quellenabhängig ausgespielt: Organisatoren sehen Bearbeiten/Löschen, eingeladene Nutzer Zusagen/Ablehnen und fremde Quellen nur den passenden Absprung. Duplizieren und Verschieben sind nicht Teil von v1.
|
||||
- Bounce wird in der Nutzeroberfläche als Nicht zustellbar bezeichnet.
|
||||
- Der ältere technische Subframe-Name von M01b ist kein Implementierungsbegriff und blockiert den Handoff nicht.
|
||||
- Empty-, Loading-, Error-, Permission- und Offline-Zustände verwenden bestehende globale Standards und benötigen keine zusätzlichen Kalender-Screens.
|
||||
|
||||
## 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)*
|
||||
- [x] Alle sieben Live-Seiten sind erfasst.
|
||||
- [x] Gelöschte Varianten und tote Links sind aus dem Paket entfernt.
|
||||
- [x] Quick Create und Edit Mode entsprechen der aktuellen Benennung.
|
||||
- [x] M03 ist gebaut, gerendert und dokumentiert.
|
||||
- [x] Der Konfliktumfang bleibt auf den kleinen Personen-Badge beschränkt.
|
||||
- [x] Sichtbare Mock-Abweichungen sind als verbindliche Development-Regeln entschieden.
|
||||
- [x] Das Kalender-Paket ist bereit für Development.
|
||||
Reference in new issue
Block a user