Der „Anpassen"-Knopf war nur an EINEM der beiden Bretter geprueft
Beim Nachsehen zu VanVans Meldung #6 aufgefallen, nicht beim Bauen: Der Knopf haengt an ZWEI Kartenarten -- an den Creator-Vorlagen (vorlagenbrett.js:459) und am Team-Katalog (:1220). Im Browser gemessen war nur die erste. UND DIE ZWEITE IST DIE, DIE VANVAN BENUTZT. Die Creator-Vorlagen stehen auf „Aufgaben" und richten sich an Betreuer; der Katalog steht auf „Eure Aufgaben", und dort verteilt die rechte Hand an die Modis. Genau das war ihre Meldung. Dass man diese beiden Bretter verwechselt, ist in diesem Haus schon passiert: In pruef-bewerbung-aufgaben steht es seit dem 30.09. als Messfehler notiert, „der wie ein Befund aussieht". Diesmal waere es andersherum gewesen -- ein gruener Haken ueber einem Weg, den niemand geprueft hat. GEMESSEN HAT ES NICHTS KAPUTTES GEFUNDEN: Der Katalogzweig funktioniert. Aber er war unbewiesen, und das ist derselbe Zustand wie „ungeprueft" -- nur mit besserem Gefuehl. DIE GEGENPROBE ZUM ANDEREN BRETT STECKT JETZT DRIN. Ein Creator bekommt den „dauerhaft"-Haken NICHT (geprueft in pruef-aufgaben-vorlagen), die Leitung MUSS ihn bekommen (geprueft hier). Zwei Pruefungen, die denselben Unterschied von beiden Seiten messen -- erst dann ist es eine Regel und nicht ein Zufall. GEPRUEFT -- pruef-modi-katalog 150 -> 159 ok jede Katalogkarte hat einen „Anpassen …"-Knopf (12 von 12) das Fenster hat Frist und Anmerkung und die Leitung bekommt den „dauerhaft"-Haken die Frist der Vorlage steht als Vorgabe drin (2026-10-05, fruehestens 2026-10-03) mit Haken wird die Frist gesperrt die angepasste Aufgabe liegt in ihrer Liste (3 -> 4) sie ist wirklich dauerhaft · und hat keine Frist die Anmerkung steht als Notiz dabei Die letzten drei fragen die DATENBANK, nicht den Bildschirm. Was auf dem Brett steht, ist eine Darstellung; was in der Aufgabe steht, gilt. Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
@@ -945,6 +945,105 @@ console.log("");
|
|||||||
ok(danach.markiert >= 1,
|
ok(danach.markiert >= 1,
|
||||||
"der Katalog markiert sie als uebernommen (" + danach.markiert + ")");
|
"der Katalog markiert sie als uebernommen (" + danach.markiert + ")");
|
||||||
|
|
||||||
|
/* ==== ANPASSEN AM KATALOG -- DORT, WO VANVAN ARBEITET =========
|
||||||
|
==============================================================
|
||||||
|
|
||||||
|
VanVan im Support, Meldung #6: „Es waere gut, wenn man auch
|
||||||
|
dort die Moeglichkeit haette die Frist anzupassen, sie als
|
||||||
|
dauerhafte Aufgabe einstellen zu koennen oder eventuell noch
|
||||||
|
eine Anmerkung hinzufuegen."
|
||||||
|
|
||||||
|
WARUM DIESE ZEILEN HIER STEHEN UND NICHT NUR IN
|
||||||
|
pruef-aufgaben-vorlagen: Dort wird der CREATOR-Zweig gemessen
|
||||||
|
-- das Vorlagenbrett auf „Aufgaben", angemeldet als Creator.
|
||||||
|
VanVan benutzt den KATALOG auf „Eure Aufgaben". Das sind zwei
|
||||||
|
verschiedene Karten in derselben Datei, und der Knopf haengt
|
||||||
|
an beiden einzeln.
|
||||||
|
|
||||||
|
Nach dem Einbau war nur der eine Zweig im Browser geprueft.
|
||||||
|
Beide liefern denselben Haken NICHT: Ein Creator darf
|
||||||
|
„dauerhaft" nicht setzen, die Leitung schon -- und genau
|
||||||
|
dieser Unterschied ist hier die Gegenprobe zu dort.
|
||||||
|
|
||||||
|
Dass man sich bei diesen beiden Brettern vertun kann, ist in
|
||||||
|
diesem Haus schon vorgekommen: In pruef-bewerbung-aufgaben
|
||||||
|
steht es als Messfehler notiert, „der wie ein Befund
|
||||||
|
aussieht". */
|
||||||
|
const anpassbar = await seite.evaluate(() => ({
|
||||||
|
karten: document.querySelectorAll(".vorlagenbrett__karte").length,
|
||||||
|
knoepfe: document.querySelectorAll(".vorlagenbrett__anpassen").length,
|
||||||
|
}));
|
||||||
|
ok(anpassbar.karten > 0 && anpassbar.knoepfe === anpassbar.karten,
|
||||||
|
`jede Katalogkarte hat einen „Anpassen …"-Knopf `
|
||||||
|
+ `(${anpassbar.knoepfe} von ${anpassbar.karten})`);
|
||||||
|
|
||||||
|
await seite.click(".vorlagenbrett__karte .vorlagenbrett__anpassen");
|
||||||
|
await seite.waitForSelector("dialog.nachfrage[open]", { timeout: 8000 });
|
||||||
|
const felder = await seite.evaluate(() => {
|
||||||
|
const dlg = document.querySelector("dialog.nachfrage");
|
||||||
|
const sicht = (teil) => {
|
||||||
|
const z = dlg.querySelector(`[data-teil="${teil}"]`);
|
||||||
|
return !!z && !z.hidden;
|
||||||
|
};
|
||||||
|
return {
|
||||||
|
datum: sicht("datumzeile"),
|
||||||
|
haken: sicht("hakenzeile"),
|
||||||
|
grund: sicht("grundzeile"),
|
||||||
|
wert: dlg.querySelector("#nachfrage-datum")?.value || "",
|
||||||
|
min: dlg.querySelector("#nachfrage-datum")?.min || "",
|
||||||
|
};
|
||||||
|
});
|
||||||
|
ok(felder.datum && felder.grund,
|
||||||
|
`das Fenster hat Frist und Anmerkung (${felder.datum}, ${felder.grund})`);
|
||||||
|
/* DIE GEGENPROBE ZU pruef-aufgaben-vorlagen: Dort bekommt ein
|
||||||
|
Creator den Haken NICHT. Hier, bei der Leitung, MUSS er da
|
||||||
|
sein -- sonst waere „dauerhaft" eine Einstellung, die es nur
|
||||||
|
im Quelltext gibt. */
|
||||||
|
ok(felder.haken === true,
|
||||||
|
`und die Leitung bekommt den „dauerhaft"-Haken (${felder.haken})`);
|
||||||
|
ok(/^\d{4}-\d{2}-\d{2}$/.test(felder.wert) && felder.wert >= felder.min,
|
||||||
|
`die Frist der Vorlage steht als Vorgabe drin (${felder.wert}, `
|
||||||
|
+ `fruehestens ${felder.min})`);
|
||||||
|
|
||||||
|
/* DER HAKEN SPERRT DAS DATUM -- eine dauerhafte Aufgabe hat
|
||||||
|
keine Frist. Ein Datum, das dasteht und nicht gilt, ist
|
||||||
|
schlimmer als keins. */
|
||||||
|
await seite.check("dialog.nachfrage #nachfrage-haken");
|
||||||
|
await seite.waitForTimeout(200);
|
||||||
|
ok((await seite.evaluate(() =>
|
||||||
|
document.querySelector("dialog.nachfrage #nachfrage-datum").disabled)) === true,
|
||||||
|
"mit Haken wird die Frist gesperrt");
|
||||||
|
|
||||||
|
const vorDauer = await seite.evaluate(zaehleListe);
|
||||||
|
await seite.fill("dialog.nachfrage #nachfrage-grund",
|
||||||
|
"Laeuft dauerhaft mit, bitte woechentlich kurz durchgehen.");
|
||||||
|
await seite.click('dialog.nachfrage [data-teil="ja"]');
|
||||||
|
await seite.waitForTimeout(2600);
|
||||||
|
ok(await seite.evaluate(zaehleListe) === vorDauer + 1,
|
||||||
|
`die angepasste Aufgabe liegt in ihrer Liste `
|
||||||
|
+ `(${vorDauer} -> ${await seite.evaluate(zaehleListe)})`);
|
||||||
|
|
||||||
|
/* UND JETZT DIE TATSACHEN, nicht die Anzeige. Was auf dem Brett
|
||||||
|
steht, ist eine Darstellung; was in der Aufgabe steht, gilt. */
|
||||||
|
{
|
||||||
|
const { DatabaseSync: DB5 } = await import("node:sqlite");
|
||||||
|
const d5 = new DB5(process.env.WORKSPACE_DB);
|
||||||
|
const neueste = d5.prepare(`SELECT a.id, a.dauerhaft, a.frist,
|
||||||
|
(SELECT COUNT(*) FROM aufgaben_notizen n WHERE n.aufgabe_id = a.id) AS notizen,
|
||||||
|
(SELECT text FROM aufgaben_notizen n WHERE n.aufgabe_id = a.id LIMIT 1) AS wort
|
||||||
|
FROM aufgaben a ORDER BY a.id DESC LIMIT 1`).get();
|
||||||
|
d5.close();
|
||||||
|
ok(neueste?.dauerhaft === 1,
|
||||||
|
`sie ist wirklich dauerhaft (${neueste?.dauerhaft})`);
|
||||||
|
/* KEINE FRIST -- sonst waere sie ab morgen fuer immer
|
||||||
|
ueberfaellig, und eine Warnung, die immer kommt, ist keine
|
||||||
|
mehr. Dieselbe Regel wie im Aenderungsweg. */
|
||||||
|
ok(!neueste?.frist,
|
||||||
|
`und hat keine Frist (${neueste?.frist ?? "keine"})`);
|
||||||
|
ok(neueste?.notizen === 1 && /woechentlich/.test(neueste?.wort || ""),
|
||||||
|
`die Anmerkung steht als Notiz dabei („${neueste?.wort}")`);
|
||||||
|
}
|
||||||
|
|
||||||
/* ==== DIE BEWERBUNG AM BILDSCHIRM ENTSCHEIDEN (23.09.2026) ======
|
/* ==== DIE BEWERBUNG AM BILDSCHIRM ENTSCHEIDEN (23.09.2026) ======
|
||||||
|
|
||||||
Filipe: „nur dogfather und die rechte hand sollen annehmen oder
|
Filipe: „nur dogfather und die rechte hand sollen annehmen oder
|
||||||
|
|||||||
Reference in New Issue
Block a user