Refactor recording metadata to JSON sidecar
Replaces the `.transcript.txt` sidecar with a structured `.json` file for recording metadata. This change consolidates transcript text, duration, and other potential metadata into a single, extensible JSON object. This also refactors the `TranscriptState` enum to better represent the on-disk state (absence of file means pending) and the in-memory representation. The `Transcript` enum now specifically models the terminal outcomes of the transcriber (`Silent` or `Content`). The commit includes updates to documentation, data structures, path handling, and various tests to align with the new metadata format.
This commit is contained in:
@@ -26,17 +26,20 @@ use wiremock::{Mock, MockServer, ResponseTemplate};
|
||||
use common::{ONELINER_FILENAME, TestConfig};
|
||||
|
||||
fn write_transcript(case_dir: &Path) {
|
||||
// Seed an m4a + transcript pair, matching the worker's on-disk
|
||||
// layout. The oneliner worker iterates `.m4a` files and resolves
|
||||
// the sidecar from the stem; a stray transcript without an m4a
|
||||
// would be invisible to it.
|
||||
// Seed an m4a + metadata sidecar pair, matching the worker's
|
||||
// on-disk layout. The oneliner worker iterates `.m4a` files and
|
||||
// resolves the sidecar from the stem; a stray sidecar without an
|
||||
// m4a would be invisible to it.
|
||||
let stem = "2026-04-16T10-00-00Z";
|
||||
std::fs::write(case_dir.join(format!("{stem}.m4a")), b"audio").unwrap();
|
||||
std::fs::write(
|
||||
case_dir.join(format!("{stem}.transcript.txt")),
|
||||
"Brustschmerz links, seit heute morgen.",
|
||||
)
|
||||
.unwrap();
|
||||
common::seed_recording_meta(
|
||||
case_dir,
|
||||
stem,
|
||||
common::Transcript::Content {
|
||||
text: "Brustschmerz links, seit heute morgen.".to_owned(),
|
||||
},
|
||||
None,
|
||||
);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
|
||||
Reference in New Issue
Block a user