Ka-Note/docs/feature-meetings.md

3.4 KiB

Feature: Meetings (einmalige Termine)

Überblick

Neben den wiederkehrenden Jour-Fixes können einzelne, einmalige Meetings direkt im Daily Log erfasst und dokumentiert werden. Meetings sind an einen konkreten Tag gebunden und enthalten Uhrzeit, Teilnehmer und ein freies Markdown-Notizfeld.

Unterschied zu Jour-Fixes

Jour-Fix Meeting
Wiederkehrend Ja Nein
Themen (Topics) Ja, mit Historisierung Nein
Notizen HistoryEntry pro Thema & Datum Ein Markdown-Feld, wird überschrieben
Teilnehmer Nicht strukturiert Explizites Feld
Uhrzeit Nicht strukturiert Pflichtfeld
Sichtbar in Sidebar Ja (Favoriten) Nein
Stammdaten Ja (AgendaContext type='meeting') Ja (AgendaContext type='event')

Datenmodell

Meetings werden als AgendaContext mit type='event' gespeichert. Metadaten liegen im meta-Feld als EventMeta:

interface EventMeta {
  date: string;          // YYYY-MM-DD
  time: string;          // HH:MM
  participants: string[]; // Klarnamen, ohne @-Präfix
}

Die Notizen werden als ein einzelner HistoryEntry unter einem __notes__-Topic ({contextId}-notes) gespeichert. Beim Speichern wird der vorhandene Eintrag überschrieben — keine Versionierung.

Bedienung

Meeting anlegen

Variante 1 — Daily Log:

  1. Im Daily Log den gewünschten Tag auswählen
  2. Auf + Meeting (rechts über der Meetings-Sektion) klicken
  3. Titel, Uhrzeit und Teilnehmer eingeben
  4. Erstellen klicken

Variante 2 — CommandBar:

  • /meeting <Titel> eingeben → Meeting für heute wird angelegt

Die Uhrzeit wird beim Öffnen des Formulars mit der aktuellen Uhrzeit vorausgefüllt.

Teilnehmer eingeben

Das Teilnehmerfeld unterstützt @mention-Syntax:

  • @ tippen → Dropdown mit Personen aus der Datenbank
  • Personen mit Leerzeichen im Namen werden automatisch gequotet: @"Max Müller"
  • Mehrere Teilnehmer durch Leerzeichen trennen: @Anna @"Max Müller"
  • Die Teilnehmer-Badges in der Ansicht sind klickbar → Absprung zur Person

Notizen erfassen

  • Klick auf den Notizbereich öffnet den Markdown-Editor
  • @mention, @P:Projekt, @F:Firma-Verlinkungen funktionieren wie überall
  • Ctrl+S oder Speichern-Button zum Sichern

Meeting bearbeiten

Beim Hover über die Meeting-Karte erscheinen ✏️ und 🗑️:

  • ✏️ öffnet das Bearbeitungsformular für Titel, Uhrzeit und Teilnehmer
  • 🗑️ löscht das Meeting (Soft-Delete, wiederherstellbar über Papierkorb)

Technische Details

  • Meetings erscheinen nur im Daily Log unter dem jeweiligen Datum
  • Sie erscheinen nicht in der Sidebar und nicht in der Kontext-Navigation
  • Der Sync läuft über den bestehenden contexts-Kanal — keine zusätzlichen Sync-Endpunkte erforderlich
  • Soft-Delete cascadiert auf das Notes-Topic und den HistoryEntry

Relevante Dateien

Datei Zweck
shared/src/types.ts EventMeta, ContextType = '...|event'
client/src/lib/db/repositories.ts createEvent, updateEvent, updateEventNotes, getEventsForDate
client/src/lib/stores/agenda.ts eventsForDate(date) liveQuery
client/src/lib/components/EventCard.svelte Meeting-Karte (Anzeige + Bearbeitung)
client/src/lib/components/JournalView.svelte Integration im Daily Log
client/src/lib/components/CommandBar.svelte /meeting-Befehl
server/src/db/schema.ts type Enum um 'event' erweitert