Die Rueckfragen sagten nicht, was passiert -- und eine lief gar nicht ueber den Hausdialog
`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 <dialog> 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 <[email protected]>
This commit is contained in:
@@ -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"),
|
||||
|
||||
Reference in New Issue
Block a user