diff --git a/server/pruef-verteilen.mjs b/server/pruef-verteilen.mjs index a21577f2..78ac2d48 100644 --- a/server/pruef-verteilen.mjs +++ b/server/pruef-verteilen.mjs @@ -169,6 +169,78 @@ ok(vonModi.code === 201 && vonModi.verant === idModi, `Gegenprobe: ein Modi kann es versuchen — die Aufgabe landet bei ihm selbst ` + `(${vonModi.verant}, nicht ${idModi2})`); +/* ======================================================================= + DIE FELDER MUESSEN AUCH ZU SEHEN SEIN + ======================================================================= + + Filipe am 21.09.2026: "ich sehe noch immer nicht dass dogfather oder + die rechte hand wenn sie aufgaben verteilen die spezifisch an leute + verteilen können. mach das endlich auch weil das ist seeehr wichtig + damit wir arbeiten können mit den leuten." + + ALLES DARUEBER WAR GRUEN -- und er hatte trotzdem recht. Der Server + nahm die Zuteilung an, die Rechte stimmten, die Leute standen in der + Auskunft. Nur die rechte Hand BEKAM DAS FELD NIE ZU SEHEN: Das + Absenden fragte `ich.darf_verteilen` (Server: Leitung ODER rechte + Hand), das Anzeigen eine andere Menge aus bereiche.js (spicy, admin, + manager). Zwei Bedingungen fuer dieselbe Sache, und eine davon + veraltet. + + EINE PRUEFUNG, DIE NUR DEN SERVER FRAGT, FINDET SO ETWAS NIE. Sie + sieht eine Erlaubnis, die es gibt -- und uebersieht, dass niemand + an sie herankommt. Deshalb wird hier der Quelltext der Oberflaeche + mitgelesen: Es muss an BEIDEN Stellen dieselbe Frage stehen. + ======================================================================= */ +{ + const { readFileSync } = await import("node:fs"); + /* KOMMENTARE ZAEHLEN NICHT MIT. + + Beim ersten Lauf meldete diese Pruefung fuenf Stellen -- zwei + davon waren mein eigener ERKLAERTEXT, in dem die alte Bedingung + woertlich zitiert steht. Eine Pruefung, die ihre eigene + Begruendung als Befund zaehlt, treibt einen dazu, die Begruendung + zu loeschen. Der Zerleger aus helfer-ohne-kommentar.mjs trennt + beides sauber. */ + const { ohneKommentar } = await import("./helfer-ohne-kommentar.mjs"); + const js = ohneKommentar(readFileSync( + new URL("../workspace/assets/js/aufgaben.js", import.meta.url), "utf8"), ".js"); + + /* Wie oft wird ueberhaupt entschieden, ob jemand verteilen darf? */ + const mitServer = (js.match(/ich\.darf_verteilen/g) || []).length; + ok(mitServer >= 2, + `die Oberflaeche fragt ${mitServer}-mal den Server (darf_verteilen)`); + + /* UND NIRGENDS MEHR ALLEIN DIE ROLLENMENGE. `LEITUNG.has(ich.rolle)` + darf nur noch als Rueckfall hinter `??` stehen -- also fuer den + Fall, dass eine aeltere Serverfassung das Feld gar nicht schickt. + Steht es irgendwo als eigene Bedingung, ist die zweite Wahrheit + zurueck. */ + const ohneRueckfall = [...js.matchAll(/LEITUNG\.has\(ich\.rolle\)/g)] + .filter((m) => !/\?\?\s*$/.test(js.slice(Math.max(0, m.index - 24), m.index))); + ok(ohneRueckfall.length === 0, + ohneRueckfall.length + ? `${ohneRueckfall.length}-mal entscheidet die Rollenmenge allein -- ` + + "der Server sagt es besser" + : "und nirgends entscheidet die Rollenmenge allein"); + + /* DIE BESCHRIFTUNG IST TEIL DER FUNKTION. "Verantwortlich" mit einem + Strich daneben liest sich wie eine Eigenschaft; gefunden hat + Filipe das Feld damit nicht. "Wer macht es?" ist eine Frage. */ + const html = readFileSync( + new URL("../workspace/aufgaben.html", import.meta.url), "utf8"); + const schilder = [...html.matchAll(/for="(?:f|b)-verant">([^<]+) m[1].trim()); + ok(schilder.length === 2, + `beide Formulare haben das Feld (${schilder.length})`); + ok(schilder.every((t) => /wer\s+macht/i.test(t)), + `und beide fragen dasselbe ("${schilder.join('" / "')}")`); + + /* Und der leere Wert sagt, was er bedeutet. Ein Strich ist kein + Zustand, sondern ein fehlendes Wort -- wer ihn sieht, weiss nicht, + ob er etwas versaeumt hat. */ + ok(/— noch niemand —/.test(html), + "der leere Wert heisst „noch niemand“ und nicht nur „—“"); +} + console.log(`\n${fehler ? fehler + " FEHLER" : "Alles in Ordnung"} — ${geprueft} Prüfungen\n`); try { rmSync(ordner, { recursive: true, force: true }); } catch { /* egal */ } process.exit(fehler ? 1 : 0); diff --git a/workspace/anruf-probe.html b/workspace/anruf-probe.html index 9223dcd2..b460c072 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`. --> - - + + - +