Zwei Pruefungen massen einen Stand, den es nicht mehr gibt

Beide Befunde sind heute beim Umzug des Vorlagenkatalogs aufgefallen,
gehoeren aber nicht dazu -- sie lagen schon vorher da und haetten bei
jedem Lauf mitgemeldet, bis sie niemand mehr liest.

pruef-struktur las Server-Routen nur in doppelten Anfuehrungszeichen.
Wer eine Route in einer Schleife registriert, schreibt sie aber als
Template:

    for (const weg of ["annehmen", "ablehnen"])
      router.post(`/workspace/api/vorlagen/bewerbung/${weg}`, ...)

Diese Routen fehlten in der Liste, und die Aufrufe dorthin galten als
"Schnittstelle gibt es nicht" -- obwohl sie laufen. Die Erfassung der
AUFRUFE kannte alle drei Zeichen laengst; nur die der ROUTEN nicht.
Zwei Regeln fuer dieselbe Frage, und eine davon war aelter. Gemessen:
319 statt 315 Routen, und der Fehlalarm ist weg. Die Gegenproben
schlagen weiter an ("erfundene Schnittstelle wird als fehlend
erkannt").

pruef-aufgaben-vorlagen zaehlte KARTEN und erwartete +1. Seit das
Brett gleiche Aufgaben zu einer Sammelkarte zusammenfasst, stimmt das
nicht mehr -- die Pruefung legt kurz davor sieben Vorlagen derselben
Stufe an, und die neue wanderte in eine bestehende Karte. Sie meldete
"9 -> 9" und behauptete damit, das Uebernehmen sei kaputt; drei Zeilen
weiter erkannte sie dieselbe Aufgabe als "schon uebernommen" wieder.
Jetzt zaehlt sie Aufgaben: "9 -> 10 Aufgaben in 9 Karten".

Dieselbe Stelle gab es zweimal. In pruef-modi-katalog ist sie gestern
repariert worden -- hier nicht, weil ich nach dem ersten Fund nicht
weitergesucht habe.

Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
2026-09-23 17:13:35 +02:00
co-authored by Claude Opus 5
parent b1319e3124
commit 290d7c8d88
2 changed files with 48 additions and 5 deletions
+24 -2
View File
@@ -54,8 +54,25 @@ ok(serverDateien.length >= 20, `${serverDateien.length} Server-Module gefunden`)
const ROUTEN = [];
for (const datei of serverDateien) {
const text = readFileSync(join(SERVER, datei), "utf8");
/* AUCH ROUTEN IN ANFUEHRUNGSSTRICHEN UND BACKTICKS (23.09.2026).
Hier stand nur das doppelte Anfuehrungszeichen. Wer eine Route in
einer Schleife registriert, schreibt sie aber als Template:
for (const weg of ["annehmen", "ablehnen"])
router.post(`/workspace/api/vorlagen/bewerbung/${weg}`, ...)
Diese Routen fehlten in der Liste -- und die Aufrufe dorthin
wurden als "Schnittstelle gibt es nicht" gemeldet, obwohl sie
jeden Tag laufen. Ein Fehlalarm, den man zweimal liest und dann
nicht mehr; genau davor warnt der Kommentar weiter unten bei den
sechs angeblich verwaisten Seiten.
Die Erfassung der AUFRUFE kannte alle drei Zeichen schon
(["'`]) -- nur die Erfassung der ROUTEN nicht. Zwei Regeln fuer
dieselbe Frage, und eine davon war aelter. */
const treffer = text.matchAll(
/Router\.(get|post|patch|put|delete|use)\(\s*\n?\s*"(\/workspace\/[^"]*)"/g);
/Router\.(get|post|patch|put|delete|use)\(\s*\n?\s*["'`](\/workspace\/[^"'`]*)/g);
for (const t of treffer) ROUTEN.push({ art: t[1], pfad: t[2], datei });
}
ok(ROUTEN.length >= 80, `${ROUTEN.length} Server-Routen eingelesen`);
@@ -77,7 +94,12 @@ function routeGibtEs(pfad, art) {
if (art && r.art !== art) return false;
const teileB = r.pfad.split("/").filter(Boolean);
if (teileA.length !== teileB.length) return false;
return teileB.every((t, i) => t.startsWith(":") || t === "*" || t === teileA[i]);
/* ${...} IN EINER ROUTE IST EIN PLATZHALTER wie :id -- was dort
eingesetzt wird, entscheidet die Schleife beim Start. Der
Aufrufpfad ist oben schon zu "1" normalisiert worden; ohne diese
Zeile verglichen wir "1" mit "${weg}" und faenden nie etwas. */
return teileB.every((t, i) => t.startsWith(":") || t === "*"
|| t.includes("${") || t === teileA[i]);
});
}