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