/* ===================================================================== DRAUSSEN (21.09.2026) — was die Community-Seite "Unsere Seiten" braucht, damit sie nichts abschreiben muss. Filipe: "mach was anderes aus dieser seite oder mach es viel krass und geiler ... lass dir was uebelst geiles einfallen und ueberrasch mich ... erstell was was mich von den socken schmeisst. es soll wirklich sogar ein wow effekt fuer die community ergeben." --------------------------------------------------------------------- WAS DIESE SEITE VORHER WAR UND WAS DARAN FEHLTE Zwei Karten mit zwei Adressen. Sauber gebaut, richtig beschriftet -- und trotzdem beantwortete sie keine Frage, die jemand wirklich hat. Wer im Treff ist, kennt die Website. Der Rabattcode war das Einzige, wofuer man wiederkam, und den merkt man sich beim ersten Mal. DIE FRAGE, DIE DIE COMMUNITY WIRKLICH HAT, IST EINE ANDERE: Laeuft er gerade? Und wenn nicht -- wie lange noch? Auf die Antwort gibt es bereits einen Dienst im Haus: postfach.dogfather-universe.com/live-status, derselbe, von dem der oeffentliche Streamplan lebt. Er wird hier NICHT nachgebaut und auch nicht durchgereicht -- der Browser fragt ihn direkt, so wie draussen auch. Nachgemessen, bevor darauf gebaut wurde: - der Dienst antwortet und meldet sich selbst als gesund ("autoHealthy": true, zuletzt geprueft vor drei Minuten) - "access-control-allow-origin: *", die Treff-Adresse darf fragen - die Inhaltsrichtlinie der Treff-Seiten fuehrt postfach bereits in `connect-src` -- der Abruf waere sonst still blockiert worden und haette ausgesehen wie ein toter Dienst --------------------------------------------------------------------- WAS HIER BLEIBT: DIE KANAELE Die drei TikTok-Accounts stehen als KANAELE in workspace.js -- sie sind dort die eine Liste, an der die Aufgabenverteilung haengt. Die Community-Seite bekommt sie von dort und schreibt sie NICHT ab. Warum das keine Kleinigkeit ist: Am selben Tag stand in dieser Liste "@hasidog00804" statt "@hasidog0804" -- eine Null zu viel. Zwei Pruefungen hatten denselben Tippfehler abgeschrieben und waren deshalb gruen. Eine dritte Abschrift auf einer Seite, die Zuschauerinnen sehen, waere ein toter Link gewesen, den niemand meldet, weil niemand weiss, dass er falsch ist. DIE ADRESSE WIRD EBENFALLS ABGELEITET, nicht zusammengesetzt: Der Steckbrief weiss bereits, wie eine TikTok-Adresse aus einem Handle entsteht (KANAELE.tiktok.adresse). Stuende das Muster hier ein zweites Mal, gaebe es zwei Stellen, die sich bei einer Aenderung widersprechen koennen. --------------------------------------------------------------------- WER DAS SEHEN DARF Jede angemeldete Person. Nicht weil es egal waere, sondern weil hier nichts steht, was nicht ohnehin oeffentlich ist: Dieselben drei Accounts sind von dogfather-universe.com aus verlinkt, fuer alle. Das ist BEWUSST ANDERS als `kanaeleFuer` in workspace-bereiche.js, wo die Community die Kanalliste ausdruecklich NICHT bekommt. Dort geht es um die Frage "wohin soll diese Arbeit" -- eine interne Entscheidung, und wer sie nicht treffen darf, soll auch nicht die Auswahl sehen. Hier geht es um "wo finde ich ihn". Dieselben Daten, zwei verschiedene Fragen; deshalb zwei Wege und nicht einer, der beides halb macht. ===================================================================== */ import express from "express"; import { sitzungLesen, KANAELE } from "./workspace.js"; import { KANAELE as KANAL_ARTEN } from "./workspace-steckbrief.js"; /* DIE FESTE SENDEZEIT. Sie steht auch in assets/js/streamplan.js der oeffentlichen Seite (`FIX_STUNDE`). Zwei Zahlen, die dasselbe bedeuten, laufen irgendwann auseinander -- und es faellt niemandem auf, weil beide fuer sich plausibel aussehen. Deshalb haelt pruef-draussen die beiden Orte gegeneinander; verschiebt jemand den Termin und aendert nur einen, wird die Pruefung rot und sagt, welche Datei fehlt. WARUM SIE NICHT IN DER VERWALTUNG STEHT: Sie hat sich seit dem 20.08.2026 nicht geaendert. Eine Oberflaeche fuer eine Zahl, die man einmal im Jahr anfasst, ist mehr Pflege als Nutzen -- und ein Feld, das niemand benutzt, steht irgendwann falsch. Sobald sich der Termin oefter bewegt, gehoert er dorthin. Fuer eine ABWEICHUNG ist sie ohnehin nicht zustaendig: Sendet er einmal frueher, sagt das der Live-Status, und der kommt vom Dienst, nicht von dieser Zahl. */ export const SENDEZEIT_STUNDE = 20; export const draussenRouter = express.Router(); draussenRouter.get("/workspace/api/draussen", (req, res) => { const person = sitzungLesen(req); if (!person) return res.status(401).json({ fehler: "nicht_angemeldet" }); try { const kanaele = KANAELE.map((k) => { const ohneAt = k.handle.replace(/^@/, ""); return { wert: k.wert, name: k.name, handle: k.handle, adresse: KANAL_ARTEN.tiktok.adresse(ohneAt), satz: k.fuerDraussen || k.text, }; }); /* KEIN ZWISCHENSPEICHER MIT LAUFZEIT. Die Liste aendert sich nur, wenn jemand den Quelltext aendert -- dann startet der Dienst neu, und ein Stempel waere ohnehin hinfaellig. Eine Laufzeit wuerde hier nur eine Frage beantworten, die niemand stellt. */ res.json({ kanaele, sendeStunde: SENDEZEIT_STUNDE }); } catch (fehler) { console.error("[workspace] Draussen:", fehler.message); res.status(500).json({ fehler: "nicht_verfuegbar" }); } });