Doppelbuchungen und Konflikte im Besprechungsraum prüfen
Eine Planung von 09:00 bis 10:30 und Vorstellungsgespräche von 10:00 bis 11:00 überschneiden sich zwischen 10:00 und 10:30, während ein Review ab 11:00 problemlos passt. Gemeldet wird jedes überlappende Paar, nicht nur das erste. Kostenlos in Ihrem Browser.
- Kostenlos
- Läuft in Ihrem Browser
- Ohne Anmeldung
- Ihre Daten bleiben auf Ihrem Gerät
Im Browser ausführen – kostenlos
Ein gemeinsam genutzter Besprechungsraum kann frei erscheinen, obwohl zwei Buchungen unbemerkt denselben Zeitraum belegen. Dieses Werkzeug prüft eine Liste von Buchungen für genau einen Raum, validiert jedes Zeitfenster und meldet sämtliche Paare mit Überschneidungen. Es verwendet eindeutige Uhrzeiten desselben Tages im 24-Stunden-Format und gibt den Endzeitpunkt einer Buchung für die nächste frei. Das Ergebnis ist deterministisch und eignet sich zur Kalenderkontrolle, zur Prüfung importierter Daten oder für einen übersichtlichen Konfliktbericht vor der Veröffentlichung eines Raumplans.
Bereiten Sie die Buchungen eines Raums vor
Übermitteln Sie in der Liste bookings ausschließlich Reservierungen für einen Raum. Wenn jede Anfrage auf einen Raum und einen Tag beschränkt bleibt, ist das Ergebnis eindeutig: Jedes gemeldete Paar beansprucht tatsächlich denselben physischen Ort. Verwenden Sie nach Möglichkeit dauerhafte Kennungen aus Ihrem Planungssystem, denn die Antwort benennt Konflikte anhand dieser Kennungen und nicht anhand von Zeilenpositionen.
Das Werkzeug weist eine leere Liste, fehlerhafte Datensätze, doppelte Kennungen, unmögliche Uhrzeiten und Eingaben oberhalb der veröffentlichten Grenze zurück. Ebenso wird eine Buchung abgelehnt, deren Ende vor ihrem Beginn liegt; ein Übergang über Mitternacht wird nicht stillschweigend angenommen. Enthält Ihre Quelle Datumsangaben, Zeitzonen oder nächtliche Reservierungen, teilen oder normalisieren Sie diese Daten vor dem Aufruf.
Dieser ausdrückliche Vertrag verhindert, dass eine lokale Uhrzeit auf Servern, in Browsern oder Tabellen unterschiedlich interpretiert wird, und sorgt bei Wiederholungen für identische Ergebnisse.
Verstehen Sie die Konfliktregel
Buchungen werden als halboffene Intervalle ausgewertet: Der Beginn gehört zur Reservierung, während der genaue Endzeitpunkt für die nachfolgende Reservierung verfügbar ist. Eine Buchung von 09:00 bis 10:00 und eine weitere von 10:00 bis 11:00 folgen daher lückenlos aufeinander und stehen nicht im Konflikt. Beginnt die zweite um 09:59, wird das Paar gemeldet.
Zu jedem Konflikt enthält die Antwort beide Buchungskennungen sowie Anfang und Ende des gemeinsam belegten Zeitraums. Ein Eintrag ohne Dauer, bei dem start und end gleich sind, ist gültig, belegt aber keine Zeit und kann sich mit keiner anderen Buchung überschneiden. Der Algorithmus liefert alle Konfliktpaare und nicht nur den ersten Treffer oder ein Paar je Buchung.
Das ist wichtig, wenn mehrere Reservierungen zur gleichen Uhrzeit zusammenfallen: Drei Buchungen, die sich gegenseitig überschneiden, ergeben drei Paare und zeigen der zuständigen Person sämtliche zu untersuchenden Beziehungen. Die Ergebnisse werden zuverlässig nach Zeit sortiert; als letztes Entscheidungskriterium dient die ursprüngliche Eingabereihenfolge, damit automatisierte Vergleiche und Prüfprotokolle stabil bleiben.
Nutzen Sie den Bericht im Planungsablauf
Das oberste Ergebnis nennt die Anzahl geprüfter Buchungen, zeigt das Vorhandensein von Konflikten und gibt die Zahl der gefundenen Konfliktpaare an. Verwenden Sie bei Konflikten die Grenzen der Überschneidung, um das genaue strittige Zeitfenster zu erklären, statt nur allgemein vor einer Doppelbuchung zu warnen. Die Fähigkeit bestimmt bewusst keinen Vorrang, verschiebt keine Besprechungen und verbindet keine angrenzenden Reservierungen.
Solche Entscheidungen richten sich nach den Prioritäten Ihrer Organisation und gehören in Ihren Planungsprozess. Führen Sie die Prüfung vor der Veröffentlichung eines Raumkalenders, nach dem Import aus einem anderen System oder nach einer umfangreichen Änderung mehrerer Zeiten aus.
Anwendungsfälle
Kalenderimporte validieren
Prüfen Sie importierte Raumreservierungen, bevor diese den Zeitplan Ihres Hauptkalenders ersetzen oder ergänzen.
Sammeländerungen absichern
Erkennen Sie Konflikte, die entstehen, wenn die Verwaltung mehrere Besprechungszeiten in einem Vorgang verschiebt.
Einen Konfliktbericht erstellen
Listen Sie die genauen Buchungspaare und gemeinsamen Zeitfenster auf, die das Gebäudemanagement klären muss.
Häufige Fragen
Welches Zeitformat soll ich verwenden?
Verwenden Sie das 24-Stunden-Format HH:MM oder HH:MM:SS, beispielsweise 09:30 oder 14:05:20.
Stehen direkt aufeinanderfolgende Buchungen im Konflikt?
Nein. Endet eine Buchung genau beim Beginn der nächsten, gilt der Raum für die zweite als verfügbar.
Was geschieht, wenn das Ende vor dem Beginn liegt?
Zeiträume über Nacht müssen Sie vor der Prüfung normalisieren oder teilen.
Stoppt das Werkzeug nach der ersten Überschneidung?
Nein. Es meldet jedes Konfliktpaar, einschließlich aller Paarungen innerhalb einer Gruppe gleichzeitiger Reservierungen.
Kann ich mehrere Räume in einer Anfrage prüfen?
Nein. Jede Anfrage steht für einen Raum. Gruppieren Sie Buchungen nach Raum und prüfen Sie jede Gruppe getrennt.
Verwandte Tools
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem Stack
curl -X POST https://api.kit.forhosting.com/biz/meeting-room-double-booking-check \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"bookings":[{"booking_id":"planning","start":"09:00","end":"10:30"},{"booking_id":"interviews","start":"10:00","end":"11:00"},{"booking_id":"review","start":"11:00","end":"11:30"}]}'const res = await fetch("https://api.kit.forhosting.com/biz/meeting-room-double-booking-check", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"bookings": [
{
"booking_id": "planning",
"start": "09:00",
"end": "10:30"
},
{
"booking_id": "interviews",
"start": "10:00",
"end": "11:00"
},
{
"booking_id": "review",
"start": "11:00",
"end": "11:30"
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/biz/meeting-room-double-booking-check",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"bookings": [
{
"booking_id": "planning",
"start": "09:00",
"end": "10:30"
},
{
"booking_id": "interviews",
"start": "10:00",
"end": "11:00"
},
{
"booking_id": "review",
"start": "11:00",
"end": "11:30"
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/biz/meeting-room-double-booking-check", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"bookings":[{"booking_id":"planning","start":"09:00","end":"10:30"},{"booking_id":"interviews","start":"10:00","end":"11:00"},{"booking_id":"review","start":"11:00","end":"11:30"}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"bookings":[{"booking_id":"planning","start":"09:00","end":"10:30"},{"booking_id":"interviews","start":"10:00","end":"11:00"},{"booking_id":"review","start":"11:00","end":"11:30"}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/biz/meeting-room-double-booking-check", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"bookings": [
{
"booking_id": "planning",
"start": "09:00",
"end": "10:30"
},
{
"booking_id": "interviews",
"start": "10:00",
"end": "11:00"
},
{
"booking_id": "review",
"start": "11:00",
"end": "11:30"
}
]
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "biz.meeting_room_double_booking_check",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Limits
max_items | 1000 |
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |
Technische Hinweise
Bereiten Sie die Buchungen eines Raums vor
Jede Zeile benötigt eine eindeutige booking_id sowie start und end im 24-Stunden-Format HH:MM oder HH:MM:SS.
Nutzen Sie den Bericht im Planungsablauf
Die Liste conflicting_pairs kann ein Warnfeld, eine Ablehnung beim Import oder einen Bericht für die verantwortlichen Personen speisen. Ein konfliktfreies Ergebnis setzt has_conflicts auf false und enthält eine leere Paarliste; damit lässt sich eine einfache Regel zum Fortsetzen oder Stoppen umsetzen. Die Verarbeitung benötigt weder Netzwerk noch Speicher, Zufall oder aktuelles Datum; eine API-Anfrage wird mit $0.002 berechnet, sodass dieselbe Eingabe für wiederholbare Tests und Produktionsprüfungen geeignet ist.
Technische Fragen
Was kostet eine API-Anfrage?
Jede API-Anfrage kostet $0.002. Die Browserversion verwendet dieselbe deterministische Prüflogik.