diff --git a/server/pruef-zentrale-ring.mjs b/server/pruef-zentrale-ring.mjs index 55070543..29ecf11c 100644 --- a/server/pruef-zentrale-ring.mjs +++ b/server/pruef-zentrale-ring.mjs @@ -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`); diff --git a/server/workspace-zentrale.js b/server/workspace-zentrale.js index 388f8f8d..def012a4 100644 --- a/server/workspace-zentrale.js +++ b/server/workspace-zentrale.js @@ -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 diff --git a/workspace/app.webmanifest b/workspace/app.webmanifest index 4be57ba6..65ae51fb 100644 --- a/workspace/app.webmanifest +++ b/workspace/app.webmanifest @@ -13,25 +13,25 @@ "theme_color": "#06090f", "icons": [ { - "src": "/assets/img/app-symbole/workspace-192.png?v=202609162320", + "src": "/assets/img/app-symbole/workspace-192.png?v=202609170226", "sizes": "192x192", "type": "image/png", "purpose": "any" }, { - "src": "/assets/img/app-symbole/workspace-512.png?v=202609162320", + "src": "/assets/img/app-symbole/workspace-512.png?v=202609170226", "sizes": "512x512", "type": "image/png", "purpose": "any" }, { - "src": "/assets/img/app-symbole/workspace-192-maskable.png?v=202609162320", + "src": "/assets/img/app-symbole/workspace-192-maskable.png?v=202609170226", "sizes": "192x192", "type": "image/png", "purpose": "maskable" }, { - "src": "/assets/img/app-symbole/workspace-512-maskable.png?v=202609162320", + "src": "/assets/img/app-symbole/workspace-512-maskable.png?v=202609170226", "sizes": "512x512", "type": "image/png", "purpose": "maskable" diff --git a/workspace/assets/js/start.js b/workspace/assets/js/start.js index cb1fd611..21150106 100644 --- a/workspace/assets/js/start.js +++ b/workspace/assets/js/start.js @@ -348,8 +348,20 @@ const marke = el('span', 'kachel__zahl', String(zahl.n)); if (zahl.warn) marke.dataset.warn = 'ja'; /* Vorlesende Programme bekommen einen Satz statt einer nackten - Zahl -- "Aufgaben, 3" sagt nichts. */ - marke.setAttribute('aria-label', `${zahl.n} offene Punkte in ${b.name}`); + Zahl -- "Aufgaben, 3" sagt nichts. + + NICHT "OFFENE PUNKTE" (17.09.2026). Gezaehlt werden + HINWEISE: bei Aufgaben etwa "2 ueberfaellig" plus "2 heute + faellig" -- also 4. Darunter steht im Zahlenblock aber "6 + Offen", und beides ist richtig. Das Wort "offen" war die + einzige Stelle, an der daraus ein Widerspruch wurde: Wer + die Kachel vorgelesen bekam, hoerte eine Zahl offener + Aufgaben, die es so nicht gibt. + + "Liegt an" ist das Wort, das im Haus ohnehin dafuer steht + -- der Block darueber heisst "Was ist dran". */ + marke.setAttribute('aria-label', + `${b.name}: ${zahl.n} ${zahl.n === 1 ? 'Sache liegt an' : 'Sachen liegen an'}`); a.append(marke); } else { a.append(el('span', 'kachel__pfeil', '→')); diff --git a/workspace/aufgaben.html b/workspace/aufgaben.html index 7139f2c0..f59e20f0 100644 --- a/workspace/aufgaben.html +++ b/workspace/aufgaben.html @@ -12,19 +12,19 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - - - + + + + + + - + @@ -282,10 +282,10 @@ - - - - - + + + + + diff --git a/workspace/automation.html b/workspace/automation.html index 200d6690..606cc01f 100644 --- a/workspace/automation.html +++ b/workspace/automation.html @@ -12,20 +12,20 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - - - - + + + + + + + - + @@ -168,10 +168,10 @@ - - - - - + + + + + diff --git a/workspace/befinden.html b/workspace/befinden.html index 1a082736..f6c004fe 100644 --- a/workspace/befinden.html +++ b/workspace/befinden.html @@ -7,14 +7,14 @@ - - - - - - - - + + + + + + + + @@ -105,9 +105,9 @@ - - - - + + + + diff --git a/workspace/bereich.html b/workspace/bereich.html index 9c5154c4..8c109af7 100644 --- a/workspace/bereich.html +++ b/workspace/bereich.html @@ -12,20 +12,20 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - - - - + + + + + + + - + @@ -181,14 +181,14 @@ - - - - - - - - - + + + + + + + + + diff --git a/workspace/calls.html b/workspace/calls.html index 58550026..4361a17b 100644 --- a/workspace/calls.html +++ b/workspace/calls.html @@ -12,20 +12,20 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - - - - + + + + + + + - + @@ -89,11 +89,11 @@ - - - - - - + + + + + + diff --git a/workspace/chat.html b/workspace/chat.html index 4234346b..0d4989eb 100644 --- a/workspace/chat.html +++ b/workspace/chat.html @@ -12,26 +12,26 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - + + + + - - - + + + - + @@ -341,10 +341,10 @@ - - - - - + + + + + diff --git a/workspace/content.html b/workspace/content.html index 41241e0b..07e766f2 100644 --- a/workspace/content.html +++ b/workspace/content.html @@ -12,20 +12,20 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - - - - + + + + + + + - + @@ -179,12 +179,12 @@ - - - - - - - + + + + + + + diff --git a/workspace/crew-index.html b/workspace/crew-index.html index aeaae58a..8cf884d4 100644 --- a/workspace/crew-index.html +++ b/workspace/crew-index.html @@ -36,15 +36,15 @@ - - - + + + - + @@ -339,6 +339,6 @@ - + diff --git a/workspace/crew.webmanifest b/workspace/crew.webmanifest index acccdf68..7c6b5bc3 100644 --- a/workspace/crew.webmanifest +++ b/workspace/crew.webmanifest @@ -13,25 +13,25 @@ "theme_color": "#06090f", "icons": [ { - "src": "/assets/img/app-symbole/crew-192.png?v=202609162320", + "src": "/assets/img/app-symbole/crew-192.png?v=202609170226", "sizes": "192x192", "type": "image/png", "purpose": "any" }, { - "src": "/assets/img/app-symbole/crew-512.png?v=202609162320", + "src": "/assets/img/app-symbole/crew-512.png?v=202609170226", "sizes": "512x512", "type": "image/png", "purpose": "any" }, { - "src": "/assets/img/app-symbole/crew-192-maskable.png?v=202609162320", + "src": "/assets/img/app-symbole/crew-192-maskable.png?v=202609170226", "sizes": "192x192", "type": "image/png", "purpose": "maskable" }, { - "src": "/assets/img/app-symbole/crew-512-maskable.png?v=202609162320", + "src": "/assets/img/app-symbole/crew-512-maskable.png?v=202609170226", "sizes": "512x512", "type": "image/png", "purpose": "maskable" diff --git a/workspace/dateien.html b/workspace/dateien.html index 0f08016f..c462efc7 100644 --- a/workspace/dateien.html +++ b/workspace/dateien.html @@ -12,20 +12,20 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - - - - + + + + + + + - + @@ -108,10 +108,10 @@ - - - - - + + + + + diff --git a/workspace/entwicklung.html b/workspace/entwicklung.html index 0a9619ed..4d8da6bc 100644 --- a/workspace/entwicklung.html +++ b/workspace/entwicklung.html @@ -7,14 +7,14 @@ - - - - - - - - + + + + + + + + @@ -102,9 +102,9 @@ - - - - + + + + diff --git a/workspace/index.html b/workspace/index.html index 246e5230..89d6d6a6 100644 --- a/workspace/index.html +++ b/workspace/index.html @@ -30,9 +30,9 @@ - - - + + + @@ -401,6 +401,6 @@ - + diff --git a/workspace/kalender.html b/workspace/kalender.html index f89fdb5a..90ae37b5 100644 --- a/workspace/kalender.html +++ b/workspace/kalender.html @@ -12,20 +12,20 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - - - - + + + + + + + - + @@ -377,11 +377,11 @@ - - - - - - + + + + + + diff --git a/workspace/leistung.html b/workspace/leistung.html index 4156cd1c..a12a807f 100644 --- a/workspace/leistung.html +++ b/workspace/leistung.html @@ -12,20 +12,20 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - - - - + + + + + + + - + @@ -444,10 +444,10 @@ - - - - - + + + + + diff --git a/workspace/personen.html b/workspace/personen.html index 84015a6d..29704a35 100644 --- a/workspace/personen.html +++ b/workspace/personen.html @@ -12,20 +12,20 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - - - - + + + + + + + - + @@ -423,10 +423,10 @@ - - - - - + + + + + diff --git a/workspace/profil.html b/workspace/profil.html index 7a46a15a..42982555 100644 --- a/workspace/profil.html +++ b/workspace/profil.html @@ -12,20 +12,20 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - - - - + + + + + + + - + @@ -214,11 +214,11 @@ - - - - - - + + + + + + diff --git a/workspace/rechte.html b/workspace/rechte.html index c00e9bdb..95d6b605 100644 --- a/workspace/rechte.html +++ b/workspace/rechte.html @@ -7,14 +7,14 @@ - - - - - - - - + + + + + + + + @@ -134,9 +134,9 @@ Beim ersten Anlauf fehlte die Zeile auf genau diesen beiden neuen Seiten. Gefunden hat das nicht das Auge, sondern pruef-css-klassen, die seit dem 07.09. jede Seite danach absucht. --> - - - - + + + + diff --git a/workspace/report.html b/workspace/report.html index b433d129..4ad30399 100644 --- a/workspace/report.html +++ b/workspace/report.html @@ -12,20 +12,20 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - - - - + + + + + + + - + @@ -106,11 +106,11 @@ - - - - - - + + + + + + diff --git a/workspace/scouting.html b/workspace/scouting.html index 6dcf26ed..cae27e82 100644 --- a/workspace/scouting.html +++ b/workspace/scouting.html @@ -12,20 +12,20 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - - - - + + + + + + + - + @@ -173,10 +173,10 @@ - - - - - + + + + + diff --git a/workspace/start.html b/workspace/start.html index fc75f17c..383463e5 100644 --- a/workspace/start.html +++ b/workspace/start.html @@ -12,21 +12,21 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - + + + + - - + + - + @@ -674,10 +674,10 @@

- - - - - + + + + + diff --git a/workspace/startcheck.html b/workspace/startcheck.html index cb5392a2..215a4089 100644 --- a/workspace/startcheck.html +++ b/workspace/startcheck.html @@ -12,20 +12,20 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - - - - + + + + + + + - + @@ -85,11 +85,11 @@ - - - - - - + + + + + + diff --git a/workspace/steckbrief.html b/workspace/steckbrief.html index 0afe20ad..3dd94b09 100644 --- a/workspace/steckbrief.html +++ b/workspace/steckbrief.html @@ -12,20 +12,20 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - - - - + + + + + + + - + @@ -146,11 +146,11 @@ - - - - - - + + + + + + diff --git a/workspace/talente.html b/workspace/talente.html index ab93ffd7..b8cf18d5 100644 --- a/workspace/talente.html +++ b/workspace/talente.html @@ -7,14 +7,14 @@ - - - - - - - - + + + + + + + + @@ -94,9 +94,9 @@ - - - - + + + + diff --git a/workspace/team.html b/workspace/team.html index ad7cfa69..f01ec918 100644 --- a/workspace/team.html +++ b/workspace/team.html @@ -7,20 +7,20 @@ - - - - - - - + + + + + + + - + @@ -110,10 +110,10 @@ - - - - - + + + + + diff --git a/workspace/teamlage.html b/workspace/teamlage.html index 9a8410b0..6260e97f 100644 --- a/workspace/teamlage.html +++ b/workspace/teamlage.html @@ -7,20 +7,20 @@ - - - - - - - + + + + + + + - + - - - - + + + + diff --git a/workspace/treff-moderation.html b/workspace/treff-moderation.html index 41471769..2f10b351 100644 --- a/workspace/treff-moderation.html +++ b/workspace/treff-moderation.html @@ -7,14 +7,14 @@ - - - - - - - - + + + + + + + + @@ -110,9 +110,9 @@ - - - - + + + + diff --git a/workspace/treff-regeln.html b/workspace/treff-regeln.html index 74337dd1..047088a5 100644 --- a/workspace/treff-regeln.html +++ b/workspace/treff-regeln.html @@ -7,18 +7,18 @@ - - - - - - - + + + + + + + - + @@ -211,10 +211,10 @@ Beim ersten Anlauf fehlte die Zeile auf genau diesen beiden neuen Seiten. Gefunden hat das nicht das Auge, sondern pruef-css-klassen, die seit dem 07.09. jede Seite danach absucht. --> - - - - - + + + + + diff --git a/workspace/uebersicht.html b/workspace/uebersicht.html index 5168008e..3745424c 100644 --- a/workspace/uebersicht.html +++ b/workspace/uebersicht.html @@ -12,22 +12,22 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - + + + + - - - + + + - + @@ -149,11 +149,11 @@ - + - - - - + + + + diff --git a/workspace/wissen.html b/workspace/wissen.html index fe3fb5e5..ca703a17 100644 --- a/workspace/wissen.html +++ b/workspace/wissen.html @@ -12,20 +12,20 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - - - - + + + + + + + - + @@ -190,10 +190,10 @@ - - - - - + + + + +