Drei Zahlen, die etwas anderes zaehlten, als sie sagten

Weiter an derselben Stelle wie der Ring: Nicht umbauen, was gut ist --
suchen, wo eine Beschriftung etwas anderes behauptet, als darunter
gerechnet wird. Drei Funde, alle auf der Startseite.

1. "HEUTE" WAR ZWEIDEUTIG
Die erste Zahl unter dem Ring heisst "heute" und zaehlt TERMINE.
Solange der Ring die Uhrzeit zeigte, fiel das nicht auf. Seit er
"Heute geschafft" heisst und AUFGABEN zaehlt, standen zwei
verschiedene "heute" uebereinander -- ein Widerspruch, den der
vorherige Commit erst erzeugt hat. Heisst jetzt "Termine heute".

2. "KOMMT NOCH" ZAEHLTE STUNDEN, NICHT TERMINE
`mitTermin` ist eine Menge von STUNDEN -- fuer den Ring richtig, er
faerbt Stundensegmente. Als Zahl daneben war es falsch: Drei Termine
um 20 Uhr ergaben "1 kommt noch". Eine zu kleine Zahl meldet niemand;
man verlaesst sich darauf und wundert sich spaeter.

3. DIE KACHELZAHL SAGTE VORLESEND "OFFENE PUNKTE"
Sie summiert HINWEISE: bei Aufgaben "2 ueberfaellig" + "2 heute
faellig" = 4. Im Block darunter steht "6 Offen". Beides richtig -- nur
das Wort "offen" machte daraus einen Widerspruch, und wer die Seite
vorgelesen bekam, hoerte eine Zahl offener Aufgaben, die es nicht
gibt. Jetzt: "Aufgaben: 4 Sachen liegen an".

NICHT GEAENDERT, OBWOHL ICH ES VORGESCHLAGEN HATTE:
Die sieben Zaehler bleiben, auch wenn mehrere Null sind. Im Code steht
Filipes Anweisung vom 08.09. daneben ("diese beiden kategorien sollen
bei jedem in jeder rolle gleich sein"), samt der Erfahrung, dass das
Ausblenden schon einmal dazu fuehrte, dass Spicy Media als Einzige
etwas anderes sah. Der leere Zustand wird bereits gedaempft statt
entfernt -- das ist die bessere Loesung und sie war schon da.

pruef-zentrale-ring jetzt 14 Pruefungen (vorher 10), darunter drei
Termine in DERSELBEN Stunde -- der Fall, der 1 statt 3 ergab. Dazu die
Gegenprobe, dass jemand ohne Termine dort auch null sieht.
pruef-start-ansicht und pruef-tagesblick unveraendert gruen.

Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
2026-09-17 02:28:46 +02:00
co-authored by Claude Opus 5
parent b57b9cebb5
commit 3a86b13de1
33 changed files with 438 additions and 363 deletions
+45
View File
@@ -119,6 +119,19 @@ setzen(idLeer, "offen", tagLokal(5));
setzen(idSaeu, "offen", tagLokal(-4));
setzen(idSaeu, "offen", tagLokal(-3));
setzen(idSaeu, "arbeit", tagLokal(-1));
/* DREI TERMINE IN DERSELBEN STUNDE -- der Fall, an dem "kommt noch"
Stunden statt Termine zaehlte und deshalb 1 statt 3 meldete. Die
Stunde liegt bewusst spaet, damit sie in JEDER Tageszeit noch in der
Zukunft liegt; eine Pruefung, die nur vormittags gruen ist, waere
eine Zeitbombe. */
const SPAET = 23;
for (let i = 0; i < 3; i++) {
d.prepare(`INSERT INTO termine (titel, beginn, dauer_min, teilnehmer_id, erstellt, erstellt_von)
VALUES (?,?,?,?,?,?)`)
.run("Sendung", `${heuteLokal()}T${SPAET}:${String(10 + i * 5).padStart(2, "0")}:00`,
30, idTut, jetzt, idTut);
}
d.close();
async function ring(code) {
@@ -212,6 +225,38 @@ melde("=== 5. Was der Ring NICHT mehr ist ===");
`die alte Uhrzeit-Rechnung ergaebe jetzt ${alt} %, der Ring zeigt ${r.prozent} %`);
}
/* =======================================================================
6. DIE DREI ZAHLEN UNTER DEM RING
======================================================================= */
melde("");
melde("=== 6. Termine heute, kommt noch ===");
{
const r = await ring("CODE-TUT-00001");
const schilder = (r.zahlen || []).map((z) => z.schild);
/* "heute" ALLEIN WAR ZWEIDEUTIG: Der Ring darueber sagt jetzt "Heute
geschafft" und meint Aufgaben, diese Zahl meint Termine. */
ok(schilder[0] === "Termine heute",
`die erste Zahl sagt, WAS heute ist ("${schilder[0]}")`);
/* UND DER EIGENTLICHE FEHLER: drei Termine in derselben Stunde. */
const kommtNoch = (r.zahlen || [])[1];
const jetztStunde = new Date().getHours();
if (jetztStunde > 23) {
melde(" -- nach 23 Uhr nicht messbar -- die drei Termine liegen dann hinter uns");
} else {
ok(kommtNoch?.wert === 3,
`drei Termine um 23 Uhr zaehlen als drei, nicht als eine Stunde (${kommtNoch?.wert})`);
}
/* GEGENPROBE: Wer keine Termine hat, bekommt hier auch keine -- sonst
hiesse "3" nur, dass immer 3 herauskommt. */
const leer = await ring("CODE-LEER-0001");
ok((leer.zahlen || [])[1]?.wert === 0,
`und wer keine hat, sieht null (${(leer.zahlen || [])[1]?.wert})`);
ok((leer.zahlen || [])[0]?.wert === 0,
`auch bei "Termine heute" (${(leer.zahlen || [])[0]?.wert})`);
}
/* ------------------------------------------------------------------- */
melde("");
melde(`${geprueft} Pruefungen, ${fehler} Fehler`);
+20 -2
View File
@@ -300,8 +300,26 @@ zentraleRouter.get("/workspace/api/zentrale", (req, res) => {
prozent: dran ? Math.round((heuteFertig / dran) * 100) : 100,
segmente,
zahlen: [
{ wert: meine.length, schild: "heute" },
{ wert: [...mitTermin].filter((s) => s >= stundeJetzt).length, schild: "kommt noch" },
/* "TERMINE HEUTE", NICHT NUR "HEUTE" (17.09.2026).
Hier stand blosses "heute" -- und gezaehlt werden Termine.
Solange der Ring darueber die Uhrzeit zeigte, fiel das nicht
auf. Seit er "Heute geschafft" heisst und AUFGABEN zaehlt,
stehen zwei verschiedene "heute" uebereinander: eins meint
Aufgaben, eins Termine. Wer das liest, haelt die kleinere
Zahl fuer einen Fehler in der groesseren. */
{ wert: meine.length, schild: "Termine heute" },
/* UND HIER WURDEN STUNDEN GEZAEHLT, NICHT TERMINE.
`mitTermin` ist eine Menge von STUNDEN -- fuer den Ring
richtig, denn er faerbt Stundensegmente. Als Zahl daneben
war es falsch: Drei Termine um 20 Uhr ergaben "1 kommt
noch". Niemand haette das gemeldet, weil eine zu kleine Zahl
nicht auffaellt; man verlaesst sich nur darauf und wundert
sich spaeter. Gezaehlt wird jetzt, was es ist. */
{ wert: meine.filter(
(t) => Number(String(t.beginn).slice(11, 13)) >= stundeJetzt).length,
schild: "kommt noch" },
/* "BETREUT" IST FUER EINEN MODI IMMER NULL (10.09.2026).
Er betreut keine Creator -- das ist die Arbeit der Scouts und