screen2: EIN Resuemee statt neun -- mit Schritt und Team-Bezug

Filipe: "ich will dass das viel schoener aussieht und nicht so ein
scheiss durcheinander, man wird ja bekloppt. das resume unten auf
jeder frage hab ich auch schon mehrmals gesagt muss weg ich will ein
ganzes gesamtresume was die leute animiert und pusht immer und mega
geile super team loesungen findet aber auch individuel so dass jeder
sich selber auch verbessert und steigert fuers team."

WAS WEG IST
Der Block "Was dein Verlauf sagt" -- eine Zeile JE FRAGE, jede mit
Titel, Marke, Einordnung aus der Forschung und einem "Was hilft". Bei
neun Fragen neun Kaesten untereinander. Genau das meint "man wird ja
bekloppt": Wenn alles gleich wichtig aussieht, ist nichts wichtig,
und man liest keinen davon.

WAS AN SEINE STELLE TRITT -- UND NICHTS VERLIERT
Die Erkenntnisse sind nicht weg, sie sind zusammengefasst:

  DEIN NAECHSTER SCHRITT. Genau EINER, zu der Sache, die am meisten
  haengt. Kernfragen zuerst -- sie werden in jeder Runde gestellt, ihr
  "hakt" wiegt schwerer als das einer Zusatzfrage, die alle vier
  Runden vorbeikommt. Haengt nichts, nimmt er die Sache, die noch
  WAECHST: "nichts zu tun" ist nur fuer den richtig, bei dem alles
  laeuft. Die Einordnung aus der Forschung steht daneben -- einmal
  statt neunmal, als Grund, warum es dieser Schritt ist.

  WAS DAS TEAM DAVON HAT. Abgeleitet aus der Lage, nicht erfunden.
  Ein "gemeinsam schaffen wir das" an jemanden, bei dem fuenf von
  neun Sachen haken, ist das Gegenteil von Hilfe -- in der schwersten
  Lage ist der Team-Bezug deshalb eine Entlastung ("im Team ist
  gerade nichts von dir gefragt"), keine Aufforderung. Vier Lagen,
  vier Saetze. Die Pruefung verlangt ausdruecklich, dass es KEIN
  Spruch ist, der immer passt.

ZWEI DINGE, DIE ERST DAS BILD GEZEIGT HAT
1. "Die Menge passt gerade" stand ZWEIMAL untereinander -- einmal im
   Thema-Block, gleich darunter als Schritt. Kein Messwert meldet das;
   im Bildschirmfoto sah es aus wie ein Fehler. Der Thema-Block nennt
   die Titel jetzt nur noch, wenn es mehrere sind.
2. "Wenn du eine Sache angehst, dann die: Die Menge passt gerade" --
   die Fragetitel im Katalog sind SAETZE, keine Substantive. Jetzt
   "Fang hier an: 'Die Menge passt gerade'".

EIN FUND DER PRUEFUNG: Die TikTok-Quelle war beim Umzug ins Fazit
verlorengegangen. Filipe hatte sie ausdruecklich bestellt ("eine
professionelle auch mit infos und so aus aller welt was tiktok
angeht"). pruef-befinden hat es gemeldet.

Die Pruefung verlangte bis heute das GEGENTEIL -- eine Zeile je
Frage, zu jeder eine Einordnung. Sie ist beim Umbau rot geworden,
richtig so. Jetzt prueft sie, dass unter den Fragen KEIN Resuemee
mehr steht, dass es GENAU EINEN Schritt gibt (nicht "mindestens
einen" -- das waere auch bei neun gruen) und dass der Schritt Inhalt
hat, nicht nur einen Kasten.

pruef-befinden 116/0 (war 113), pruef-resuemee 35/0,
pruef-entwicklung 48/0, pruef-css-klassen 30/0.

Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
2026-09-22 09:35:36 +02:00
co-authored by Claude Opus 5
parent 39276ef2ee
commit af56f97f4c
44 changed files with 879 additions and 670 deletions
+53 -21
View File
@@ -803,28 +803,57 @@ melde("=== 8. Die Analyse im Browser ===");
await seite.goto(`http://127.0.0.1:${PORT}/workspace/befinden.html`, { waitUntil: "networkidle" });
await seite.waitForTimeout(1000);
/* EIN RESUEMEE, NICHT NEUN (umgedreht am 22.09.2026).
================================================================
Bis hierher verlangte diese Stelle das GEGENTEIL: eine Zeile je
Frage, zu jeder eine Einordnung. Genau das hat Filipe mehrfach
abgeschafft ("das resume unten auf jeder frage hab ich auch schon
mehrmals gesagt muss weg ich will ein ganzes gesamtresume").
Die Pruefung ist beim Umbau ROT geworden -- richtig so, sie hat
die Aenderung bemerkt. Und sie hat dabei etwas gerettet: Die
TikTok-Quelle war beim Umzug ins Fazit verlorengegangen, und die
hatte Filipe ausdruecklich bestellt. */
const a = await seite.evaluate(() => ({
da: document.getElementById("analyse-block")?.hidden === false,
satz: document.getElementById("analyse-satz")?.textContent.trim() || "",
zeilen: document.querySelectorAll(".b-analyse__zeile").length,
ersteMarke: document.querySelector(".b-analyse__zeile")?.dataset.ton || "",
welt: document.querySelectorAll(".b-analyse__welt").length,
hilft: document.querySelectorAll(".b-analyse__hilft").length,
quellen: [...document.querySelectorAll(".b-analyse__quelle-hin")].map((x) => x.href),
blank: [...document.querySelectorAll(".b-analyse__quelle-hin")]
alterBlock: !!document.getElementById("analyse-block"),
alteZeilen: document.querySelectorAll(".b-analyse__zeile").length,
fazitDa: document.getElementById("fazit-block")?.hidden === false,
schrittDa: document.getElementById("fazit-schritt")?.hidden === false,
schrittTitel: document.getElementById("fazit-schritt-titel")?.textContent.trim() || "",
schrittWas: document.getElementById("fazit-schritt-was")?.textContent.trim() || "",
schrittWelt: document.getElementById("fazit-schritt-welt")?.textContent.trim() || "",
team: document.getElementById("fazit-team")?.textContent.trim() || "",
quellen: [...document.querySelectorAll(".b-fazit__quelle-hin")].map((x) => x.href),
blank: [...document.querySelectorAll(".b-fazit__quelle-hin")]
.every((x) => x.rel.includes("noopener")),
}));
ok(a.da, "die Analyse steht auf der Seite");
ok(a.zeilen === anzahlFragen,
`mit allen ${anzahlFragen} Fragen (${a.zeilen})`);
/* DAS MUSTER STEHT OBEN. Alphabetisch oder in Katalogreihenfolge
müsste man es suchen -- und wer sucht, liest es beim zweiten Mal
nicht mehr. */
ok(a.ersteMarke === "hakt",
`und das, was seit mehreren Runden hakt, steht zuoberst (${a.ersteMarke})`);
ok(a.welt === anzahlFragen,
`zu jeder der ${anzahlFragen} Zeilen die Einordnung (${a.welt})`);
ok(a.hilft === 1, `ein Rat, genau dort, wo es hakt (${a.hilft})`);
ok(!a.alterBlock && a.alteZeilen === 0,
`unter den Fragen steht KEIN Resuemee mehr (${a.alteZeilen} Zeilen)`);
ok(a.fazitDa, "stattdessen EIN Gesamtresuemee");
/* DER SCHRITT: genau einer, mit Inhalt. Eine Pruefung, die nur
fragt "ist der Kasten da", waere auch bei leerem Text gruen. */
ok(a.schrittDa, "es nennt einen naechsten Schritt");
ok(a.schrittWas.length > 40,
`und der sagt konkret, was hilft (${a.schrittWas.length} Zeichen)`);
ok(a.schrittWelt.length > 40,
`mit dem Grund daneben, warum es dieser ist (${a.schrittWelt.length} Zeichen)`);
/* GENAU EINER. "Mindestens einer" waere auch bei neun gruen -- also
genau bei dem Zustand, den Filipe abgeschafft hat. */
const wieVieleSchritte = await seite.evaluate(
() => document.querySelectorAll(".b-fazit__schritt").length);
ok(wieVieleSchritte === 1, `und zwar genau einen (${wieVieleSchritte})`);
ok(a.team.length > 30, `das Team kommt vor (${a.team.length} Zeichen)`);
/* DER TEAM-SATZ IST ABGELEITET, NICHT IMMER DERSELBE. Ein Spruch,
der bei jeder Lage gleich lautet, wird beim dritten Mal
ueberlesen. Geprueft wird das hier ueber den Server (Abschnitt
zum Resuemee), hier nur, dass er ueberhaupt zur Lage passt. */
ok(!/gemeinsam schaffen wir/i.test(a.team),
"und ist kein Spruch, der immer passt");
ok(a.quellen.length === 3, `${a.quellen.length} Quellen stehen darunter`);
ok(a.quellen.some((x) => /tiktok/i.test(x)),
"darunter eine zu TikTok — danach hatte Filipe ausdrücklich gefragt");
@@ -931,8 +960,11 @@ melde("=== 8. Die Analyse im Browser ===");
: `bei 430 px liegt kein Text auf Text (${enge.geprueft} Absätze verglichen)`);
await seite.setViewportSize({ width: 1280, height: 1000 });
if (process.env.SCHIRM) {
await seite.locator("#analyse-block").screenshot(
{ path: "C:/Users/qciga/Documents/Obelix/DogiHompage/blick.png" });
/* Zielt seit dem 22.09.2026 auf das Gesamtresuemee -- den Block
darunter gibt es nicht mehr. Ohne diese Zeile brach der Lauf
mit SCHIRM=1 ab, und zwar erst ganz am Ende. */
await seite.locator("#fazit-block").screenshot(
{ path: "C:/Users/qciga/Documents/Obelix/DogiHompage/blick-fazit.png" });
}
ok(konsole.length === 0,
konsole.length ? "Fehler im Browser: " + konsole[0].slice(0, 90) : "keine Fehler im Browser");