From 4b0cda733478418f7d8d47e8b55c1955c1789948 Mon Sep 17 00:00:00 2001 From: Dogfather Date: Wed, 23 Sep 2026 00:55:03 +0200 Subject: [PATCH] screen4: Die linke Hand ist ueberall zu sehen -- rechte Hand, linke Hand, Modis MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit "ich will dass die linke hand auch ueberall zu sehen ist. reihenfolge immer. rechte hand, dan linke hand und dan modis. perfektionier das bitte." DER BEFUND: In workspace-teamlage.js stand WHERE rolle IN ('hand','modi') Eine abgeschriebene Rollenliste, und die linke Hand kam darin nicht vor. Sie fehlte damit nicht nur als KARTE: Der Eingang derselben Seite sammelt die Rueckmeldungen aus genau dieser Liste. Was sie meldet, waere nirgends angekommen -- dasselbe, was am 11.09. schon der rechten Hand passiert ist, an derselben Zeile. Dieselbe Liste ein zweites Mal in workspace-bereiche.js: Ein Eintrag im Entwicklungsbereich liess sich ihr nicht zuordnen, mit der Meldung "Diese Person gehoert nicht zum Team." -- ueber jemanden, der sehr wohl dazugehoert. Beide lesen jetzt TEAM_DOGI_ROLLEN, die eine Liste des Hauses ({hand, linke, modi}). Kaeme morgen eine weitere Team-Rolle, waere sie von selbst dabei. DIE REIHENFOLGE STIMMTE SCHON. ROLLEN_REIHE nennt hand vor linke vor modi, ROLLEN_SORTIERUNG leitet daraus das CASE ab. Sie war nur nie zu sehen, weil eine der drei fehlte. WARUM DIE PRUEFUNG DAS NICHT GEFUNDEN HAT -- und was daran mein Fehler war: pruef-teamlage-karten legte eine rechte Hand und fuenf Modis an, aber KEINE linke Hand. Eine Rolle, die in den Testdaten nicht vorkommt, kann auch nicht vermisst werden. Sie ist jetzt dabei, und drei neue Zeilen messen die Reihenfolge gegen ROLLEN_REIHE statt gegen drei hier hingeschriebene Namen: hand → linke → modi "Rechte Hand 1 · Linke Hand 1 · Modi 5" 25 Pruefungen, 0 Fehler. NEBENBEI: EIN EIGENER MESSFEHLER, DEN ICH RICHTIGSTELLEN MUSS Auf dem Weg dorthin habe ich behauptet, der linken Hand fehlten FUENFZEHN Seiten in der Rechtetafel. Das war falsch gemessen: Ich habe den QUELLTEXT von rechte.js gelesen statt das Verhalten. Die Tafel leitet seit dem 21.09. ab -- „die linke Hand bekommt die Seiten der rechten", mit fuenf ausdruecklich begruendeten Ausnahmen (Personen anlegen, Talente, Bewerbungen, vertraulicher Meldeweg, Rechtetafel). Ueber `darfSeite` gemessen fehlen ihr genau diese fuenf, und das ist so gewollt. Derselbe Fehler wie heute Nacht bei pruef-haus-seiten, wo ich zwei Listen mit einem regulaeren Ausdruck aus dem Quelltext lesen wollte. Eine Regel steht im Code; ob sie WIRKT, sagt nur eine Messung. Co-Authored-By: Claude Opus 5 --- server/pruef-teamlage-karten.mjs | 31 +++++++++++++++++++++++++++++-- server/workspace-bereiche.js | 11 ++++++++++- server/workspace-teamlage.js | 28 +++++++++++++++++++++++++--- 3 files changed, 64 insertions(+), 6 deletions(-) diff --git a/server/pruef-teamlage-karten.mjs b/server/pruef-teamlage-karten.mjs index e0d57411..3a58dcf2 100644 --- a/server/pruef-teamlage-karten.mjs +++ b/server/pruef-teamlage-karten.mjs @@ -93,6 +93,17 @@ function anlegen(name, rolle, code) { anlegen("Filipe", "admin", "CODE-DOGI-0001"); anlegen("Rieke", "hand", "CODE-HAND-0001"); +/* DIE LINKE HAND GEHOERT IN DIESE PROBE (23.09.2026). + + Sie fehlte hier -- und deshalb war die Pruefung gruen, waehrend die + Seite sie gar nicht anzeigte: `WHERE rolle IN ('hand','modi')` in + workspace-teamlage.js. Eine Rolle, die in den Testdaten nicht + vorkommt, kann auch nicht vermisst werden. + + Filipe, mit dem Bildschirmfoto: „ich will dass die linke hand auch + ueberall zu sehen ist. reihenfolge immer. rechte hand, dan linke + hand und dan modis." */ +anlegen("Lino", "linke", "CODE-LINK-0001"); /* DIE STUFEN KOMMEN AUS DEM SERVERMODUL, nicht aus einer Liste hier. Genau so bleibt die Pruefung gueltig, wenn morgen eine sechste @@ -191,8 +202,9 @@ if (angekommen !== "/workspace/teamlage.html") { }; }); - ok(lage.karten.length === 1 + modis.length, - `${lage.karten.length} Karten stehen da (erwartet ${1 + modis.length})`); + ok(lage.karten.length === 2 + modis.length, + `${lage.karten.length} Karten stehen da (erwartet ${2 + modis.length})`); + /* DIE ROLLE STEHT AUF JEDER KARTE. Ohne das Wort ist die Sortierung unsichtbar -- genau der Befund vom 22.09. */ @@ -219,6 +231,21 @@ if (angekommen !== "/workspace/teamlage.html") { `jede Ueberschrift nennt ihre Rolle und ihre Anzahl richtig` + ` (${lage.gruppen.map((g) => `${g.wort} ${g.zahl}`).join(" · ")})`); + /* DIE REIHENFOLGE IST DIE AUSSAGE, nicht nur die Gruppierung. + Geprueft gegen ROLLEN_REIHE -- die eine Liste des Hauses -- und + nicht gegen drei hier hingeschriebene Namen. Wer die Reihenfolge + dort aendert, aendert sie hier mit. */ + { + const { ROLLEN_REIHE } = await import("./workspace.js"); + const erwartet = ROLLEN_REIHE.filter((r) => bloecke.includes(r)); + ok(bloecke.length === 3, + `drei Rollen stehen auf der Seite (${bloecke.join(" → ")})`); + ok(JSON.stringify(bloecke) === JSON.stringify(erwartet), + `und zwar in der Reihenfolge des Hauses: ${erwartet.join(" → ")}`); + ok(bloecke[0] === "hand" && bloecke[1] === "linke", + "rechte Hand zuerst, dann die linke -- genau so gewuenscht"); + } + /* =================================================================== 2. DIE STUFE STEHT NUR DA, WO ES EINE GIBT =================================================================== */ diff --git a/server/workspace-bereiche.js b/server/workspace-bereiche.js index 44a11a03..7035a835 100644 --- a/server/workspace-bereiche.js +++ b/server/workspace-bereiche.js @@ -2412,8 +2412,17 @@ bereicheRouter.post("/workspace/api/bereich/:bereich", gleicheHerkunft, (req, re ("Zugeordneter Creator existiert nicht" -- die Person existiert sehr wohl, sie ist nur kein Creator). Gefunden von der Pruefung, nicht vom Auge. */ + /* DIE LINKE HAND GEHOERT DAZU (23.09.2026). Hier stand + `rolle IN ('hand','modi')` -- eine zweite abgeschriebene Liste + derselben Sorte wie in workspace-teamlage.js. Ein Eintrag im + Entwicklungsbereich liess sich der linken Hand nicht zuordnen, + und die Meldung dazu lautete „Diese Person gehoert nicht zum + Team." -- ueber jemanden, der sehr wohl dazugehoert. + + Abgeleitet aus TEAM_DOGI_ROLLEN, der einen Liste des Hauses. */ + const teamListe = [...TEAM_DOGI_ROLLEN].map((r) => `'${r}'`).join(", "); const zielRollen = bereich === "entwicklung" - ? "rolle IN ('hand','modi')" + ? `rolle IN (${teamListe})` : "rolle = 'creator'"; if (aus.creator_id && !db().prepare(`SELECT 1 FROM personen WHERE id = ? AND ${zielRollen}`) diff --git a/server/workspace-teamlage.js b/server/workspace-teamlage.js index c4eeea59..a3f62e3f 100644 --- a/server/workspace-teamlage.js +++ b/server/workspace-teamlage.js @@ -34,7 +34,7 @@ import express from "express"; import { db, sitzungLesen, istDogFather, fuehrtTeamDogi, heuteLokal, protokolliere, echteIp, - ROLLEN_SORTIERUNG, + ROLLEN_SORTIERUNG, TEAM_DOGI_ROLLEN, } from "./workspace.js"; import { MODI_PUNKTE } from "./workspace-modi-punkte.js"; import { checklistenTabellen } from "./workspace-checkliste.js"; @@ -229,10 +229,32 @@ teamlageRouter.get("/workspace/api/teamlage", (req, res) => { auch die Personenliste, der Chat und die Rechtetafel benutzen. Eine eigene Reihenfolge hier waere die zweite Wahrheit, und die zweite ist die, die beim naechsten Rollenwechsel abweicht. */ + /* ==== DIE LINKE HAND GEHOERT DAZU (23.09.2026) ================ + + Filipe, mit dem Bildschirmfoto dieser Seite: „ich will dass die + linke hand auch ueberall zu sehen ist. reihenfolge immer. rechte + hand, dan linke hand und dan modis." + + Hier stand `rolle IN ('hand','modi')` -- eine abgeschriebene + Liste, und die linke Hand kam darin nicht vor. Sie fehlte damit + nicht nur als Karte: Der Eingang weiter unten sammelt aus + genau dieser Liste. Ihre Rueckmeldungen waeren nirgends + angekommen -- dasselbe, was am 11.09. schon der rechten Hand + passiert ist, an derselben Zeile. + + JETZT AUS DER EINEN LISTE DES HAUSES. `TEAM_DOGI_ROLLEN` ist + {hand, linke, modi} und steht in crew-adresse.js. Kaeme morgen + eine weitere Team-Rolle, waere sie hier von selbst dabei. + + DIE REIHENFOLGE STIMMTE SCHON: ROLLEN_REIHE nennt hand vor + linke vor modi, und ROLLEN_SORTIERUNG leitet daraus das CASE + ab. Sie war nur nie zu sehen, weil eine der drei fehlte. */ + const platzRollen = [...TEAM_DOGI_ROLLEN].map(() => "?").join(", "); const modis = db().prepare( `SELECT id, name, rolle, bild, letzter_login, aktiv, erstellt, stufe FROM personen - WHERE rolle IN ('hand','modi') AND id <> ? - ORDER BY aktiv DESC, ` + ROLLEN_SORTIERUNG + `, name`).all(zeigt.id); + WHERE rolle IN (${platzRollen}) AND id <> ? + ORDER BY aktiv DESC, ` + ROLLEN_SORTIERUNG + `, name`) + .all(...TEAM_DOGI_ROLLEN, zeigt.id); if (!modis.length) { /* `eingang` auch hier -- die Oberflaeche darf nicht raten