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:
@@ -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 = ?
|
||||
|
||||
Reference in New Issue
Block a user