Ein Termin von-bis belegt jeden Tag dazwischen

Zwei Fehler, nicht einer.

Der sichtbare: Die Kachel stand nur am Anfangstag. Wer im
Monatsraster auf den Mittwoch sah, sah nichts -- obwohl die Aktion
von Montag bis Freitag lief.

Der unsichtbare, und der ist der schlimmere: Der SERVER suchte
Eintraege, deren ANFANG im sichtbaren Fenster liegt. Eine Aktion vom
28.09. bis zum 05.10. kam im Oktober deshalb ueberhaupt nicht an --
nicht "nur am ersten Tag markiert", sondern gar nicht da. Wer im
Oktober plante, sah eine freie Woche, die belegt war. Jetzt
entscheidet die UEBERSCHNEIDUNG, nicht der Anfang.

Gebaut wurde es in nachTag() -- der einzigen Stelle, an der
Eintraege auf Tage verteilt werden. Monat, Woche, Liste und
Zeitstrahl holen sich alle dort; vier Ansichten einzeln
nachzuruesten waeren vier Stellen, an denen die fuenfte vergessen
wird.

Das Ende wird abgeleitet, nicht gepflegt: aus event_ende ODER aus
Uhrzeit plus Dauer. Ein Live von 22:00 ueber vier Stunden endet um
02:00 am naechsten Tag -- das stand bisher nirgends, obwohl die
Zahlen da waren.

Der Tagesdialog filterte selbst auf den Anfangstag. Im Raster war
der Mittwoch markiert, tippte man ihn an, stand da "An diesem Tag
steht nichts." Jetzt fragt er dieselbe Stelle wie das Raster.

pruef-zeitraum.mjs: 16 Pruefungen, beide Fehler einzeln, mit drei
Gegenproben (vor dem Anfang, nach dem Ende, Punkttermin).
pruef-terminregel.mjs weiterhin 35/0.

Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
2026-09-20 19:20:18 +02:00
co-authored by Claude Opus 5
parent 947ea7ff49
commit d77dd216c5
5 changed files with 443 additions and 8 deletions
+10 -3
View File
@@ -36,7 +36,7 @@ import { sichtbarEintrag, BEREICHE } from "./workspace-bereiche.js";
laufen auseinander, und dann zeigt die Karte etwas anderes als der
Kalender. */
import {
TERMIN_TAG_SQL, TERMIN_BEDINGUNG_SQL, TERMIN_GRUND_SQL, OHNE_ZUSTAENDE,
TERMIN_TAG_SQL, TERMIN_ENDE_SQL, TERMIN_BEDINGUNG_SQL, TERMIN_GRUND_SQL, OHNE_ZUSTAENDE,
} from "./workspace-termin-regel.js";
export const kalenderRouter = express.Router();
@@ -463,10 +463,17 @@ kalenderRouter.get("/workspace/api/termine", (req, res) => {
WHERE ${eintragRegel.wo}
AND e.status NOT IN (${OHNE_ZUSTAENDE.map(() => "?").join(", ")})
AND ${TERMIN_BEDINGUNG_SQL}
AND ${TERMIN_TAG_SQL} >= ?
/* UEBERSCHNEIDUNG, NICHT ANFANG (20.09.2026).
Vorher stand hier zweimal TERMIN_TAG_SQL -- also: „faengt
im sichtbaren Fenster an". Eine Aktion vom 28.09. bis zum
05.10. fiel damit im Oktober komplett heraus. Richtig ist
die Frage, ob sich Zeitraum und Fenster BERUEHREN:
faengt vor dem Fensterende an UND hoert nach dem
Fensteranfang auf. */
AND ${TERMIN_TAG_SQL} <= ?
AND ${TERMIN_ENDE_SQL} >= ?
ORDER BY wann, e.uhrzeit, e.id`)
.all(...eintragRegel.werte, ...OHNE_ZUSTAENDE, heuteLokal(), von, bis) : [];
.all(...eintragRegel.werte, ...OHNE_ZUSTAENDE, heuteLokal(), bis, von) : [];
/* DER NAME DES BRETTS KOMMT MIT -- und zwar aus dem Katalog, nicht
als abgeschriebene Liste im Browser. Ein Brett, das morgen