Make EasyCom event review wearer anchor first

This commit is contained in:
Xin Wang
2026-09-14 23:30:31 +08:00
parent 06b5e6c385
commit 65347dd75d
12 changed files with 336 additions and 107 deletions
+21 -3
View File
@@ -60,9 +60,12 @@ class EOTINTReviewCandidateTests(unittest.TestCase):
self.assertEqual(event.rule_candidate_type, "EOT_OPPORTUNITY_CANDIDATE")
self.assertEqual(event.anchor_type, "wearer_onset")
self.assertAlmostEqual(event.event_time, 1.2)
self.assertAlmostEqual(event.temporal_evidence["opportunity_anchor_seconds"], 1.0)
self.assertIsNone(event.temporal_evidence["opportunity_anchor_seconds"])
self.assertAlmostEqual(
event.temporal_evidence["opportunity_options"][0]["anchor_seconds"], 1.0
)
self.assertAlmostEqual(event.temporal_evidence["behavior_anchor_seconds"], 1.2)
self.assertAlmostEqual(event.temporal_evidence["response_delay_seconds"], 0.2)
self.assertAlmostEqual(event.temporal_evidence["minimum_response_delay_seconds"], 0.2)
self.assertAlmostEqual(event.temporal_evidence["wearer_speech_duration_after_onset_seconds"], 0.8)
def test_long_silence_does_not_cancel_eot_opportunity(self) -> None:
@@ -71,7 +74,22 @@ class EOTINTReviewCandidateTests(unittest.TestCase):
utterance("wearer", 2, 3.5, 4.5, "Delayed response."),
]
event = next(row for row in self.derive(rows) if row.candidate_source == "WEARER_ONSET")
self.assertAlmostEqual(event.temporal_evidence["response_delay_seconds"], 3.0)
self.assertAlmostEqual(event.temporal_evidence["maximum_response_delay_seconds"], 3.0)
def test_one_wearer_onset_has_one_row_with_constrained_release_options(self) -> None:
rows = [
utterance("other-4", 4, 0.0, 1.0, "Question one."),
utterance("other-3", 3, 0.2, 1.0, "Question two."),
utterance("wearer", 2, 1.4, 2.4, "Wearer answers."),
]
events = [
row for row in self.derive(rows)
if row.candidate_source == "WEARER_ONSET" and row.anchor_dense_seconds == 1.4
]
self.assertEqual(len(events), 1)
options = events[0].temporal_evidence["opportunity_options"]
self.assertEqual({option["uid"] for option in options}, {"other-4", "other-3"})
self.assertEqual(events[0].temporal_evidence["behavior_anchor_seconds"], 1.4)
def test_competing_other_onset_terminates_eot_opportunity(self) -> None:
rows = [