Bei "An alle" sieht man jetzt, wer sie hat und wer nicht

Filipe: "wenn ich eine aufgabe an alle verteile will ich dass dogfather
und die rechte hand individuel von jedem sehen wer es gemacht hat oder
nicht."

Vier Fehler, die zusammenhingen -- alle gemessen, keiner geraten:

1. "Alle" waehlen, "An alle" druecken, nichts passiert. Die Zeile
   verglich verantwortlich_id !== "alle"; niemand heisst so, also wurde
   jede Aufgabe uebersprungen und die Liste blieb leer. Die Aufgaben
   entstanden, man sah es nur nicht.

2. Der Vermerk an der Karte haette bei "alle" den Stand EINER fremden
   Person gezeigt -- welcher, haengt von der Reihenfolge der Daten ab.
   Jetzt steht dort, wie weit es ist, und darunter namentlich, wer sie
   hat: Offen / Erledigt / ueberfaellig / hat sie nicht. Das Wort steht
   immer dabei, die Farbe ist nur die Abkuerzung.

3. Die "An wen"-Reihe zeigte SECHS Personen, der Server belieferte VIER.
   Rechte und linke Hand gingen leer aus, ohne ein Wort; einzeln
   angeschrieben kam "Das gibt es nicht mehr, lade die Seite neu" zu
   jemandem, den es sehr wohl gibt. Empfaenger sind jetzt Modis UND
   linke Hand (Filipes Regel vom 22.09.), und die Menge steht EINMAL in
   workspace.js -- SQL-Abfrage, Annahme und Browserliste leiten sich
   daraus ab und koennen nicht mehr auseinanderlaufen.

4. Zweimal "An alle" legte alles doppelt an. Der Kommentar im Server
   behauptete das Gegenteil; aktiv war die Sperre nur beim Massenknopf.
   "An alle" fuellt jetzt Luecken. Die bewusste Wiederholung bleibt:
   Steht am Knopf "Nochmal" (weil wirklich alle sie haben), sagt der
   Browser das ausdruecklich, und dann legt der Server neu an.

Geprueft: pruef-modi-katalog 144 statt 133, 0 Fehler -- elf neue
Pruefungen fuer Empfaenger, Luecken und die Gegenprobe, dass ein
gewolltes "Nochmal" sehr wohl anlegt. Dazu mess-alle-einzelsicht.mjs
(eigene Wegwerf-Datenbank, nie die echte) mit Bildern bei 412 und
1280 px.

Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
2026-09-24 17:26:35 +02:00
co-authored by Claude Opus 5
parent 67b5e00150
commit 40b48e89f1
50 changed files with 1381 additions and 650 deletions
+40 -3
View File
@@ -48,6 +48,8 @@ import {
MODI_STUFEN,
entscheidetUeberAufgaben,
darfAufgabenVerteilen,
KATALOG_EMPFAENGER,
KATALOG_EMPFAENGER_SQL,
} from "./workspace.js";
/* Dieselbe Meldung wie beim anderen Bewerbungsweg -- eine Stelle,
@@ -1928,15 +1930,27 @@ vorlagenRouter.post("/workspace/api/vorlagen/uebernehmen", gleicheHerkunft,
/* Nur an jemanden, fuer den die Kategorien ueberhaupt gelten --
sonst landete eine Modi-Aufgabe samt Kategorie an einem
Creator, und die Trennung waere von innen aufgeweicht. */
const platzE = KATALOG_EMPFAENGER_SQL.map(() => "?").join(", ");
const zielListe = anAlle
? db().prepare(
"SELECT id, rolle FROM personen WHERE aktiv = 1 AND rolle = 'modi' ORDER BY id").all()
`SELECT id, rolle FROM personen
WHERE aktiv = 1 AND rolle IN (${platzE}) ORDER BY id`)
.all(...KATALOG_EMPFAENGER_SQL)
: [db().prepare(
"SELECT id, rolle FROM personen WHERE id = ? AND aktiv = 1").get(zielId)]
.filter(Boolean);
if (!zielListe.length || zielListe.some((z) => z.rolle !== "modi")) {
if (!zielListe.length) {
return res.status(404).json({ fehler: "nicht_gefunden" });
}
/* EINE EIGENE ANTWORT FUER „DIE ROLLE BEKOMMT HIER NICHTS".
Vorher lief das ueber dieselbe 404 wie „die Person gibt es
nicht" -- und auf dem Bildschirm stand „lade die Seite neu",
was an einer Person, die sehr wohl existiert, nur ratlos
macht. Der Unterschied ist keine Feinheit: Das eine repariert
ein Neuladen, das andere nie. */
if (zielListe.some((z) => !KATALOG_EMPFAENGER.has(z.rolle))) {
return res.status(400).json({ fehler: "rolle_ohne_katalog" });
}
/* Nur noch als Beleg, dass die Liste nicht leer ist -- gelesen
wird sie in der Schleife weiter unten. Ein ungenutzter Wert
waere Rauschen; dieser sagt etwas. */
@@ -1998,9 +2012,32 @@ vorlagenRouter.post("/workspace/api/vorlagen/uebernehmen", gleicheHerkunft,
Bei einer einzelnen Person aendert sich nichts: Die
Schleife laeuft dann genau einmal. */
/* ==== "AN ALLE" FUELLT LUECKEN, ES DOPPELT NICHT (24.09.2026)
Filipe, zur Frage "3 von 5 haben sie schon": „Nur die 2
Fehlenden bekommen sie."
GEMESSEN, NICHT GEGLAUBT. Der Kommentar zwei Absaetze
hoeher behauptete, die Sperre werde "bei alle pro Person neu
gestellt". Er beschreibt nur, WO sie steht -- aktiv war sie
allein bei `katalog_alle`. Zweimal "An alle" auf dieselbe
Karte ergab deshalb VIER Aufgaben statt zwei. Gefunden hat
das keine Ueberlegung, sondern eine Pruefung, die nachzaehlt.
UND DIE BEWUSSTE WIEDERHOLUNG BLEIBT MOEGLICH. Manches steht
jede Woche an; wer es erneut verteilen will, drueckt einen
Knopf, der dann auch "Nochmal" heisst -- und der Browser sagt
das hier ausdruecklich (`nochmal`). Nicht die Sperre
verschwindet, sondern es wird gesagt, dass man sie meint.
Ein stillschweigendes Doppeln waere das, was am 22.09. aus
zwei Klicks 112 Aufgaben gemacht hat.
EINE EINZELNE PERSON BLEIBT UNBERUEHRT: Dort ist ein zweiter
Druck ohnehin eine Entscheidung, und der Knopf sagt es. */
const luecken = anAlle && req.body.nochmal !== true;
const lagSchonDa = [];
for (const ziel of zielListe) {
const liegtSchon = art === "katalog_alle"
const liegtSchon = (art === "katalog_alle" || luecken)
? new Set(db().prepare(
`SELECT vorlage FROM aufgaben
WHERE verantwortlich_id = ?