Die Einweisung gibt es jetzt auch fuer Team Dogi -- vier Fassungen, 106 Karten
Filipe hat den Bauplan "Willkommen & Anleitung -- Einweisung je Rolle"
(27 Seiten, Stand 06.10.2026) geschickt: pruefen, perfektionieren und
auf der Crew-Seite umsetzen.
AUSGANGSMESSUNG, bevor etwas angefasst wurde:
agentur creator 18 · manager 22 · scout 21 · spicy 23 Karten
crew 0 Karten -- die Schnittstelle antwortete 404 "nicht_hier"
Die Seite lud also, war aber leer. Baulich vorbereitet war sie schon:
Alle drei Inhaltstabellen tragen `haus` mit UNIQUE (haus, rolle,
kachel), und die Aussaat nimmt das Haus als Parameter.
WAS JETZT DA IST
gast 14 Karten (5 Muss, 4 Regelmaessig, 5 Bedarf)
modi 29 Karten (7 / 7 / 15)
linke 29 Karten (7 / 7 / 15)
hand 34 Karten (8 / 7 / 19)
Jede Zahl entspricht Kapitel 13 des Bauplans. Dazu je Rolle
Leitgedanke, drei Saetze, fuenf Erste Schritte, "Nicht deins",
Rhythmus und Fragen -- woertlich aus Kapitel 06 bis 09.
VOR DEM SCHREIBEN ABGEGLICHEN, nicht danach: Ein Skript prueft jede
Karte gegen die echte Kachelliste der Rolle. Ergebnis fuer alle vier
Fassungen: Kartenzahl wie im Plan, jede Karte trifft eine Kachel,
jede Kachel hat eine Karte, keine doppelt.
ZWEI KACHELN AUF EINER SEITE. Auf der Crew-Adresse fuehren "Chat"
(das Team) und "Rudel-Chat" (`?raum=treff`) beide auf chat.html.
`schluesselVonZiel` behielt nur `b` -- beide ergaben denselben
Schluessel, und damit konnten sie keine eigenen Karten haben, obwohl
der Bauplan ihnen verschiedene Einordnungen gibt (fuer die rechte
Hand: Team-Chat Muss, Rudel-Chat nur bei Bedarf). Jetzt wird auch
`raum` unterschieden. Auf der Agenturadresse gibt es nur eine
Chat-Kachel; dort aendert sich nichts.
DAS HAUS KOMMT AUS DER ADRESSE, nicht aus der angesehenen Rolle.
`const HAUS = "agentur"` ist einer Funktion gewichen. Nimmt DogFather
die Sicht einer anderen Rolle ein, wechselt er die ROLLE, nicht die
ADRESSE -- wer hier `req.sicht` naehme, bekaeme auf der Crew-Adresse
Agenturinhalte, sobald eine Sicht gesetzt ist.
`FASSUNGEN` stand an zehn Stellen fest und haette die Crew ueberall
abgewiesen. Jetzt `fassungenFuer(haus)` -- eine Funktion statt zweier
Listen an zehn Stellen.
Neue Zeilenart `vorweg` fuer "Drei Dinge vorweg" (nur die Community,
Bauplan Kapitel 04). Fehlt die Liste bei einer Rolle, wird nichts
eingetragen -- kein Sonderfall noetig.
Eigene Datei fuer die Crew-Inhalte: anleitung-tabellen.js traegt
schon die Agenturfassungen und ist 856 Zeilen lang. Getrennte Dateien
sind hier dasselbe Prinzip wie getrennte Haeuser.
pruef-anleitung 125 -> 127. Fuenf Zeilen darin verteidigten den alten
Zustand ("ein Modi bekommt die Anleitung nicht, erwartet 404") -- sie
sind mitgewandert statt stehenzubleiben. Dazu eine neue Gegenprobe
zur Haustrennung: In der Crew-Fassung darf keine Agenturkachel
vorkommen.
Datenbank vorher gesichert und zurueckgelesen (integrity_check,
84 Karten).
Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
@@ -96,7 +96,15 @@ const SCHLUESSEL_PROBEN = [
|
||||
["bereich.html?b=live", "bereich:live"],
|
||||
["bereich.html?b=agentur", "bereich:agentur"],
|
||||
["profil.html", "profil"],
|
||||
["chat.html?raum=treff", "chat"],
|
||||
/* ZWEI KACHELN AUF EINER SEITE (06.10.2026). Hier stand "chat" --
|
||||
und damit bekamen "Chat" (das Team) und "Rudel-Chat" (die
|
||||
Community) denselben Schluessel. Auf der Agenturadresse fiel das
|
||||
nie auf, dort gibt es nur eine Chat-Kachel. Die Crew hat beide,
|
||||
und der Bauplan gibt ihnen verschiedene Einordnungen -- fuer die
|
||||
rechte Hand ist der Team-Chat Muss, der Rudel-Chat nur bei
|
||||
Bedarf. Ohne eigenen Schluessel waere das nicht abbildbar. */
|
||||
["chat.html?raum=treff", "chat:treff"],
|
||||
["chat.html", "chat"],
|
||||
["", ""],
|
||||
];
|
||||
for (const [ziel, erwartet] of SCHLUESSEL_PROBEN) {
|
||||
@@ -325,12 +333,29 @@ melde(` -- Scout, Manager und Spicy Media haben noch keine Inhalte `
|
||||
const creatorPflege = creator.j.darf_pflegen;
|
||||
ok(creatorPflege === false, "ein Creator darf NICHT pflegen");
|
||||
|
||||
/* ==== DIE CREW HAT JETZT IHRE EIGENE ANLEITUNG (06.10.2026) ========
|
||||
|
||||
Hier stand das Gegenteil: "ein Modi bekommt die Anleitung nicht
|
||||
(erwartet 404)". Das war bis heute richtig -- die Anleitung gab es
|
||||
nur im Agenturhaus. Mit dem Bauplan "Einweisung je Rolle" hat auch
|
||||
Team Dogi vier Fassungen bekommen, und die Zeilen sind mitgewandert
|
||||
statt stehenzubleiben.
|
||||
|
||||
DIE TRENNUNG BLEIBT TROTZDEM, und sie wird hier gemessen: Auf der
|
||||
Crew-Adresse kommen CREW-Inhalte, nicht die der Agentur. Eine
|
||||
Anleitung, die auf beiden Adressen dasselbe zeigt, waere der
|
||||
Rueckschritt hinter die Haustrennung vom 24.09. */
|
||||
const modi = await holen("modi", CREW_HOST);
|
||||
ok(modi.code === 404,
|
||||
`ein Modi bekommt die Anleitung nicht (HTTP ${modi.code}, erwartet 404)`);
|
||||
ok(modi.code === 200 && (modi.j?.karten?.length ?? 0) === 29,
|
||||
`ein Modi bekommt seine Anleitung (HTTP ${modi.code}, ${modi.j?.karten?.length ?? 0} Karten)`);
|
||||
const hand = await holen("hand", CREW_HOST);
|
||||
ok(hand.code === 404,
|
||||
`die rechte Hand bekommt sie auf der Crew-Adresse nicht (HTTP ${hand.code}, erwartet 404)`);
|
||||
ok(hand.code === 200 && (hand.j?.karten?.length ?? 0) === 34,
|
||||
`die rechte Hand auf der Crew-Adresse ebenso (HTTP ${hand.code}, `
|
||||
+ `${hand.j?.karten?.length ?? 0} Karten)`);
|
||||
/* GEGENPROBE ZUR HAUSTRENNUNG: Die Crew-Fassung darf keine
|
||||
Agenturkachel enthalten. "leistung" gibt es nur dort. */
|
||||
ok(!(modi.j?.karten || []).some((k) => k.kachel === "leistung"),
|
||||
"und keine einzige Agenturkachel ist dabei");
|
||||
|
||||
/* Die Seite selbst, nicht nur die Schnittstelle.
|
||||
=====================================================================
|
||||
@@ -631,7 +656,9 @@ const pScout = await pput("scout", `/workspace/api/anleitung/karte/${eineKarte.i
|
||||
ok(pScout.code === 403, `ein Scout auch nicht (HTTP ${pScout.code}, erwartet 403)`);
|
||||
const pModi = await pput("modi", `/workspace/api/anleitung/karte/${eineKarte.id}`,
|
||||
{ stufe: "bedarf", wozu: "x", tust: "y", merke: "z" }, CREW_HOST);
|
||||
ok(pModi.code === 404, `ein Modi bekommt die Pflege gar nicht (HTTP ${pModi.code}, erwartet 404)`);
|
||||
/* 403 STATT 404 (seit 06.10.2026): Die Seite gibt es auf der
|
||||
Crew-Adresse jetzt -- pflegen darf ein Modi sie trotzdem nicht. */
|
||||
ok(pModi.code === 403, `ein Modi darf nicht pflegen (HTTP ${pModi.code}, erwartet 403)`);
|
||||
|
||||
melde("\n=== Pflege: Spicy aendert eine Stufe, und sie gilt sofort ===");
|
||||
const vorher = eineKarte.stufe;
|
||||
@@ -779,9 +806,12 @@ ok(e2.j?.zeigen === false, "beim zweiten Mal nicht mehr");
|
||||
/* DIE CREW BEKOMMT 200 UND NICHT 404. Das Skript laeuft auf JEDER
|
||||
Startseite; ein Fehlschlag waere eine rote Zeile in der Konsole bei
|
||||
jedem Aufruf -- und die verdeckt die naechste, die echt ist. */
|
||||
/* Seit dem 06.10. hat der Modi eine Fassung -- also soll die
|
||||
Einweisung bei ihm auch ANGEBOTEN werden. Vorher war die ruhige
|
||||
Absage richtig, weil es nichts einzuweisen gab. */
|
||||
const eModi = await einweisung("modi", CREW_HOST);
|
||||
ok(eModi.code === 200 && eModi.j?.zeigen === false,
|
||||
`ein Modi bekommt eine ruhige Absage (HTTP ${eModi.code}, zeigen ${eModi.j?.zeigen})`);
|
||||
ok(eModi.code === 200 && eModi.j?.zeigen === true,
|
||||
`ein Modi bekommt seine Einweisung angeboten (HTTP ${eModi.code}, zeigen ${eModi.j?.zeigen})`);
|
||||
const eDogi = await einweisung("admin");
|
||||
ok(eDogi.code === 200 && eDogi.j?.zeigen === false,
|
||||
`DogFather auch -- er braucht keine Einweisung (zeigen ${eDogi.j?.zeigen})`);
|
||||
|
||||
Reference in New Issue
Block a user