Verwaltungsbereich fuer Projektanfragen

Masterplan S.13. Anfragen ansehen, filtern, durchsuchen, Status aendern,
interne Notizen, archivieren. 9/9 Sicherheitstests.

Bewusste Entscheidungen:

* NUR AUF DEUTSCH. Der oeffentliche Teil laeuft in fuenf Sprachen, weil
  dort Kunden landen. Hier landen ausschliesslich Dogfather und VanVan --
  fuenf Sprachen waeren fuenffache Pflege und fuenffache Fehlerflaeche
  ohne einen einzigen Nutzer, der sie braucht. Genau wie der bestehende
  interne Bereich des Universe.

* Anmeldung ueber die BESTEHENDE Team-Anmeldung (/auth/login) statt einer
  zweiten eigenen. Zwei Anmeldungen fuer dieselben zwei Personen waeren
  doppelte Pflege und ein zweiter Ort, an dem ein Zugang vergessen werden
  kann. Der Code der Zugangswand gilt hier ausdruecklich NICHT --
  die Verwaltung steckt hinter zwei getrennten Tueren.

* Sitzungstoken im sessionStorage, nicht localStorage: es verschwindet
  beim Schliessen, dieselbe Regel wie an der Zugangswand. Der Test prueft
  das ausdruecklich.

* Bei abgelaufener Sitzung geht es zurueck zur Anmeldung statt zu einer
  leeren Liste. Eine leere Liste sieht aus wie "keine Anfragen" und ist
  damit eine stille Falschaussage.

* Gold nur beim Status "neu" -- also genau dort, wo wirklich etwas zu tun
  ist. Wuerde alles leuchten, leuchtet nichts.

* Archivieren statt Loeschen, und die Oberflaeche sagt das auch dazu.

Pruefskript: kennt jetzt bewusst einsprachige Seiten (verwaltung, portal)
und prueft dort nur die Struktur, statt ein fehlendes Woerterbuch zu
melden.

Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
2026-08-22 18:54:58 +02:00
co-authored by Claude Opus 5
parent eaeaec6b56
commit de4a90362e
3 changed files with 782 additions and 1 deletions
+20 -1
View File
@@ -35,11 +35,30 @@ for (const datei of seiten) {
console.log(`\n--- ${datei} ---`);
if (!existsSync(i18nDatei)) {
/* Bewusst einsprachige Seiten.
Der öffentliche Teil läuft in fünf Sprachen, weil dort Kunden landen.
In der Verwaltung landen ausschließlich Dogfather und VanVan — fünf
Sprachen wären dort fünffache Pflege und fünffache Fehlerfläche ohne
einen einzigen Nutzer, der sie braucht. Genau wie der bestehende
interne Bereich des Universe, der ebenfalls nur Deutsch spricht.
Die Tag-Balance wird trotzdem geprüft (siehe unten). */
const NUR_DEUTSCH = ["verwaltung", "portal"];
const einsprachig = NUR_DEUTSCH.includes(name);
if (!existsSync(i18nDatei) && !einsprachig) {
console.log(` FEHLER: ${i18nDatei} fehlt`);
fehler++;
continue;
}
if (einsprachig) {
console.log(" bewusst nur Deutsch (interner Bereich) — nur Struktur geprueft");
for (const tag of ["div", "section", "main", "article", "details", "form", "button"]) {
const auf = (html.match(new RegExp(`<${tag}\\b`, "g")) || []).length;
const zu = (html.match(new RegExp(`</${tag}>`, "g")) || []).length;
if (auf !== zu) { console.log(` TAG-UNGLEICHGEWICHT <${tag}>: ${auf} offen, ${zu} geschlossen`); fehler++; }
}
continue;
}
// Wörterbuch laden (setzt window.I18N_WD)
global.window = {};