Zentrale: "0 betreut" war fuer die Community dieselbe tote Zahl
Im Code stand die Loesung schon -- fuer jemand anderen. Am 10.09.2026 wurde dort vermerkt: "BETREUT" IST FUER EINEN MODI IMMER NULL. Er betreut keine Creator. Auf seiner Startseite stand deshalb dauerhaft "0 betreut": eine Zahl, die nie etwas anderes sagen kann, und damit schlimmer als keine. Wer sie sieht, sucht nach dem Fehler. Fuer ein Mitglied der Community gilt das erst recht -- und dort blieb es stehen. Dieselbe Zahl, derselbe Grund, dieselbe Wirkung. Jetzt steht dort, was die Community wirklich betrifft: WUENSCHE OFFEN. Der Ort, an dem sie mitentscheidet, was als Naechstes passiert -- eine Zahl, die zum Hingehen einlaedt, statt eine, die nichts sagt. WORAN DIE ENTSCHEIDUNG HAENGT: `freigabeBedingung` gibt nur fuer Leute von aussen eine SQL-Bedingung zurueck, sonst null. Damit ist die Frage "ist das jemand aus der Community" schon beantwortet, ohne dass hier ein Rollenname steht -- und dieselbe Bedingung sorgt dafuer, dass nur gezaehlt wird, was diese Person auch sehen darf. GEMESSEN, beide Seiten: Community : "4 Wuensche offen" DogFather : "2 im Team" (unveraendert) pruef-zentrale-ring: 14 Pruefungen, 0 Fehler. Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
@@ -52,6 +52,7 @@
|
||||
import express from "express";
|
||||
import { db, sitzungLesen, istLeitung, betreuteIds, scoutsVon, verborgeneIds, hausBedingung,
|
||||
TEAM_DOGI_ROLLEN } from "./workspace.js";
|
||||
import { freigabeBedingung } from "./workspace-treff.js";
|
||||
|
||||
export const zentraleRouter = express.Router();
|
||||
|
||||
@@ -332,12 +333,43 @@ zentraleRouter.get("/workspace/api/zentrale", (req, res) => {
|
||||
die Zahl, die an dieser Stelle etwas bedeutet -- und sie
|
||||
bekommt nur zu sehen, wer ohnehin weiss, dass es die Runde
|
||||
gibt. */
|
||||
TEAM_DOGI_ROLLEN.has(zeigt.rolle)
|
||||
? { wert: db().prepare(
|
||||
`SELECT COUNT(*) AS n FROM personen WHERE rolle IN (${
|
||||
[...TEAM_DOGI_ROLLEN].map((r) => `'${r}'`).join(", ")}) AND aktiv = 1`).get().n,
|
||||
schild: "im Team" }
|
||||
: { wert: betreuteIds(zeigt).length, schild: "betreut" },
|
||||
/* UND FUER DIE COMMUNITY GILT DASSELBE (18.09.2026).
|
||||
|
||||
Der Absatz darueber loest dieses Problem seit dem 10.09. fuer
|
||||
einen Modi -- fuer ein Mitglied der Community blieb es
|
||||
stehen. Es betreut erst recht niemanden; auf seiner
|
||||
Startseite stand dauerhaft „0 betreut", aus genau demselben
|
||||
Grund und mit genau derselben Wirkung: Wer eine Zahl sieht,
|
||||
die sich nie aendert, sucht den Fehler bei sich.
|
||||
|
||||
Stattdessen die Zahl, bei der es MITREDEN kann: offene
|
||||
Wuensche. Dort entscheidet die Community mit, was als
|
||||
Naechstes passiert -- eine Zahl, die zum Hingehen einlaedt,
|
||||
statt eine, die nichts sagt.
|
||||
|
||||
WORAN ERKANNT: `freigabeBedingung` gibt nur fuer Leute von
|
||||
aussen eine Bedingung zurueck, sonst null. Damit steht die
|
||||
Frage „ist das jemand aus der Community" schon beantwortet,
|
||||
ohne dass hier ein Rollenname steht -- und die Bedingung
|
||||
sorgt zugleich dafuer, dass nur gezaehlt wird, was diese
|
||||
Person auch sehen darf. Zwei Fliegen, eine Zeile. */
|
||||
(() => {
|
||||
if (TEAM_DOGI_ROLLEN.has(zeigt.rolle)) {
|
||||
return { wert: db().prepare(
|
||||
`SELECT COUNT(*) AS n FROM personen WHERE rolle IN (${
|
||||
[...TEAM_DOGI_ROLLEN].map((r) => `'${r}'`).join(", ")}) AND aktiv = 1`).get().n,
|
||||
schild: "im Team" };
|
||||
}
|
||||
const bed = freigabeBedingung(zeigt, "e");
|
||||
if (bed) {
|
||||
const n = db().prepare(
|
||||
`SELECT COUNT(*) AS n FROM eintraege e
|
||||
WHERE e.bereich = 'wunsch' AND e.status = 'offen' AND ${bed.wo}`)
|
||||
.get(...bed.werte).n;
|
||||
return { wert: n, schild: "Wünsche offen" };
|
||||
}
|
||||
return { wert: betreuteIds(zeigt).length, schild: "betreut" };
|
||||
})(),
|
||||
],
|
||||
});
|
||||
} catch (fehler) {
|
||||
|
||||
@@ -237,6 +237,23 @@ console.log("");
|
||||
const zahlenlinks = await seite.evaluate(() =>
|
||||
[...document.querySelectorAll("#zahlen a")].map((a2) => a2.getAttribute("href")));
|
||||
console.log(` Zahlen-Links: ${zahlenlinks.length}`);
|
||||
|
||||
/* DIE ZENTRALE OBEN: Ring, drei Zaehler, Uhr. Was davon betrifft
|
||||
ein Mitglied ueberhaupt? */
|
||||
const zentrale = await seite.evaluate(() => {
|
||||
const txt = (w) => (document.querySelector(w)?.textContent || "").replace(/\s+/g, " ").trim();
|
||||
return {
|
||||
ring: txt(".ring, .ringblock, [class*='ring']"),
|
||||
zaehler: [...document.querySelectorAll(".standzahl, .stand, [class*='stand']")]
|
||||
.map((e) => e.textContent.replace(/\s+/g, " ").trim()).filter(Boolean).slice(0, 6),
|
||||
kopfzeilen: [...document.querySelectorAll(".zentrale *")]
|
||||
.map((e) => e.children.length ? "" : (e.textContent || "").replace(/\s+/g, " ").trim())
|
||||
.filter((t) => t && t.length < 60).slice(0, 14),
|
||||
};
|
||||
});
|
||||
console.log(` Ring: „${zentrale.ring.slice(0, 60)}"`);
|
||||
console.log(` Zaehler: ${zentrale.zaehler.join(" | ") || "(nicht gefunden)"}`);
|
||||
console.log(` Texte oben: ${zentrale.kopfzeilen.join(" · ")}`);
|
||||
if (zahlenlinks.length) {
|
||||
const ziel = new URL(zahlenlinks[0], `${BASIS}/workspace/`).href;
|
||||
const antwort = await seite.goto(ziel, { waitUntil: "domcontentloaded" });
|
||||
@@ -319,11 +336,17 @@ console.log(fehlerAufSeite.length
|
||||
block: !document.getElementById("zahlen-block")?.hidden,
|
||||
links: document.querySelectorAll("#zahlen a").length,
|
||||
satz: document.body.innerText.includes("Vorarbeiten"),
|
||||
/* Behaelt DogFather seine dritte Zahl? „Wuensche offen" waere fuer
|
||||
ihn die falsche -- er sieht ohnehin alles. */
|
||||
drittezahl: [...document.querySelectorAll(".standzahl, .stand, [class*='stand']")]
|
||||
.map((e) => e.textContent.replace(/\s+/g, " ").trim())
|
||||
.find((t) => /betreut|im Team|Wünsche offen/.test(t)) || "(keine)",
|
||||
}));
|
||||
console.log("");
|
||||
console.log("=== Gegenprobe: DogFather auf derselben Seite ===");
|
||||
console.log(` Aufgabenblock: ${z.block ? "DA" : "FEHLT"} · Zahlen-Links: ${z.links}`
|
||||
+ ` · „Vorarbeiten": ${z.satz ? "ja" : "nein"}`);
|
||||
console.log(` Dritte Zahl: ${z.drittezahl}`);
|
||||
await ctx2.close();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user