Drei Befunde aus dem Test: Logo, Geplant-Filter, Anstehend-Farben
**Das Logo auf der Anmeldeseite.** Statt des Schriftzugs stand dort der Ersatztext "Manner". Die SVG-Fassung war gueltiges XML, lag im Repository und war committet — warum sie im Betrieb nicht geladen wurde, laesst sich von hier aus nicht feststellen; dafuer braucht es die Antwort des Servers auf die URL. Statt das weiter zu raten, faellt die Angriffsflaeche weg: es gibt jetzt eine Datei, manner-logo.png, der Schriftzug mit durchsichtigem Grund. Kein XML, kein Beschnitt, kein eingebackenes Feld. Das Blau darin ist #164194, also der Wert aus §1.1. Damit verschwinden auch die zwei Fassungen. §1.2 laesst den Schriftzug nur zur Gaenze auf Rosa zu, und das Manual kennt dafuer zwei Lagen: auf Weiss gehoert er nach §4.1 in ein rechteckiges rosa Feld, in einem grossflaechigen rosa Umfeld nach §3.1 nur mit Freiraum. Beides entsteht jetzt aus derselben Datei — das Feld zeichnet das Bauteil, aus derselben Polsterung wie den Freiraum. **Der Filter "Geplant" fand Ausgetretene.** Die Ableitung pruefte den Eintritt vor dem Austritt, und wer einen Eintritt in der Zukunft hatte, galt als geplant — auch wenn der Austritt laengst verbucht war. Das trifft genau den No-Show (Migration 20260814100000): eingestellt, nie erschienen, Austritt vor dem Eintrittstag. Im Bestand sind das Zeilen mit Eintritt 01.10.2026, die der Filter mitzaehlte, waehrend die Liste daneben "Ausgetreten" anzeigte. employees.status, das die SQL-Funktion beim Austritt setzt, sagte von Anfang an das Richtige; falsch war die Ableitung in der Anwendung. Ein abgeschlossener Austritt wird jetzt zuerst geprueft: er beendet das Verhaeltnis, gleichgueltig ob der Eintritt schon war oder noch kommt. Ein Austritt, der selbst noch bevorsteht, nimmt den Eintritt nicht zurueck — wer am 01.10. anfaengt und am 31.12. aufhoert, ist heute geplant. Die SQL-Fassung in lib/employee-status-filter.ts bildet dieselbe Reihenfolge ab. Keine Migration: beide Fassungen der Regel liegen in TypeScript. In SQL wird nur der Karenz-Teil wiederholt, fuer die Fuehrungslinie, und der ist nicht betroffen. **Die vier Anstehend-Chips.** Zwei davon standen in der Markenfarbe, weil die Farbe ueber den Beschriftungstext aus der Tabelle der Protokoll-Aktionen geholt wurde — und die kennt eine andere Sprache: "Neueinstellung", nicht "Eintritt". Wer dort nicht steht, bekam den neutralen Chip. Ein Nachschlagen, das bei einem Fehlschlag still etwas Plausibles liefert, faellt eben nicht auf. Die vier haben jetzt eine eigene Zuordnung, nach dem Wert verschluesselt und nicht nach der Beschriftung: Eintritt gruen, Austritt rot, Wiedervorlage gelb, Rueckkehr violett. Tuerkis waere fuer die Rueckkehr die naheliegendere Lesart gewesen, kam gegen das Gruen des Eintritts aber nur auf dE 13.0; Violett steht mit 30.8 eindeutig daneben. Schwaechstes Paar der vier: 14.2, schwaechster Kontrast 5.49:1. Zehn Tests dazu, darunter die drei Faelle, an denen der Filter gescheitert war. Lint, Typen, Schemaabgleich, 562 Tests und der Build sind sauber. Im Browser nicht gesehen. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -291,7 +291,7 @@
|
||||
<h3>Navigation</h3>
|
||||
<div class="nav">
|
||||
<div class="hd">
|
||||
<img src="../public/brand/manner-logo-auf-rosa.svg" alt="Manner" width="60" height="24"
|
||||
<img src="../public/brand/manner-logo.png" alt="Manner" width="60" height="24"
|
||||
style="padding:8px;box-sizing:content-box">
|
||||
<span style="font-weight:800;font-size:15px;color:var(--brand-700)">Alpenwerk HR</span>
|
||||
</div>
|
||||
@@ -301,6 +301,21 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<h3>Anstehend — die vier Arten</h3>
|
||||
<div class="chips">
|
||||
<span class="chip" style="background:var(--success-bg);color:var(--success-text)">Eintritt</span>
|
||||
<span class="chip" style="background:var(--danger-bg);color:var(--danger-text)">Austritt</span>
|
||||
<span class="chip" style="background:var(--purple-bg);color:var(--purple-text)">Rückkehr</span>
|
||||
<span class="chip" style="background:var(--warning-bg);color:var(--warning-text)">Wiedervorlage</span>
|
||||
</div>
|
||||
<p style="font-size:12px;color:var(--ink-muted);margin:14px 0 0">
|
||||
Jemand kommt (gruen), jemand geht (rot), ein Termin will erledigt werden (gelb) —
|
||||
und die Rueckkehr ist keines davon, also eine eigene Klasse. Tuerkis waere die
|
||||
naheliegendere Lesart gewesen, kam gegen das Gruen aber nur auf dE 13.0; Violett
|
||||
steht mit 30.8 eindeutig daneben. Schwaechstes Paar der vier: 14.2.</p>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<h3>Organigramm — die vier Knotenarten</h3>
|
||||
<div style="display:flex;gap:8px;flex-wrap:wrap;font-size:12px;font-weight:700">
|
||||
@@ -317,39 +332,39 @@
|
||||
</div>
|
||||
|
||||
<!-- ══════════════════════════════════════════════════════════ -->
|
||||
<h2>5 · Das Logo, sein Freiraum und die zwei Fassungen</h2>
|
||||
<p>§1.2 laesst den Schriftzug nur zur Gaenze auf Rosa zu. Das Manual kennt dafuer zwei
|
||||
Faelle, und sie brauchen verschiedene Dateien — deshalb liegen zwei im Projekt.</p>
|
||||
<h2>5 · Das Logo und sein Freiraum</h2>
|
||||
<p>Eine Datei: <code>manner-logo.png</code>, der Schriftzug mit durchsichtigem Grund.
|
||||
§1.2 laesst ihn nur zur Gaenze auf Rosa zu, und das Manual kennt dafuer zwei Lagen —
|
||||
beide entstehen aus derselben Datei, den Unterschied macht das Bauteil.</p>
|
||||
<div class="logo-demo">
|
||||
<div class="on-white">
|
||||
<span class="freiraum">
|
||||
<img src="../public/brand/manner-logo.svg" alt="Manner" width="150" height="60"
|
||||
<span class="freiraum" style="background:var(--accent-500)">
|
||||
<img src="../public/brand/manner-logo.png" alt="Manner" width="150" height="60"
|
||||
style="padding:20px;box-sizing:content-box;display:block">
|
||||
</span>
|
||||
<div style="font-size:11px;color:var(--ink-muted);margin-top:8px">
|
||||
<code>manner-logo.svg</code> — auf Weiss, mit eigenem rosa Feld (§4.1)</div>
|
||||
auf Weiss — das rosa Feld zeichnet das Bauteil (§4.1)</div>
|
||||
</div>
|
||||
<div class="on-rosa">
|
||||
<span class="freiraum">
|
||||
<img src="../public/brand/manner-logo-auf-rosa.svg" alt="Manner" width="150" height="60"
|
||||
<img src="../public/brand/manner-logo.png" alt="Manner" width="150" height="60"
|
||||
style="padding:20px;box-sizing:content-box;display:block">
|
||||
</span>
|
||||
<div style="font-size:11px;color:var(--brand-700);margin-top:8px">
|
||||
<code>manner-logo-auf-rosa.svg</code> — im rosa Umfeld, ohne Feld (§3.1)</div>
|
||||
im rosa Umfeld — nur Freiraum, kein eigenes Feld (§3.1)</div>
|
||||
</div>
|
||||
</div>
|
||||
<p style="font-size:12px;color:var(--ink-body)">
|
||||
Der Freiraum X/3 (gestrichelt) steckt im Bauteil selbst und nicht in den
|
||||
Aufrufstellen — sonst haengt seine Einhaltung daran, dass jede einzelne daran denkt.
|
||||
Die Fassung mit Feld auf eine rosa Flaeche zu setzen ging schief: das Feld stand als
|
||||
Rechteck in leicht anderem Ton darauf. Der Ton war derselbe — verschoben hat ihn die
|
||||
Lichtblende ueber der Flaeche, die unter dem Logo endete.</p>
|
||||
Auf Weiss ist er zugleich der Rand des rosa Feldes.</p>
|
||||
<div class="note">
|
||||
<b>Nebenbei ausgemistet.</b> Beide Dateien wogen 74 kB, weil die Vorlage aus Seite 3
|
||||
des Manuals gezogen wurde und die ganze Seite mitgenommen hat: 219 Elemente, die den
|
||||
Fliesstext jener Seite zeichnen („Der Manner Schriftzug … darf nicht veraendert
|
||||
werden"), rosa auf Rosa oder ausserhalb des Beschnitts. Das eigentliche Logo sind
|
||||
vier Pfade. Jetzt 18,7 kB.
|
||||
<b>Warum nicht mehr als SVG.</b> Vorher lagen hier zwei aus dem Manual gezogene SVG,
|
||||
eines mit eingebackenem rosa Feld und eines ohne. Auf der rosa Flaeche blieb das
|
||||
eingebackene Feld als Rechteck sichtbar, und im Betrieb wurde die Datei ueberhaupt
|
||||
nicht geladen — die Anmeldeseite zeigte nur den Ersatztext „Manner". Ein PNG mit
|
||||
durchsichtigem Grund hat keine dieser Angriffsflaechen: kein XML, kein Beschnitt,
|
||||
kein Feld, das an der falschen Stelle endet.
|
||||
</div>
|
||||
|
||||
<!-- ══════════════════════════════════════════════════════════ -->
|
||||
|
||||
Reference in New Issue
Block a user