screen4: Die linke Hand ist ueberall zu sehen -- rechte Hand, linke Hand, Modis

"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 <[email protected]>
This commit is contained in:
2026-09-23 00:55:03 +02:00
co-authored by Claude Opus 5
parent d26cdc78ff
commit 4b0cda7334
3 changed files with 64 additions and 6 deletions
+29 -2
View File
@@ -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
=================================================================== */
+10 -1
View File
@@ -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}`)
+25 -3
View File
@@ -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