Skip to content

Knowledge Kalender

Der Knowledge Kalender ermöglicht zeitgebundene Wissens-Eintraege (Kurse, Oeffnungszeiten, Events). Eintraege werden als knowledge_items mit Kalender-Feldern gespeichert und über buildCalendarText() in semantisch durchsuchbaren Text umgewandelt.

Endpoints

Alle Endpoints sind unter /api/knowledge-calendar gemountet und erfordern combinedAuth.

MethodePfadBeschreibung
GET/Alle Kalender-Eintraege des Tenants laden
POST/Neuen Kalender-Eintrag erstellen
PUT/:idBestehenden Eintrag aktualisieren
DELETE/:idEintrag löschen

POST / PUT Request Body

json
{
  "title": "Ski-Gruppenkurs",
  "description": "Für Anfaenger und Fortgeschrittene",
  "calendar_category": "Skischule",
  "calendar_valid_from": "2026-01-15",
  "calendar_valid_until": "2026-03-31",
  "calendar_time_from": "10:00",
  "calendar_time_to": "12:00",
  "calendar_recurrence": "weekly",
  "calendar_days": ["Montag", "Mittwoch", "Freitag"],
  "calendar_interval": null,
  "calendar_price": "89€ pro Person",
  "calendar_booking_url": "https://example.com/buchen"
}

Response

json
{
  "success": true,
  "entry": { ... }
}

Kalender-Felder auf knowledge_items

SpalteTypBeschreibung
calendar_valid_fromdateGültig ab
calendar_valid_untildateGültig bis
calendar_time_fromvarchar(10)Uhrzeit von (z.B. "10:00")
calendar_time_tovarchar(10)Uhrzeit bis (z.B. "12:00")
calendar_recurrencevarchar(20)Wiederholungs-Modus
calendar_intervalintegerIntervall in Tagen (bei recurrence='interval')
calendar_daysjsonbWochentage als Array (bei recurrence='weekly')
calendar_pricevarchar(50)Preis-Information
calendar_booking_urltextBuchungs-Link
calendar_categoryvarchar(100)Kategorie des Eintrags

Recurrence-Werte

WertAnzeigeBeschreibung
dailyTaeglichJeden Tag
intervalAlle N TageNutzt calendar_interval für den Abstand
weeklyJeden Mo, Mi, FrNutzt calendar_days für die Wochentage
monthlyMonatlichEinmal pro Monat
none / leerEinmalig / auf AnfrageKein Wiederholungs-Muster

Datumsformat

Datumswerte werden immer als dd.mm.yyyy in den Vektor-Chunk geschrieben. Die Methode formatDateForChunk() stellt das sicher:

javascript
static formatDateForChunk(dateVal) {
  if (!dateVal) return null;
  const d = new Date(dateVal);
  if (isNaN(d.getTime())) return null;
  return `${String(d.getDate()).padStart(2, '0')}.${String(d.getMonth() + 1).padStart(2, '0')}.${d.getFullYear()}`;
}

Niemals rohes Date-Objekt

Date-Objekte dürfen nie per String-Interpolation in Chunks landen. Immer formatDateForChunk() verwenden.

buildCalendarText()

Diese Methode erzeugt den Text, der vektorisiert wird. Die Reihenfolge:

  1. Termin-Titel
  2. Kategorie
  3. Uhrzeit (von–bis)
  4. Wiederholung (menschenlesbar via recurrenceToHuman())
  5. Gültig ab / bis (formatiert als dd.mm.yyyy)
  6. Preis
  7. Buchungs-URL
  8. Beschreibung
  9. Überlappende Feiertage/Ferien (für semantischen Match)

Beispiel-Output

Termin: Ski-Gruppenkurs
Kategorie: Skischule
Uhrzeit: 10:00–12:00
Wann: Jeden Montag, Mittwoch, Freitag
Gültig ab: 15.01.2026
Gültig bis: 31.03.2026
Preis: 89€ pro Person
Buchung: https://example.com/buchen
Beschreibung: Für Anfaenger und Fortgeschrittene
Faellt in: Semesterferien, Osterferien

Feiertags-Erkennung

Der Service prueft automatisch, welche oesterreichischen Feiertage und Salzburger Schulferien in den Gültigkeitszeitraum eines Eintrags fallen. Diese werden dem Vektor-Chunk hinzugefuegt, damit semantische Suchen wie "Was gibt es in den Semesterferien?" funktionieren.

Gauss'sche Osterformel

Bewegliche Feiertage (Ostern, Pfingsten, Fronleichnam, Christi Himmelfahrt) werden über die Gauss'sche Osterformel berechnet. Die Formel liefert das Datum des Ostersonntags für ein beliebiges Jahr.

Fixe Feiertage

DatumName
1. JaennerNeujahr
6. JaennerHeilige Drei Koenige
1. MaiStaatsfeiertag
15. AugustMariae Himmelfahrt
26. OktoberNationalfeiertag
1. NovemberAllerheiligen
8. DezemberMariae Empfaengnis
24. DezemberHeiligabend
25. DezemberWeihnachten
26. DezemberStefanitag
31. DezemberSilvester

Bewegliche Feiertage (Ostern-basiert)

OffsetName
Ostern -2Karfreitag
OsternOstersonntag
Ostern +1Ostermontag
Ostern +39Christi Himmelfahrt
Ostern +49Pfingstsonntag
Ostern +50Pfingstmontag
Ostern +60Fronleichnam

Schulferien Salzburg (Näherung)

ZeitraumName
3.–9. FebruarSemesterferien
Ostern -8 bis Ostern +1Osterferien
5. Juli – 7. SeptemberSommerferien
27. Oktober – 2. NovemberHerbstferien
23. Dezember – 6. JaennerWeihnachtsferien

Status-Berechnung

computeStatus() berechnet den Status eines Kalender-Eintrags anhand des heutigen Datums:

StatusBedingung
expiredcalendar_valid_until liegt in der Vergangenheit
upcomingcalendar_valid_from liegt in der Zukunft
activeHeute liegt im Gültigkeitszeitraum