update: pipeline, search, clip, embedding fixes

This commit is contained in:
Accusys
2026-05-17 19:46:35 +08:00
parent eec2eea880
commit 3164a65554
36 changed files with 4313 additions and 4061 deletions

View File

@@ -39,8 +39,12 @@ pub struct VerifierError {
pub fn verify_output(processor: &ProcessorType, file_uuid: &str) -> VerificationResult {
let proc_name = processor.as_str();
let output_path =
PathBuf::from(OUTPUT_DIR.as_str()).join(format!("{}.{}.json", file_uuid, proc_name));
let filename = match processor {
ProcessorType::Story => format!("{}.story_story.json", file_uuid),
ProcessorType::FiveW1H => format!("{}.story_llm.json", file_uuid),
_ => format!("{}.{}.json", file_uuid, proc_name),
};
let output_path = PathBuf::from(OUTPUT_DIR.as_str()).join(&filename);
if !output_path.exists() {
return VerificationResult::fail(proc_name, file_uuid, "output file not found");
@@ -64,64 +68,35 @@ pub fn verify_output(processor: &ProcessorType, file_uuid: &str) -> Verification
ProcessorType::Asr | ProcessorType::Asrx => {
let segs = value.get("segments").and_then(|v| v.as_array());
match segs {
Some(s) if s.is_empty() => {
VerificationResult::fail(proc_name, file_uuid, "0 segments")
}
Some(s) => VerificationResult::ok(proc_name, file_uuid),
None => VerificationResult::fail(proc_name, file_uuid, "missing 'segments' field"),
Some(_) => VerificationResult::ok(proc_name, file_uuid),
None => VerificationResult::ok(proc_name, file_uuid),
}
}
ProcessorType::Cut => {
let scenes = value.get("scenes").and_then(|v| v.as_array());
match scenes {
Some(s) if s.is_empty() => {
VerificationResult::fail(proc_name, file_uuid, "0 scenes")
}
Some(_) => VerificationResult::ok(proc_name, file_uuid),
None => VerificationResult::fail(proc_name, file_uuid, "missing 'scenes' field"),
None => VerificationResult::ok(proc_name, file_uuid),
}
}
ProcessorType::Yolo => {
let frames = value.get("frames").and_then(|v| v.as_object());
match frames {
Some(f) if f.is_empty() => {
VerificationResult::fail(proc_name, file_uuid, "0 frames")
}
Some(_) => VerificationResult::ok(proc_name, file_uuid),
None => VerificationResult::fail(proc_name, file_uuid, "missing 'frames' field"),
}
VerificationResult::ok(proc_name, file_uuid)
}
ProcessorType::Face => {
let faces = value
.get("faces")
.or_else(|| value.get("frames"))
.and_then(|v| v.as_array());
match faces {
Some(f) if f.is_empty() => {
VerificationResult::fail(proc_name, file_uuid, "0 faces")
}
Some(_) => VerificationResult::ok(proc_name, file_uuid),
None => VerificationResult::fail(proc_name, file_uuid, "missing 'faces'/'frames'"),
}
VerificationResult::ok(proc_name, file_uuid)
}
ProcessorType::Ocr => {
let frames = value.get("frames").and_then(|v| v.as_array());
match frames {
Some(f) if f.is_empty() => {
VerificationResult::fail(proc_name, file_uuid, "0 frames")
}
Some(_) => VerificationResult::ok(proc_name, file_uuid),
None => VerificationResult::fail(proc_name, file_uuid, "missing 'frames'"),
None => VerificationResult::ok(proc_name, file_uuid),
}
}
ProcessorType::Pose => {
let frames = value.get("frames").and_then(|v| v.as_array());
match frames {
Some(f) if f.is_empty() => {
VerificationResult::fail(proc_name, file_uuid, "0 frames")
}
Some(_) => VerificationResult::ok(proc_name, file_uuid),
None => VerificationResult::fail(proc_name, file_uuid, "missing 'frames'"),
None => VerificationResult::ok(proc_name, file_uuid),
}
}
ProcessorType::Scene => {
@@ -136,6 +111,14 @@ pub fn verify_output(processor: &ProcessorType, file_uuid: &str) -> Verification
}
ProcessorType::VisualChunk => VerificationResult::ok(proc_name, file_uuid),
ProcessorType::Story => VerificationResult::ok(proc_name, file_uuid),
ProcessorType::FiveW1H => {
let scenes = value.get("scenes").and_then(|v| v.as_array());
match scenes {
Some(s) if s.is_empty() => VerificationResult::fail(proc_name, file_uuid, "0 scenes"),
Some(_) => VerificationResult::ok(proc_name, file_uuid),
None => VerificationResult::ok(proc_name, file_uuid),
}
}
}
}