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