docs(quick-260907-hyi): SUMMARY fuer Tasks 1-3, Task 4 (Browser-Abnahme) offen
Dokumentiert die drei ausgefuehrten Tasks (Woerterbuch + de.json, Vitest-Waechter, API-Texte), die zwei waehrend Task 2 selbst entdeckten und behobenen Woerterbuch-Luecken sowie die realen Test-/Build-Ergebnisse fuer beide Apps. Task 4 (Sichtpruefung nach Docker-Rebuild) bleibt dem Orchestrator ueberlassen. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01K5jtbGzC5Sf9npJ3JCjKhq
This commit is contained in:
+125
@@ -0,0 +1,125 @@
|
||||
---
|
||||
quick_id: 260907-hyi
|
||||
title: Umlaute in der deutschen Oberflaeche korrigieren
|
||||
status: complete
|
||||
tech-stack:
|
||||
patterns:
|
||||
- "Explizite Ersetzungs-/Positivliste statt Zeichenregel fuer Umlaut-Korrektur"
|
||||
key-files:
|
||||
created:
|
||||
- apps/web/src/messages/umlaut-dictionary.ts
|
||||
- apps/web/src/messages/umlaut-guard.spec.ts
|
||||
modified:
|
||||
- apps/web/src/messages/de.json
|
||||
- apps/api/src/mail/mail.service.ts
|
||||
- apps/api/src/domaincheck/domaincheck.seed.ts
|
||||
decisions:
|
||||
- "ss/ß-Faelle (Groesse, Schliessen, ausschliessen, Gruessen) wurden mitkorrigiert statt ausgeklammert, da derselbe Defekt."
|
||||
- "Fehlende Woerterbuch-Eintraege, die der neue Waechter selbst aufdeckte, wurden inline nachgezogen (Rule 1 - Bug)."
|
||||
actuals:
|
||||
tokens: 9975
|
||||
tasks: 3
|
||||
commits: 3
|
||||
plan_head_before: bec0530a2b2638b47fbc91dc9017cda148f5c37f
|
||||
metrics:
|
||||
duration: "~25 min"
|
||||
completed: 2026-09-07
|
||||
---
|
||||
|
||||
# Quick-Task 260907-hyi: Umlaute in der deutschen Oberflaeche korrigieren Summary
|
||||
|
||||
Deutsche Oberflaechentexte, Passwort-/Willkommens-Mail und Marktplatz-Modulbeschreibung
|
||||
schrieben Umlaute als Buchstabenpaare aus; jetzt schreiben sie echte Umlaute, per expliziter
|
||||
Token-Liste korrigiert und mit einem Vitest-Waechter gegen Rueckfall abgesichert.
|
||||
|
||||
## Ausgefuehrte Tasks
|
||||
|
||||
1. **Woerterbuch anlegen und de.json korrigieren** — `umlaut-dictionary.ts` angelegt
|
||||
(`UMLAUT_REPLACEMENTS`, `UMLAUT_ALLOWLIST`), 68 falsche Tokens (140 Fundstellen inkl. der
|
||||
in Task 2 entdeckten Ergaenzung) in `de.json` per Ganzwort-Ersetzung korrigiert. Commit
|
||||
`3d351c6`.
|
||||
2. **Regressionswaechter als Vitest-Spec** — `umlaut-guard.spec.ts` angelegt, liest
|
||||
ausschliesslich das geparste JSON, prueft drei Dinge (keine bekannten Ersatzschreibweisen
|
||||
mehr, kein neues ae/oe/ue/ss-Token ausserhalb der Positivliste, de/en-Schluesselparitaet).
|
||||
Commit `caa4827`.
|
||||
3. **API-Texte — Passwort-Mail und Modul-Beschreibung** — `mail.service.ts` (Betreff,
|
||||
Reset-Fliesstext, Willkommens-Mail) und `domaincheck.seed.ts` korrigiert. Commit `d9f1422`.
|
||||
4. **Sichtpruefung im Browser und in der Datenbank** — `checkpoint:human-verify`, absichtlich
|
||||
nicht ausgefuehrt. Der Orchestrator fuehrt Docker-Rebuild und die visuelle Pruefung durch.
|
||||
|
||||
## Deviations from Plan
|
||||
|
||||
### Auto-fixed Issues
|
||||
|
||||
**1. [Rule 1 - Bug] Fehlender Grossschreibungs-Eintrag `Bestaetigen` → `Bestätigen`**
|
||||
- **Found during:** Task 2, beim ersten Lauf des neuen Waechters.
|
||||
- **Issue:** Die Plan-Wortliste fuehrte nur `bestaetigen→bestätigen` (klein), aber
|
||||
`common.confirm` in `de.json` nutzt die Grossschreibung `"Bestaetigen"` (Schaltflaechen-Text)
|
||||
— blieb nach Task 1 faelschlich unkorrigiert.
|
||||
- **Fix:** `Bestaetigen: 'Bestätigen'` zu `UMLAUT_REPLACEMENTS` ergaenzt, `de.json`-Wert
|
||||
direkt korrigiert.
|
||||
- **Files modified:** `apps/web/src/messages/umlaut-dictionary.ts`, `apps/web/src/messages/de.json`
|
||||
- **Commit:** `caa4827`
|
||||
|
||||
**2. [Rule 1 - Bug] Fehlende Positivlisten-Eintraege fuer nach der Korrektur entstandene, aber weiterhin ae/oe/ue/ss-haltige korrekte Woerter**
|
||||
- **Found during:** Task 2, gleicher Waechter-Lauf.
|
||||
- **Issue:** Die Korrektur von `Passwoerter`, `vertrauenswuerdigen`, `ausschliessen`,
|
||||
`entschluesselt` ergibt korrektes Deutsch (`Passwörter`, `vertrauenswürdigen`,
|
||||
`ausschließen`, `entschlüsselt`), das aber weiterhin die Zeichenfolge `ss`/`ue` enthaelt
|
||||
(z. B. `üssel`, `au` + `e` in `trauen`, `uss` in `ausschließen`) und deshalb vom
|
||||
zweiten Waechter-Test als "neues Wort" markiert wurde.
|
||||
- **Fix:** Die vier Woerter zu `UMLAUT_ALLOWLIST` ergaenzt.
|
||||
- **Files modified:** `apps/web/src/messages/umlaut-dictionary.ts`
|
||||
- **Commit:** `caa4827`
|
||||
|
||||
Beide Punkte wurden inline behoben, nicht als separate Commits — sie sind Teil der
|
||||
Fertigstellung des in Task 1/2 beschriebenen Woerterbuchs, keine architektonische Aenderung.
|
||||
|
||||
## Test-/Build-Ergebnisse (real, nicht simuliert)
|
||||
|
||||
- `pnpm --filter @tessera/web test`: **38 Testdateien, 225 Tests — alle gruen** (inkl. neuem
|
||||
`umlaut-guard.spec.ts` und bestehender `tenderRadar-parity.spec.ts`).
|
||||
- `pnpm --filter @tessera/web run type-check`: sauber, keine Ausgabe.
|
||||
- `pnpm --filter @tessera/api run build`: sauber, keine Ausgabe.
|
||||
- `pnpm --filter @tessera/api run type-check`: sauber, keine Ausgabe.
|
||||
- `pnpm --filter @tessera/api run test`: **46 Testdateien, 642 Tests — alle gruen** (mehrere
|
||||
erwartete `ERROR`/`WARN`-Log-Zeilen in der Ausgabe stammen von absichtlich simulierten
|
||||
Fehlerpfaden in bestehenden Tests, kein neuer Testfehler).
|
||||
- Manuelle Waechter-Probe (Task 2 `done`-Kriterium): ein probeweise eingefuegtes `fuer`
|
||||
liess die Spec mit exakt der geforderten Meldung fehlschlagen (`"für"` + Schluesselpfad
|
||||
`common.edit`), danach zurueckgenommen — `git diff --stat` bestaetigt keine Restspur.
|
||||
|
||||
## Wieviele Strings geaendert wurden
|
||||
|
||||
- **68 verschiedene Tokens** in `UMLAUT_REPLACEMENTS` (67 aus dem Plan + 1 selbst gefunden:
|
||||
`Bestaetigen`), **140 Ersetzungs-Treffer** in `de.json`-Werten insgesamt.
|
||||
- **65 Tokens** auf `UMLAUT_ALLOWLIST` (61 aus dem Plan + 4 selbst ergaenzt).
|
||||
- **6 Zeichenketten** in `apps/api/src/mail/mail.service.ts` (Betreff + 5 Fliesstext-/
|
||||
Template-Literal-Stellen in beiden Mails).
|
||||
- **1 Zeichenkette** in `apps/api/src/domaincheck/domaincheck.seed.ts`.
|
||||
|
||||
## Was bewusst unangetastet blieb
|
||||
|
||||
- `empfaenger@example.com` (Schluessel `testToPlaceholder`) — Platzhalter-Adresse, per
|
||||
`@`-Regel uebersprungen, wie im Plan gefordert.
|
||||
- Alle 65 Positivlisten-Woerter (`Passwort`, `Adresse`, `Quelle`, `manuell`, `Ausschreibung`,
|
||||
`Erzeugnisse`, `zuerst`, `neue`, ...) — unveraendert, keine einzige Ersetzung darauf
|
||||
angewendet.
|
||||
- Deutsche Code-Kommentare (z. B. in `tessera-logo.tsx`) — laut Plan ausdruecklich nicht
|
||||
Teil dieses Tasks, nicht angefasst.
|
||||
- Wortlaut jeder Zeichenkette — nur Schreibweise korrigiert, keine Umformulierung.
|
||||
- Schluessel und Reihenfolge in `de.json`/`en.json` — strukturell identisch geblieben (787
|
||||
Schluessel, geprueft per Skript vor und nach der Aenderung).
|
||||
- Die beiden Backlog-Punkte aus dem Plan (`1 Mitglieder` statt `1 Mitglied`; Duzen im
|
||||
Aktivierungsdialog) — ausdruecklich nicht Teil dieses Plans, bereits im Backlog unter
|
||||
`.planning/phases/15-modul-berechtigungen-gruppen-user-grants/15-UAT-2026-09-07.md` vermerkt.
|
||||
- Task 4 (Sichtpruefung, Docker-Rebuild) — `checkpoint:human-verify`, dem Orchestrator
|
||||
ueberlassen.
|
||||
|
||||
## Self-Check: PASSED
|
||||
|
||||
- `apps/web/src/messages/umlaut-dictionary.ts` — FOUND
|
||||
- `apps/web/src/messages/umlaut-guard.spec.ts` — FOUND
|
||||
- Commit `3d351c6` — FOUND (`git log --oneline --all`)
|
||||
- Commit `caa4827` — FOUND
|
||||
- Commit `d9f1422` — FOUND
|
||||
Reference in New Issue
Block a user