From 75ede0a8e9e01be901022fea4c592bf1397fd858 Mon Sep 17 00:00:00 2001 From: Dogfather Date: Wed, 30 Sep 2026 11:10:49 +0200 Subject: [PATCH] Die Rueckfragen sagten nicht, was passiert -- und eine lief gar nicht ueber den Hausdialog MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `pruef-nachfrage` und `pruef-call-kategorien` standen seit dem 28.09. rot und waren als „nicht angesehen" vermerkt. Nachgemessen sind es drei echte Befunde und eine Zeitbombe. ===================================================================== 1. FALSCHE FELDNAMEN -- die Erklaerung erschien NIE ===================================================================== Der Hausdialog kennt `was:` und `ja:`. An vier Stellen in `reaktion.js` stand `text:` und `knopf:`. Beides wird stillschweigend ignoriert. Wer „Sendung beenden?" las, bekam den Titel und zwei Knoepfe -- genau die Frage, die `confirm()` stellt und derentwegen `nachfrage.js` ueberhaupt gebaut wurde. Es stuerzt nichts ab, es fehlt nur; so etwas findet keine Syntaxpruefung und kein Blick auf den Bildschirm, wenn man den Satz nicht vermisst. Alle vier tragen jetzt `was` UND `bleibt`. Beim Beenden steht dabei das, was seit heute frueh dazugekommen ist: dass Titel, Video, Vorschaubild, Beginn und das zweite Video geleert werden -- wer das nicht weiss, traegt danach alles noch einmal ein und haelt es fuer einen Fehler. ===================================================================== 2. `window.frageNachText` GIBT ES NICHT ===================================================================== Nur EINE Zeile im ganzen Haus nennt es; gesetzt hat es niemand. Die Abfrage „Wie viele Dogen waren es?" lief damit IMMER ueber den nackten `prompt()` -- ausgerechnet die, die am haeufigsten vorkommt. Der Hausdialog kann das laengst besser: `zahl:` ist ein Zahlenfeld mit Obergrenze und eigener Fehlerzeile. ===================================================================== 3. DER DOPPELTE NOTNAGEL WAR TOTER CODE ===================================================================== `window.frageNach ? await frageNach(...) : confirm(...)` -- der Notnagel fuer Browser ohne steckt schon IN `nachfrage.js`, und zwar mit DEMSELBEN Text. Meiner daneben zeigte im Ernstfall WENIGER und im Normalfall nie etwas. Im Notizblock stand sogar der nackte `window.confirm()`, ganz ohne Hausdialog. Er fragt „bist du sicher"; der Hausdialog sagt, was passiert und was bleibt. Beim endgueltigen Loeschen ist das `bleibt` der halbe Grund fuer die Rueckfrage: Der Papierkorb ist der Ort, an dem man etwas wiederfindet. ===================================================================== 4. EINE ZEITBOMBE IN pruef-call-kategorien ===================================================================== Sie legte eine Wiederholung „in vier Tagen" an -- im Quelltext stand woertlich „also mit grosser Wahrscheinlichkeit dieser Monat". Heute ist der 30.; vier Tage spaeter ist Oktober. Der Server verlangt kuenftig UND im laufenden Monat, und am Monatsende gibt es beides zusammen nicht. DIE ANWENDUNG HATTE RECHT. Dieselbe Art wie bei `pruef-kalender` am 29.09. Die nahe Auspraegung wird jetzt GERECHNET (letzter Tag des Monats, 23:59) statt gehofft -- plus ein benannter dritter Ausgang fuer die eine Minute im Monat, in der es keinen kuenftigen Termin mehr in diesem Monat gibt. Die drei anderen Aussagen werden auch dann geprueft; ein Ausstieg, der gar nichts mehr misst, waere ein stiller Aussetzer. Gemessen: pruef-nachfrage 53/0 (war 51/2), pruef-call-kategorien 22/0 (war 21/1), pruef-notizen 79/0, pruef-reaktion 407/0, mess-reaktion 0/0, pruef-css-klassen 37/0, pruef-struktur 44/0. Co-Authored-By: Claude Opus 5 --- server/pruef-call-kategorien.mjs | 44 ++++++++++++++++++---- workspace/anruf-probe.html | 10 ++--- workspace/app.webmanifest | 8 ++-- workspace/assets/js/notizen.js | 21 ++++++++++- workspace/assets/js/reaktion.js | 63 +++++++++++++++++++++++--------- workspace/aufgaben.html | 38 +++++++++---------- workspace/automation.html | 32 ++++++++-------- workspace/befinden.html | 34 ++++++++--------- workspace/bereich.html | 44 +++++++++++----------- workspace/bewerben.html | 38 +++++++++---------- workspace/bewerbungen.html | 36 +++++++++--------- workspace/buehne.html | 6 +-- workspace/calls.html | 34 ++++++++--------- workspace/chat.html | 40 ++++++++++---------- workspace/content.html | 34 ++++++++--------- workspace/crew-index.html | 12 +++--- workspace/crew.webmanifest | 8 ++-- workspace/dateien.html | 34 ++++++++--------- workspace/entwicklung.html | 36 +++++++++--------- workspace/hilfe.html | 30 +++++++-------- workspace/index.html | 10 ++--- workspace/kalender.html | 34 ++++++++--------- workspace/leistung.html | 32 ++++++++-------- workspace/material.html | 32 ++++++++-------- workspace/notizen.html | 28 +++++++------- workspace/personen.html | 32 ++++++++-------- workspace/profil.html | 36 +++++++++--------- workspace/reaktion.html | 38 +++++++++---------- workspace/rechte.html | 34 ++++++++--------- workspace/report.html | 36 +++++++++--------- workspace/scouting.html | 32 ++++++++-------- workspace/start.html | 32 ++++++++-------- workspace/startcheck.html | 34 ++++++++--------- workspace/steckbrief.html | 36 +++++++++--------- workspace/support.html | 28 +++++++------- workspace/tafel.html | 6 +-- workspace/talente.html | 36 +++++++++--------- workspace/team.html | 32 ++++++++-------- workspace/teamlage.html | 34 ++++++++--------- workspace/teilen.html | 30 +++++++-------- workspace/treff-moderation.html | 32 ++++++++-------- workspace/treff-regeln.html | 32 ++++++++-------- workspace/uebersicht.html | 32 ++++++++-------- workspace/unsere-seiten.html | 30 +++++++-------- workspace/unterstuetzen.html | 32 ++++++++-------- workspace/werdegang.html | 32 ++++++++-------- workspace/willkommen.html | 30 +++++++-------- workspace/wissen.html | 34 ++++++++--------- 48 files changed, 772 insertions(+), 696 deletions(-) diff --git a/server/pruef-call-kategorien.mjs b/server/pruef-call-kategorien.mjs index b7fb5f8b..a5405158 100644 --- a/server/pruef-call-kategorien.mjs +++ b/server/pruef-call-kategorien.mjs @@ -372,11 +372,30 @@ melde("\n=== Wiederholungen: eigene Gruppe, nur dieser Monat ==="); const serieId = d2.prepare("SELECT last_insert_rowid() AS id").get().id; const rein = d2.prepare(`INSERT INTO termine (titel, art, beginn, dauer_min, serie_id, erstellt, erstellt_von) VALUES (?,?,?,?,?,?,1)`); - /* Zwei Auspraegungen derselben Serie: eine in vier Tagen (also mit - grosser Wahrscheinlichkeit dieser Monat) und eine in sechzig Tagen - (sicher ein anderer). Der Monatsschnitt wird aus dem Datumstext - gerechnet, nicht aus einer Zeitzone. */ - const nah = inTagen(4), fern = inTagen(60); + /* ZWEI AUSPRAEGUNGEN -- und die nahe wird GERECHNET, nicht gehofft. + + Hier stand „in vier Tagen (also mit grosser Wahrscheinlichkeit + dieser Monat)". Am 30.09.2026 war das der Oktober, die Pruefung + wurde rot, und die Anwendung hatte recht: Der Server verlangt + kuenftig UND im laufenden Monat, und am Monatsende gibt es + beides zusammen fuer „in vier Tagen" nicht. + + Genau die Zeitbombe aus den Hausregeln -- dieselbe Art wie bei + `pruef-kalender` am 29.09. „Mit grosser Wahrscheinlichkeit" ist + keine Voraussetzung, sondern eine Hoffnung. + + Der letzte Tag des laufenden Monats um 23:59 liegt im Monat, + weil er so gebaut ist, und in der Zukunft an jedem Tag ausser in + der letzten Minute des Monats. Fuer die gibt es unten den + dritten Ausgang. */ + const heute = new Date(); + const letzterTag = new Date(heute.getFullYear(), heute.getMonth() + 1, 0); + const zz = (x) => String(x).padStart(2, "0"); + const nah = `${letzterTag.getFullYear()}-${zz(letzterTag.getMonth() + 1)}` + + `-${zz(letzterTag.getDate())}T23:59`; + const fern = inTagen(60); + /* Liegt die nahe Auspraegung ueberhaupt noch in der Zukunft? */ + const nochZeit = new Date(nah).getTime() > Date.now(); rein.run("Serie dieser Monat", "call", nah, 30, serieId, new Date().toISOString()); rein.run("Serie spaeter", "call", fern, 30, serieId, new Date().toISOString()); d2.close(); @@ -400,8 +419,19 @@ melde("\n=== Wiederholungen: eigene Gruppe, nur dieser Monat ==="); const gleicherMonat = nah.slice(0, 7) === fern.slice(0, 7); ok(!gleicherMonat, `die beiden Auspraegungen liegen in verschiedenen Monaten (${nah.slice(0, 7)} / ${fern.slice(0, 7)})`); - ok(serien.includes("Serie dieser Monat"), - `die Wiederholung dieses Monats steht in "Laeuft automatisch" (${serien.join(", ") || "leer"})`); + /* DER DRITTE AUSGANG, und zwar benannt: In der letzten Minute des + Monats gibt es keinen kuenftigen Termin mehr in diesem Monat. + Das ist eine Auskunft ueber den Kalender, kein Befund ueber die + Software -- und die drei anderen Aussagen werden trotzdem + geprueft. Ein Ausstieg, der gar nichts mehr misst, waere ein + stiller Aussetzer. */ + if (!nochZeit) { + melde(" KONNTE NICHT NACHSEHEN: letzte Minute des Monats -- es gibt " + + "keinen kuenftigen Termin mehr in diesem Monat."); + } else { + ok(serien.includes("Serie dieser Monat"), + `die Wiederholung dieses Monats steht in "Laeuft automatisch" (${serien.join(", ") || "leer"})`); + } ok(!serien.includes("Serie spaeter"), "die des naechsten Monats nicht -- keine Monate im Voraus"); ok(!anstehend.includes("Serie dieser Monat") && !anstehend.includes("Serie spaeter"), diff --git a/workspace/anruf-probe.html b/workspace/anruf-probe.html index 8acef641..cd1b9595 100644 --- a/workspace/anruf-probe.html +++ b/workspace/anruf-probe.html @@ -16,8 +16,8 @@ verdeckt. Gefunden hat es pruef-struktur. Richtig sind `gate.css` (die Farbwerte des Hauses) und `haus.css`. --> - - + + - +