fix: ZE-Label „Zeiteinheiten" erkennen + Parsing/UX härten #1
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "fix/ze-label-und-robustheit"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Gemeldeter Fehler
Ein Prüfschritt mit dem Label
Zeiteinheiten:(stattZeitaufwand (ZE):) ergab „Kein ZE-Wert angegeben", obwohl die Zeitspanne korrekt erkannt wurde:Ursache:
parseZE()kannte nurZeitaufwand …und ein alleinstehendesZE. In „Zeiteinheiten" gibt es kein isoliertesZE(\bZE\bmatcht nicht) → ZE-Soll fiel durch.Nach dem Fix (im Browser verifiziert): ZE-Soll
4,10, gesamt23,11 ZE, manuelle Tätigkeiten19,01 ZE(11 Min 24 Sek).Änderungen
parseZEZeiteinheit(en)als ZE-Synonym erkannt (Kern des Bugs).2026/11).ZE-Soll:undZE = xakzeptiert (Buchstaben-Lookahead, damitZE-828weiter-828bleibt).normalizeText< 30 s/> 2 sund dazwischenliegende Zeitstempel bleiben erhalten.parseRangecalcUI
role=status) dauerhaft sichtbar außerhalb des versteckten Ergebnis-Cards → zuverlässige Screenreader-Ansagen.Tests
node test/run.mjs), +31 neu für die obigen Fälle.PR-CORE-Block 1:1).Herkunft der Verbesserungen
Zusätzlich zum gemeldeten Bug wurde eine allgemeine Review-Runde (Fable-Worker, adversarisch verifiziert) durchgeführt. Alle hier umgesetzten Punkte wurden gegen den echten Code bestätigt. Bewusst nicht umgesetzt: reine Code-Kosmetik (totes
NAMED["#39"],pad2/pad-Dublette) — gebündelt für die geplante „schick machen"-Phase.🤖 Generated with Claude Code
Behebt den gemeldeten Fehler, dass Protokolle mit dem Label "Zeiteinheiten: 4.1 ( … )" keinen ZE-Soll ergaben ("Kein ZE-Wert angegeben"), obwohl die Zeitspanne korrekt erkannt wurde. parseZE: - Label "Zeiteinheit(en)" als ZE-Synonym erkannt (Kern des Bugs). - Zeitstempel vor den Label-Mustern ausblenden, damit bei fehlendem ZE-Wert nicht die erste Stempel-Ziffer als ZE gelesen wird (z. B. "Zeiteinheiten: ( 2026-07-7 11:57:06 … )" -> nicht mehr 2026). - Label-Varianten "ZE-Soll:" und "ZE = x" akzeptiert (Buchstaben- Lookahead, damit "ZE-828" weiter als -828 gelesen wird). normalizeText: - Tag-Stripping nur für echte Tags/Kommentare, damit Vergleichs- angaben wie "< 30 s" / "> 2 s" (und dazwischenliegende Stempel) erhalten bleiben. parseRange: - Bei mehr als zwei Zeitstempeln Warnhinweis (note) statt stillem Griff auf die ersten beiden. calc: - Sichtbare Warnung bei unlesbarer bzw. negativer ZE-Eingabe. UI: - Autofill überschreibt manuell geänderte Felder nicht mehr (Dirty-Flags). - Ergebnis wird bei Feldänderung als veraltet markiert (Stale-Hinweis). - Meldungs-Live-Region (role=status) dauerhaft sichtbar außerhalb des versteckten Ergebnis-Cards (a11y-Ansagen zuverlässig). Tests: +31 Assertions (186 gesamt, grün). Browser-Verifikation des gemeldeten Falls: manuelle Tätigkeiten 19,01 ZE. Funde aus Fable-Review (adversarisch verifiziert) mit umgesetzt. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013foajK9dPn26FDk76P4SfKHärtungen aus einer zweiten adversarisch verifizierten Fable-Runde (Fokus: Bezeichnungen/Layout ändern sich durch Updates der Quell-Software). Korrektheit (verhindert still-falsche Ergebnisse): - ISO-8601-Zeitzonen-Offset ("2026-07-07T11:57:06+02:00" / "...Z") wird in normalizeText entfernt. Vorher las parseRange das Offset-Fragment "02:00" als eigenen Zeitstempel -> ~10 h Fehldifferenz. Reine Wanduhr-Differenz, Offset irrelevant; No-Space-Dash-Ranges ("12:17:36-12:20:04") bleiben via negativem Lookahead als Trenner erhalten. - parseZE: zwischen Label und Zahl sind nur noch Nicht-Buchstaben (plus der ZE-Marker) erlaubt. Ein verwaistes Label frisst dadurch keine Fremdzahl der Folgezeile mehr ("Zeitaufwand (ZE):\nToleranz 0,5 s" -> null statt 0,5). Robustheit gegen Label-Umbenennungen (ohne neue Falschzahlen): - "Zeit-Aufwand" / "Zeit Aufwand" / "Zeit-Einheiten" / "Zeit Einheiten". - "ZE Soll:" / "ZE gesamt:" (Leerzeichen-Suffix nur mit folgendem :/=). - Verkürztes Label "Aufwand:" / "Aufwand =" (Pflicht-Separator). - Wert mit nachgestellter Einheit "4,5 ZE" / "828 ZE" (nur als letztes Token; Spannen "3-5 ZE" und Prosa "1 ZE entspricht 36 Sekunden" bleiben null). Tests: +30 Assertions (216 gesamt, grün). ISO+Offset-Flow im Browser verifiziert (23,11 ZE / manuell 19,01 ZE). Jeder Vorschlag zuvor empirisch am extrahierten Core geprüft; unsichere Finder-Fassungen durch sichere ersetzt. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013foajK9dPn26FDk76P4SfKRunde 2 — Robustheit gegen Label-/Layout-Drift (Commit
3c34976)Zweite ultracode/Fable-Runde mit Fokus darauf, dass Updates der Quell-Software Bezeichnungen umbenennen oder das Layout leicht verschieben können. 6 Finder je Drift-Dimension, jeder Vorschlag empirisch am extrahierten Core geprüft; unsichere Finder-Fassungen durch sichere ersetzt.
Korrektheit (verhindert still-falsche Zahlen):
2026-07-07T11:57:06+02:00/…Z: vorher lasparseRangedas Fragment02:00als eigenen Stempel → ~10 h Fehldifferenz. Jetzt innormalizeTextentfernt (reine Wanduhr-Differenz). No-Space-Dash-Ranges12:17:36-12:20:04bleiben via negativem Lookahead korrekt.Zeitaufwand (ZE):(Wert fehlt) + FolgezeileToleranz 0,5 sergab 0,5. Jetzt sind zwischen Label und Zahl nur Nicht-Buchstaben erlaubt → null + sichtbarer Hinweis.Neue Label-Toleranz (ohne neue Falschzahlen):
Zeit-Aufwand/Zeit Aufwand/Zeit-Einheiten/Zeit EinheitenZE Soll:/ZE gesamt:(Leerzeichen-Suffix nur mit folgendem:/=)Aufwand:/Aufwand =(Pflicht-Separator)4,5 ZE/828 ZE(nur als letztes Token)Bewusst weiterhin
null(Projektregel „lieber null als plausible Falschzahl"):3-5 ZE,12 ZE und 5 Minuten,1 ZE entspricht 36 Sekunden,Aufwand: hoch (Stufe 3),Materialaufwand: 12.Tests: +30 → 216 grün. ISO+Offset-Flow im Browser verifiziert (23,11 ZE / manuell 19,01 ZE).
Verworfen (bewusst nicht umgesetzt): Space-Tausendergruppierung
1 234,5(unwahrscheinlich, riskant),>in HTML-Attributwerten (nur mit echtem Parser sauber lösbar), Mikro-/Nanosekunden. Können bei Bedarf nachgezogen werden.