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:
@@ -1,7 +1,7 @@
|
||||
//! Per-recording delete endpoint: POST /web/cases/{case_id}/recordings/delete.
|
||||
//!
|
||||
//! Verifies the endpoint:
|
||||
//! - removes the audio file and its transcript / duration sidecars
|
||||
//! - removes the audio file and its `<stem>.json` metadata sidecar
|
||||
//! - invalidates derived artefacts (oneliner.json, document.md, analysis_input.json)
|
||||
//! - leaves other recordings in the same case untouched
|
||||
//! - rejects path-traversal filenames with 400
|
||||
@@ -68,26 +68,18 @@ async fn delete_recording_removes_file_and_sidecars_and_invalidates_derived() {
|
||||
"delete should redirect back to the recording list, not the case list"
|
||||
);
|
||||
|
||||
// Victim + its sidecars are gone.
|
||||
// Victim + its sidecar are gone.
|
||||
assert!(!case_dir.join(&victim).exists(), "m4a should be deleted");
|
||||
assert!(
|
||||
!case_dir
|
||||
.join("2026-04-19T10-00-00Z.transcript.txt")
|
||||
.exists(),
|
||||
"transcript sidecar should be deleted"
|
||||
);
|
||||
assert!(
|
||||
!case_dir.join("2026-04-19T10-00-00Z.duration.txt").exists(),
|
||||
"duration sidecar should be deleted"
|
||||
!case_dir.join("2026-04-19T10-00-00Z.json").exists(),
|
||||
"metadata sidecar should be deleted"
|
||||
);
|
||||
|
||||
// Survivor is intact.
|
||||
assert!(case_dir.join(&survivor).exists(), "other m4a must remain");
|
||||
assert!(
|
||||
case_dir
|
||||
.join("2026-04-19T11-00-00Z.transcript.txt")
|
||||
.exists(),
|
||||
"other transcript must remain"
|
||||
case_dir.join("2026-04-19T11-00-00Z.json").exists(),
|
||||
"other metadata sidecar must remain"
|
||||
);
|
||||
|
||||
// Derived artefacts are invalidated.
|
||||
|
||||
Reference in New Issue
Block a user