Bildleser: eine Ueberschriftenregel, die Aufgaben verschluckt hat
GEFUNDEN IM ECHTEN BETRIEB, nicht beim Bauen. Filipe hat den Bildschirmfoto-Weg am 08.10.2026 zum ersten Mal benutzt. Im Protokoll: 09:15:17 kampagne_eingelesen "...Refined visvals Goal 1.0" -> #94 (2 Aufgaben) 09:15:26 kampagne_schon_da derselbe Schluessel -> Eintrag 94 09:15:52 eintrag_geloescht agentur #94 Auf seinem Bild stehen DREI Ziele, in der Kachel kamen ZWEI an -- und er hat sie danach geloescht. Er hat also gearbeitet, das Ergebnis war still unvollstaendig, und der einzige Hinweis darauf war, dass er es wegwirft. DIE URSACHE war die Regel, die die Phasenueberschrift aussortiert. Sie warf jede Zeile weg, in der "Ziele erreichen", "Leistung" oder "Phasendetails" IRGENDWO vorkam -- also auch gewoehnliche Ziele, die zufaellig dieselben Woerter benutzen. Gemessen: WEG Ziele erreichen fuer mehr Reichweite WEG Deine Leistung steigern bleibt An 20 Tagen Ziele fuer optimierte Bildqualitaet erreichen Die Ueberschrift wird jetzt an ZWEI Dingen erkannt statt an einem Wort: Sie traegt den Countdown ("Endet in 23 Tage 22 : 50 : 44"), ODER sie ist die Ueberschrift und sonst nichts (Zeilenende, nicht Wortgrenze -- mit einer Wortgrenze fiel "Ziele erreichen fuer mehr Reichweite" weiter durch). IM ZWEIFEL BLEIBT DIE ZEILE. Eine Ueberschrift zu viel in der Hakenliste loescht man in zwei Sekunden; eine fehlende Aufgabe merkt niemand, bis jemand sie nicht erfuellt. Dieselbe Richtung wie der dritte Ausgang: lieber etwas zu viel melden als still verschlucken. DAZU DER TITEL, aus demselben Einsatz: Aus "Refined visuals" wurde "Refined visvals" -- ein u als v. Nachgemessen, ob die Sprachwahl hilft (deu, eng, deu+eng, eng+deu gegen die Pruefdatei): alle vier lesen richtig, der Fehler liess sich nicht nachstellen. Eine Einstellung zu aendern, deren Wirkung man nicht messen kann, ist Raten. Stattdessen wird der Titel GEGENGELESEN: Er steht auf der Seite zweimal (Ueberschrift gross und fett, Rasterfeld klein und normal), also in zwei Schriftgroessen und damit mit zwei unabhaengigen Gelegenheiten, sich zu verlesen. Gehen die Lesungen auseinander, sagt die Kachel es -- als Hinweis, nicht als Ablehnung. Ein falsches Datum ist eine Falschauskunft, ein verlesener Buchstabe im Titel ein Schoenheitsfehler. GEPRUEFT: 53 (Bildleser, +10), 190 (Route, unveraendert). Gegenproben in beide Richtungen: die echte Ueberschrift mit Countdown faellt weiterhin heraus, eine Zeile die NUR das Wort ist ebenfalls -- und der Titel-Hinweis kommt NICHT, wenn beide Lesungen uebereinstimmen. Kein ausgeliefertes Skript beruehrt, also kein neuer Stempel. PARALLELE ARBEIT: Die Crew-Sitzung hat ausdruecklich zugestimmt und haelt waehrenddessen still; ihre drei Dateien (reaktion.js, reaktion.html, getippt.js) bleiben uncommittet in der Arbeitskopie. Das Arbeitsschloss stand auf ihr -- mit ihrer Zusage ueberschrieben, nicht eigenmaechtig. Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
@@ -482,10 +482,58 @@ export function leseBild(text) {
|
||||
Statt die Startzeile noch genauer zu suchen, wird gesagt, was
|
||||
KEINE Aufgabe ist. Das haelt auch, wenn die Seite die Bloecke
|
||||
einmal anders anordnet. */
|
||||
const KEINE_AUFGABE = /Endet\s*in|Endetin|Phasendetails|Leistung|Ziele erreichen/i;
|
||||
/* WAS DIE PHASENUEBERSCHRIFT IST -- UND WAS NUR SO KLINGT
|
||||
(berichtigt 08.10.2026, nach dem ersten echten Einsatz).
|
||||
|
||||
Hier stand ein Muster, das JEDE Zeile wegwarf, in der
|
||||
„Ziele erreichen“, „Leistung“, „Phasendetails“ oder „Endet in“
|
||||
irgendwo vorkam. Das trifft die Ueberschrift -- und leider auch
|
||||
Aufgaben, die zufaellig dieselben Woerter benutzen. Gemessen:
|
||||
|
||||
WEG „Ziele erreichen für mehr Reichweite“
|
||||
WEG „Deine Leistung steigern“
|
||||
bleibt „An 20 Tagen Ziele für optimierte Bildqualität erreichen“
|
||||
|
||||
Die ersten beiden sind gewoehnliche Ziele und haetten bleiben
|
||||
muessen. Im Protokoll steht, dass Filipes erster echter Versuch
|
||||
am 08.10.2026 mit ZWEI Aufgaben ankam, waehrend auf seinem Bild
|
||||
DREI stehen -- und er die Kachel danach geloescht hat.
|
||||
|
||||
DIE UEBERSCHRIFT ERKENNT MAN AN ZWEI DINGEN, nicht an einem
|
||||
Wort:
|
||||
1. Sie traegt den Countdown („Endet in 23 Tage 22 : 50 : 44“)
|
||||
-- also das Wort UND Ziffern dahinter.
|
||||
2. Oder sie ist KURZ und besteht fast nur aus dem
|
||||
Ueberschriftwort.
|
||||
Eine Aufgabe ist ein Satz mit einer Anweisung darin; sie traegt
|
||||
keinen Countdown und ist laenger.
|
||||
|
||||
IM ZWEIFEL BLEIBT DIE ZEILE. Eine Ueberschrift zu viel in der
|
||||
Hakenliste ist ein Schoenheitsfehler, den man in zwei Sekunden
|
||||
loescht. Eine fehlende Aufgabe merkt niemand -- bis jemand sie
|
||||
nicht erfuellt. */
|
||||
const KEINE_AUFGABE = (zeile) => {
|
||||
const nur = String(zeile).replace(AUFZAEHLUNG, "").trim();
|
||||
/* Mit Countdown: das ist die Ueberschrift. */
|
||||
if (/Endet\s*in/i.test(nur) && /[0-9]/.test(nur)) return true;
|
||||
/* Oder die Zeile IST die Ueberschrift und sonst nichts.
|
||||
GENAU, NICHT NUR AM ANFANG (berichtigt beim Gegenlesen,
|
||||
08.10.2026): Mit einer Wortgrenze statt eines Zeilenendes fiel
|
||||
„Ziele erreichen für mehr Reichweite“ durch -- eine
|
||||
gewoehnliche Aufgabe, die zufaellig so anfaengt. Eine
|
||||
Ueberschrift steht allein in ihrer Zeile; alles, was danach
|
||||
weitergeht, ist ein Satz.
|
||||
Die Zeichen am Ende sind das, was die Texterkennung gern
|
||||
anhaengt: Punkt, Doppelpunkt, ein Strich, ein Trennpunkt. */
|
||||
if (/^(Phasendetails|Ziele erreichen|Creator.{0,3}innen.Leistung)[\s.:·|-]*$/i
|
||||
.test(nur)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
};
|
||||
for (const z of alle.slice(ab)) {
|
||||
if (!AUFZAEHLUNG.test(z)) continue;
|
||||
if (KEINE_AUFGABE.test(z)) continue;
|
||||
if (KEINE_AUFGABE(z)) continue;
|
||||
/* EIN PUNKT AM ENDE IST FAST IMMER ZUFALL. Gemessen kam
|
||||
„Geh LIVE für 900 Minuten.“ heraus, auf der Seite steht es
|
||||
ohne Punkt. Eine Aufgabe ist eine Beschriftung, kein Satz;
|
||||
|
||||
@@ -135,6 +135,53 @@ melde("=== 1. Aus dem Erkennungstext wird eine Kachel ===");
|
||||
ok(!g.kuer.aufgaben.some((a) => /Endet|Ziele erreichen|Leistung/i.test(a)),
|
||||
" und die Phasenueberschrift mit ihrem Countdown ist keine");
|
||||
|
||||
/* ---- EINE AUFGABE DARF HEISSEN, WIE SIE WILL (08.10.2026) ---
|
||||
|
||||
GEFUNDEN IM ECHTEN BETRIEB, nicht beim Bauen: Filipes erster
|
||||
Versuch am 08.10.2026 kam laut Protokoll mit ZWEI Aufgaben an,
|
||||
waehrend auf seinem Bild DREI standen — und er hat die Kachel
|
||||
danach geloescht.
|
||||
|
||||
Die Ursache war die Regel, die die Phasenueberschrift
|
||||
aussortiert. Sie warf jede Zeile weg, in der „Ziele erreichen“,
|
||||
„Leistung“ oder „Phasendetails“ IRGENDWO vorkam — also auch
|
||||
gewoehnliche Ziele, die zufaellig dieselben Woerter benutzen.
|
||||
Eine Ueberschriftenregel, die Aufgaben verschluckt.
|
||||
|
||||
IM ZWEIFEL BLEIBT DIE ZEILE. Eine Ueberschrift zu viel in der
|
||||
Hakenliste loescht man in zwei Sekunden. Eine fehlende Aufgabe
|
||||
merkt niemand — bis jemand sie nicht erfuellt. */
|
||||
{
|
||||
const mitFallen = [
|
||||
"Kampagne mit Fallen",
|
||||
"Gruppenname Kampagne mit Fallen Zeitzone Europe/Berlin",
|
||||
"Daten 01.10.2026 ~ 31.10.2026",
|
||||
"@ Ziele erreichen Endetin 23 Tage 22 : 50 : 44",
|
||||
"· Ziele erreichen für mehr Reichweite",
|
||||
"· Deine Leistung steigern",
|
||||
"· An 20 Tagen Ziele für optimierte Bildqualität erreichen",
|
||||
"· Phasendetails im Kalender eintragen",
|
||||
].join("\n");
|
||||
const g2 = leseBild(mitFallen);
|
||||
ok(g2.kuer.aufgaben.length === 4,
|
||||
`vier Aufgaben, obwohl drei davon Ueberschriftwoerter tragen `
|
||||
+ `(${g2.kuer.aufgaben.length}): ${JSON.stringify(g2.kuer.aufgaben)}`);
|
||||
ok(g2.kuer.aufgaben.includes("Ziele erreichen für mehr Reichweite"),
|
||||
" „Ziele erreichen für mehr Reichweite“ ist eine Aufgabe");
|
||||
ok(g2.kuer.aufgaben.includes("Deine Leistung steigern"),
|
||||
" „Deine Leistung steigern“ auch");
|
||||
/* GEGENPROBE: Die ECHTE Ueberschrift mit ihrem Countdown faellt
|
||||
weiterhin heraus. Ohne sie waere „alles bleibt stehen“ auch
|
||||
dann gruen, wenn gar nichts mehr aussortiert wird. */
|
||||
ok(!g2.kuer.aufgaben.some((a) => /Endetin|Endet in/i.test(a)),
|
||||
" die Zeile MIT Countdown bleibt draussen");
|
||||
/* Und eine Zeile, die NUR aus dem Ueberschriftwort besteht,
|
||||
ebenfalls -- sonst stuende „Phasendetails“ als Haken da. */
|
||||
const nurWort = leseBild([...mitFallen.split("\n"), "· Phasendetails"].join("\n"));
|
||||
ok(!nurWort.kuer.aufgaben.includes("Phasendetails"),
|
||||
" und eine Zeile, die nur das Wort ist, auch");
|
||||
}
|
||||
|
||||
ok(g.kuer.einleitung === "Zusätzliche Prämien für das Team im Oktober.",
|
||||
`die Beschreibung: ${JSON.stringify(g.kuer.einleitung)}`);
|
||||
ok(g.kuer.steckbrief.verbund === "Spicy Media",
|
||||
|
||||
Reference in New Issue
Block a user