Prüfprotokoll-Rechner: rechnet Zeitdifferenz eines Prüfschritts in ZE (100 ZE = 1 h) und Zeit (Tage/Std/Min/Sek) um. Single-File-HTML, keine externen Skripte.
  • HTML 57.3%
  • JavaScript 42.7%
Find a file
2026-07-11 14:28:12 +02:00
.forgejo init: protokollrechner — Single-File-Rechner Prüfschritt→ZE+Dauer 2026-07-09 20:46:05 +02:00
test fix(hardening): µs-stamp leak, ReDoS, ISO-date leak, compact-range regression (#3) (#4) 2026-07-11 14:28:12 +02:00
.gitignore init: protokollrechner — Single-File-Rechner Prüfschritt→ZE+Dauer 2026-07-09 20:46:05 +02:00
index.html fix(hardening): µs-stamp leak, ReDoS, ISO-date leak, compact-range regression (#3) (#4) 2026-07-11 14:28:12 +02:00
README.md fix: Ampel/Richtung korrigiert – manuelle Arbeit = gesamte Zeit - Funktionsprüfung 2026-07-09 22:12:26 +02:00

Protokollrechner

Kleiner, eigenständiger Prüfprotokoll-Rechner als eine einzige HTML-Datei (index.html) — ohne extern geladene Skripte, Styles, Fonts oder Bilder. Läuft in jedem Browser durch Doppelklick, ohne Server, überall identisch.

Zweck

Aus einem Prüfschritt eines Protokolls berechnet das Tool auf Knopfdruck vier Blöcke, jeweils in ZE und in Zeit (Min/Sek, ggf. Tage):

  1. Funktionsprüfung — ZE Funktionsprüfung (aus Zeitaufwand (ZE): …) und daneben dieselbe Menge als Zeit (ZE × 36 s).
  2. Gesamte Zeit (Anfang → Ende) — die gemessene Zeitdifferenz, als ZE und Zeit.
  3. Manuelle Tätigkeiten (gesamte Zeit Funktionsprüfung) — die während der Prüfung angefallene manuelle Zeit, als ZE und Zeit. Hintergrund: bei manuellen Tätigkeiten pausiert die Funktionsprüfung (ihre ZE zählen die Zeit nicht mit), die gesamte Zeit von Anfang bis Ende enthält sie aber — die Differenz ist die gesuchte manuelle Arbeit.
  4. Bewertunggrün, wenn Zeit für manuelle Tätigkeiten übrig ist (gesamte Zeit ≥ Funktionsprüfung); rot, wenn die Funktionsprüfung länger ist als die gesamte Zeit (dann bleibt nichts übrig → Werte prüfen).

Grundregel: 100 ZE = 1 Stunde, also 1 ZE = 36 s (1 Tag = 2400 ZE).

Beispiel: gesamte Zeit 5 Min · Funktionsprüfung 3 ZE (= 1 Min 48 Sek) → manuelle Tätigkeiten = 5,33 ZE / 3 Min 12 Sek (grün). Ist die Funktionsprüfung länger als die gesamte Zeit, werden Block 3/4 rot (Werte prüfen).

Eingabe

Entweder die drei Felder (Anfang, Ende, Zeiteinheit) direkt ausfüllen — oder einen Protokoll-Ausschnitt in das große Feld einfügen; die Felder werden automatisch zerlegt und gefüllt. Erwartetes Format:

Zeitaufwand (ZE): 4.5

10.03.2026 12:17:36,696 - 10.03.2026 12:20:04,305
  • Zeitstempel: TT.MM.JJJJ HH:MM:SS,mmm (Komma = Millisekunden-Anteil).
  • ZE-Wert: ganzzahlig (828) oder dezimal (4.5 / 4,5).

Flexibel bei Formatschwankungen

Damit kleine Änderungen im Copy-Paste nicht sofort zu Fehlern führen, ist die Erkennung tolerant:

  • Datum optional — reine Uhrzeiten (12:17:36,696 - 12:20:04,305) funktionieren.
  • gemischt — ist nur eine Seite datiert, wird das Datum auf die andere übernommen.
  • Sekunden optional (12:17), Millisekunden optional, Komma oder Punkt.
  • 2- oder 4-stelliges Jahr (10.03.26 → 2026) und ISO-Datum (2026-03-10).
  • Trenner - / / / bis / >; Labels/Zusatztext rundherum egal.
  • Reine Uhrzeit über Mitternacht → +1 Tag angenommen (mit Hinweis).
  • ZE-Wert auch als ZE: 4,5, (ZE): 828 oder Zeitaufwand: 12,75 ZE.

Ungültige Angaben (z. B. 30.02., Stunde 25) werden als solche erkannt, nicht stillschweigend verrechnet.

Robuste Normalisierung („egal welches Format")

Umlaute und Sonderzeichen werden logisch gewandelt, bevor gerechnet wird:

  • HTML-Entities:  , ü, ß, –, numerisch ü / ü, auch doppelt kodiert ( ).
  • Unicode-Leerzeichen (U+00A0, schmales NBSP U+202F, U+2007/2009, U+3000), Zero-Width (U+200BU+200D, U+FEFF) und Soft-Hyphen werden entfernt/normalisiert.
  • Bindestrich-/Minus-Varianten (- …) als Range-Trenner, ebenso bis.
  • Rohe HTML-Tags rund um die Werte werden entfernt.

So funktioniert sowohl der reine Copy-Paste aus der gerenderten Tabelle als auch aus dem HTML-Quelltext.

Rechenregel

1 ZE   = 36 s        (weil 100 ZE = 3600 s = 1 h)
1 Tag  = 2400 ZE
ZE_ist = Zeitdifferenz[s] / 36

Die Differenz wird bewusst als Wanduhr-Differenz über UTC berechnet (Date.UTC) — dadurch keine Sommerzeit-Artefakte und überall dasselbe Ergebnis.

Entwicklung / Test

Die reine Rechenlogik liegt in index.html zwischen den Markern === PR-CORE-START === und === PR-CORE-END === und wird als globalThis.PR exportiert. Die Node-Test-Batterie extrahiert exakt diesen ausgelieferten Code (keine Kopie) und prüft ihn:

node test/run.mjs

Status

v1 — funktionsfähig und getestet. Optisch bewusst schlicht gehalten („später schick machen"). Geplant: Batch-Modus für mehrere Prüfschritte auf einmal.