From 9485ced68a81f8880f3b173e62b62b55f0dd80aa Mon Sep 17 00:00:00 2001
From: cai <cai@nbcai.cc>
Date: Wed, 12 Aug 2026 10:29:38 +0800
Subject: [PATCH] fix(helper): observe fixture attributes through probe ttl
---
src/asr_realtime.rs | 24 ++++++++++++++++++++++--
1 files changed, 22 insertions(+), 2 deletions(-)
diff --git a/src/asr_realtime.rs b/src/asr_realtime.rs
index a7ff7f7..ad99ff2 100644
--- a/src/asr_realtime.rs
+++ b/src/asr_realtime.rs
@@ -70,6 +70,18 @@
}
}
+ pub(crate) fn rejected_origin_status(
+ reason: &str,
+ attributes: &HashMap<String, String>,
+ ) -> &'static str {
+ let status = Self::origin_status(attributes);
+ if status == "sequence_absent" {
+ status
+ } else {
+ Self::rejection_status(reason)
+ }
+ }
+
pub(crate) fn from_participant(
attributes: &HashMap<String, String>,
) -> Result<Option<Self>, &'static str> {
@@ -586,17 +598,25 @@
AudioIngressMetadata::rejection_status("invalid_source_or_sequence")
);
assert_eq!(
- "sequence_replayed_or_regressed",
+ "origin_unprovable",
AudioIngressMetadata::rejection_status("sequence_replayed")
);
assert_eq!(
- "wrong_participant_or_track",
+ "origin_unprovable",
AudioIngressMetadata::rejection_status("wrong_participant")
);
assert_eq!(
"origin_unprovable",
AudioIngressMetadata::rejection_status("unknown")
);
+ let missing_sequence = HashMap::from([(
+ "inputSourceCategory".to_string(),
+ "controlled_fixture".to_string(),
+ )]);
+ assert_eq!(
+ "sequence_absent",
+ AudioIngressMetadata::rejected_origin_status("incomplete_metadata", &missing_sequence)
+ );
assert_eq!(8, AudioIngressMetadata::ORIGIN_STATUSES.len());
}
--
Gitblit v1.9.3