diff --git a/blick-befinden.png b/blick-befinden.png deleted file mode 100644 index 62d09409..00000000 Binary files a/blick-befinden.png and /dev/null differ diff --git a/server/pruef-anruf.mjs b/server/pruef-anruf.mjs index 0300d83b..95e16b4f 100644 --- a/server/pruef-anruf.mjs +++ b/server/pruef-anruf.mjs @@ -68,7 +68,15 @@ const anrufModul = await import("./workspace-anruf.js"); /* ---- Leute anlegen ---- */ const d = new DatabaseSync(process.env.WORKSPACE_DB); +/* Die Namen der Konten, die diese Pruefung anlegt -- gesammelt an der + Stelle, an der sie entstehen. Eine zweite Liste weiter unten waere + beim naechsten umbenannten Konto die veraltete: Genau das ist hier + passiert (die Liste nannte „Jonas, Luna, Mara, Pat", angelegt wurden + „Filipe, Rieke, Kessi, Tili"), und der Kommentar daneben behauptete + schon damals, sie sei abgeleitet. Jetzt ist sie es. */ +const ANGELEGTE_NAMEN = []; function person(name, rolle, code) { + ANGELEGTE_NAMEN.push(name); const salt = randomBytes(16).toString("hex"); const hash = scryptSync(code, salt, 64, { N: 32768, r: 8, p: 1, maxmem: 96 * 1024 * 1024 }).toString("hex"); @@ -996,6 +1004,83 @@ melde("=== 8. Zu dritt ==="); `${wer} hoert BEIDE anderen (${z.stroeme} Stroeme, „${z.lage}")`); } + /* ---- WER IST DRAN (20.09.2026) ----------------------------- + + Filipe: „die soll auch viel besser geiler und spezieller + aussehen, aber nicht so raushaengen." + + DER MANGEL WAR KEIN SCHOENHEITSFEHLER: In einem Anruf ohne + Video stand unter dem Kasten je Person das Wort „Verbunden" + -- bei dreien dreimal dasselbe Wort, und man sah nicht, WER + verbunden war. In einer Gruppe ist genau das die Frage. + + Gemessen wird deshalb, dass NAMEN dastehen, nicht Kacheln: + Ein Gesichtsfeld ohne Namen bestuende jede Pruefung, die nur + zaehlt. */ + /* WER MUSS WEN SEHEN. Nicht „irgendein echter Name", sondern + genau die beiden ANDEREN: Stuende bei DogFather sein eigener + Name im Kasten, waere das ein Fehler, den eine Pruefung auf + „ist ein echter Name" durchliesse. Die Namen kommen aus + `ANGELEGTE_NAMEN` -- sie werden beim Anlegen eingesammelt und + hier nur noch verteilt. */ + const NAME = { [idDogi]: ANGELEGTE_NAMEN[0], [idHand]: ANGELEGTE_NAMEN[1], + [idModi]: ANGELEGTE_NAMEN[2] }; + const ERWARTET = { + DogFather: [NAME[idHand], NAME[idModi]], + "die rechte Hand": [NAME[idDogi], NAME[idModi]], + "der Modi": [NAME[idDogi], NAME[idHand]], + }; + for (const [wen, x] of [["DogFather", a], ["die rechte Hand", b], ["der Modi", c]]) { + const g = await x.se.evaluate(() => ({ + felder: document.querySelectorAll("#anruf-leute .anruf__gesicht").length, + namen: [...document.querySelectorAll("#anruf-leute .anruf__gesicht .anruf__name")] + .map((e) => e.textContent.trim()).filter(Boolean), + verbunden: /Verbunden/.test(document.getElementById("anruf-leute")?.textContent || ""), + })); + ok(g.felder === 2, + `${wen} sieht die beiden anderen als Gesichtsfeld (${g.felder})`); + /* NICHT „laenger als ein Zeichen" -- der Rueckfalltext + „Jemand" ist sechs Zeichen lang und kam damit durch. Die + Pruefung war gruen, waehrend ausgerechnet der ANRUFER unter + jedem Kreis „Jemand" stehen sah. Verglichen wird deshalb + gegen die Namen, die es wirklich gibt. */ + const soll = [...ERWARTET[wen]].sort().join(", "); + const ist = [...g.namen].sort().join(", "); + ok(g.namen.length === 2 && ist === soll, + ` und zwar genau die beiden anderen (${ist || "keine"}, erwartet: ${soll})`); + ok(!g.verbunden, + " statt dreimal dem Wort „Verbunden“, das nichts unterscheidet"); + } + + /* ---- UND NICHTS HAENGT RAUS -------------------------------- + „nicht so raushaengen" ist die schaerfere der beiden Vorgaben: + Der Kasten ist 340 px breit und liegt in der Ecke. Bei DREI + Gesichtsfeldern plus Knopfreihe ist das die engste Lage, die + im Betrieb vorkommt -- also die, in der gemessen wird. */ + for (const [wen, x] of [["am Rechner", a]]) { + const raus = await x.se.evaluate(() => { + const k = document.querySelector(".anruf"); + if (!k) return null; + const r = k.getBoundingClientRect(); + const treffer = []; + for (const e of k.querySelectorAll("*")) { + const b2 = e.getBoundingClientRect(); + if (b2.width < 1 || b2.height < 1) continue; + if (b2.right > r.right + 1 || b2.left < r.left - 1 || b2.bottom > r.bottom + 1) { + treffer.push((e.className.baseVal ?? e.className).toString().split(" ")[0]); + } + } + return { geprueft: k.querySelectorAll("*").length, treffer }; + }); + /* DIE ZAHL GEHOERT IN DIE BEDINGUNG: Faende der Wahlausdruck + nichts, waere die Liste leer und die Pruefung gruen, ohne + etwas angesehen zu haben. */ + ok(raus && raus.geprueft > 10 && raus.treffer.length === 0, + raus?.treffer.length + ? `es haengt etwas raus: ${raus.treffer.slice(0, 3).join(", ")}` + : `nichts haengt aus dem Kasten (${raus?.geprueft} Teile geprueft, ${wen})`); + } + /* ---- DER LAUTSPRECHER (18.09.2026) ------------------------- Filipe: „die funktion lautsprecher fehlt." diff --git a/workspace/anruf-probe.html b/workspace/anruf-probe.html index dd4df60a..ae2884cc 100644 --- a/workspace/anruf-probe.html +++ b/workspace/anruf-probe.html @@ -16,15 +16,15 @@ verdeckt. Gefunden hat es pruef-struktur. Richtig sind `gate.css` (die Farbwerte des Hauses) und `haus.css`. --> - - + + - +