041f9015ca
Replace the imperative loop that mixed mtime-tracking, transcript reading, and validation with three clearly-scoped functions: - compute_last_mtime: pure reduction over all m4as, returns max mtime. - read_recordings: I/O loop that reads each transcript sidecar, aborts on missing transcript (legacy "Nicht alle Aufnahmen sind transkribiert" 400 body), silently skips blank ones. - build_analysis_input: orchestrator that composes the above with RFC3339 formatting. Error bodies are preserved byte-for-byte. Replaces a one-pass loop with two passes; n <= ~10 in practice - negligible.