Skip zero-duration floor opportunities

This commit is contained in:
Xin Wang
2026-09-16 02:32:16 +08:00
parent 89e685c830
commit 891222ddd2
2 changed files with 23 additions and 2 deletions
+2 -2
View File
@@ -173,8 +173,8 @@ def _candidate_region(
field="region_end_seconds",
uid=uid,
)
if end <= start:
raise ValueError(f"{uid}: opportunity region must have positive duration")
if end < start:
raise ValueError(f"{uid}: opportunity region ends before it starts")
return start, end
@@ -183,6 +183,27 @@ class OpportunityEventTests(unittest.TestCase):
1,
)
def test_zero_duration_mined_opportunity_is_skipped_not_fatal(self) -> None:
temporary, path = self.write_reviews([
reviewed_row(
"zero-gap",
family="entry",
verdict="HARD_NEGATIVE",
subtype="ENTRY_OTHER_TO_OTHER",
anchor=2.0,
region_start=2.0,
region_end=2.0,
candidate_source="OTHER_TO_OTHER",
)
])
self.addCleanup(temporary.cleanup)
events, diagnostics = load_opportunity_events([path], ["Session_4"])
self.assertEqual(events, [])
self.assertEqual(
diagnostics["skipped"]["entry_nonpositive_opportunity_duration"],
1,
)
def test_entry_score_uses_max_wearer_probability_before_resolution(self) -> None:
event = OpportunityEvent(
"entry", "Session_4", "entry", True, "WEARER_ENTRY", "WEARER_ONSET",